Data sources and limits¶
Sources¶
| Data | Source | Cache |
|---|---|---|
| Elevation | AWS Terrain Tiles | ~/.cache/satprint/tiles |
| Imagery (GLB texture) | Esri World Imagery | ~/.cache/satprint/imagery |
| Buildings and water | OpenFreeMap vector tiles, zoom 14, rebuilt from OSM about weekly | ~/.cache/satprint/vtiles |
| Buildings, fallback; roof shapes | Overpass API, 0.01° tiles | ~/.cache/satprint/osm |
| Buildings, optional | Overture Maps GeoParquet on S3, per release | ~/.cache/satprint/overture |
| Place search | Nominatim, one request per second | in memory |
None of them needs an API key. Every tile is cached on disk, so a second build of the same area downloads nothing.
Buildings¶
- A building with no
heightorbuilding:levelstag gets 8 m. - Where OSM maps a building as
building:partshapes, the parts replace its outline, so towers keep their setbacks. - Parts are extruded from the ground, ignoring
min_height, so nothing floats. - Roofs tagged
roof:shapedome, onion, cone or pyramidal get that shape. The roof height comes fromroof:height, thenroof:levelsat 3 m each, then the radius of the footprint, which makes a dome a hemisphere. Other shapes, such as gabled and hipped, are flat; at print scale a house roof is a fraction of a millimeter. - A shaped roof needs a footprint without holes that can see all its corners from its center, and must stand at least 0.3 mm tall in the model. Otherwise the building is flat at its full height.
- A shaped roof starts no lower than the flat roofs at least half its size that it overlaps, so a dome set into a taller wing does not sit in a pit.
- Smaller parts standing on a shaped roof, such as a lantern, cupola or statue on a dome, keep their place: the roof stops at the highest ring that still encloses them, and they stand in the hole that leaves. A part that would not reach that ring ends up inside the roof.
- Of two overlapping shaped roofs that are not standing on each other, the taller keeps its shape and the other is flat.
- The OpenFreeMap tiles carry no roof tags, so a small Overpass query fetches
the shaped buildings in the area and they replace their copies from the
tiles. If that query fails, the roofs are flat and the build reports
building_warning. - A few landmarks that roof tags cannot describe get exact shapes from
published dimensions, matched by their Wikidata ID or OSM ID
(
satprint/landmarks.py). So far: the Sphere in Las Vegas, a 157 m sphere cut by the ground at 112 m. - Overlapping footprints are merged first: each overlap takes the tallest height covering it, so the solids touch but never pass through each other.
- Buildings sink 0.3 mm into the terrain so they fuse with it when sliced.
- A building that crosses a vector-tile edge arrives as two solids that meet at the edge.
Overpass¶
Choose Overpass with "Building data" in the web app or
--building-source overpass on the CLI, for the latest OSM edits. The default
"auto" uses it only if OpenFreeMap fails. Its tiles download two at a time,
busy answers are retried with backoff, and a server that times out is skipped
for 10 minutes. When some tiles fail, the rest stay cached, so generating again
fetches only the missing ones.
Overture Maps¶
Choose Overture with "Building data" in the web app or
--building-source overture on the CLI. Overture
Maps merges OSM with Microsoft and Google building
footprints, so it finds buildings OSM lacks, and it keeps the OSM height and
roof tags. It needs the overture extra:
pip install "satprint[overture]" # or: poetry install --extras overture
The extra brings pyarrow, about 190 MB; the Docker image includes it. Overture's STAC index picks the GeoParquet files on S3 that cover the area, so a query takes a few seconds. Results are cached per Overture release. "auto" never picks Overture.
Imagery¶
The texture is at most 2048 px on its longer side. Esri's terms of use govern
the imagery. Set "texture": false to skip it.
Limits¶
- Source resolution is about 30 m (SRTM) over most land and about 10 m at zoom 14 where available, so areas smaller than about 2 km look blocky. Smoothing helps.
- Elevation and imagery downloads are capped at 64 tiles per request. Shrink the area or lower the resolution if you hit the cap.
- Buildings are limited to areas up to 40 km², and very small footprints are dropped.
- The multi-color split works one grid cell at a time, so a river narrower than a cell does not show.
- The GLB is for viewing. FDM slicers ignore textures, so print the STL or the 3MF.
- Built models live in memory, the last 32. A download link is valid until the server restarts.
Attribution¶
Terrain Tiles © Mapzen and AWS Open Data (SRTM, ASTER GDEM, GMTED2010, ETOPO1, NED, EU-DEM and others). Imagery © Esri, Maxar, Earthstar Geographics. Street map, buildings, water and search © OpenStreetMap contributors, under the ODbL. Overture buildings © Overture Maps Foundation and OpenStreetMap contributors, under the ODbL.