KMZ requirements
What SolarLayout needs in your KMZ boundary file to produce a clean layout.
A KMZ is a zipped KML file. SolarLayout reads the KML inside and looks for specific geometry to map onto plant components.
Required geometry
The minimum viable KMZ is a single <Polygon> representing the site
boundary. Everything else — plot subdivisions, ICR placement, exclusion
zones — is optional but informs the layout.
Site boundary
One outer polygon. Latitude / longitude in WGS84 (EPSG:4326). Self-intersection is rejected at parse time. Holes inside the outer ring are interpreted as exclusion zones.
Plot subdivisions
Optional. Inner polygons named Plot 1, Plot 2, ... are picked up as
distinct layout plots. SolarLayout fans out plot generation in parallel —
see Generate flow overview for the runtime.
Naming conventions
Names matter. The parser maps placemark names onto roles:
| Placemark name pattern | Role |
|---|---|
Boundary | Outer site polygon (required) |
Plot N | Per-plot subdivision |
ICR | Inverter Control Room footprint |
Exclusion N | Inner exclusion polygon |
Preparing a KMZ in Google Earth
- Open Google Earth Pro (desktop).
- Use the polygon tool to draw your boundary.
- Save the placemark with name
Boundary. - Optionally add
Plot 1,Plot 2, ... for subdivided sites. - File → Save → Save Place As… → choose
.kmz.
# Sanity-check the KMZ from a shell — it's a zip archive.
unzip -l my-site.kmz
# Should list one .kml inside.Troubleshooting
If SolarLayout rejects your KMZ with INVALID_GEOMETRY, your polygon
likely self-intersects. Re-trace the boundary in Google Earth — overlap
at the start/end point is the most common cause.
If you see MISSING_BOUNDARY, your placemark wasn't recognised as the
outer boundary. Check the name — Boundary (capital B) is the canonical
match; the parser also accepts boundary, Site Boundary, and Plot
(as a fallback for single-polygon KMZs).