3D & Buildings
A footprint plus a height is not a building, but it is most of one.
Most 3D city work is 2.5D: polygons pushed up to a height, which is enough for shadows, volumes, solar potential and a web viewer, and not enough for anything that needs a real roof. These guides set out the data models and levels of detail, get heights from the sources that actually have them, extrude and measure buildings in Python, read and write CityJSON, compute shadows and sky view factor, and export a model a browser can draw — with the failures that make 3D so hard to debug: floating buildings, tiny coordinates, leaking meshes and a viewer showing black.
Start here
The cornerstone guide — the whole workflow end to end. Everything after it goes deeper into one part of it.
Step 1 3D spatial data models explained: 2.5D, meshes and solids 3d spatial data models Begin the path →The full path, in order
20 guides: the concepts underneath the work, then each task, then the errors that task produces. Work down, or jump to the step you need.
- Level of detail explained for 3D city models lod 3d city model 🧭 Concept
- CityJSON and CityGML explained cityjson citygml explained 🧭 Concept
- Where building heights come from, and how wrong they are building height data source 🧭 Concept
- 3D Tiles and the web delivery of 3D city models explained 3d tiles explained 🧭 Concept
- How to extrude building footprints into 3D in Python extrude building footprints python ⚙️ How-To
- How to read a CityJSON city model in Python read cityjson python ⚙️ How-To
- How to calculate building volumes and floor area in Python building volume python ⚙️ How-To
- How to classify roof shapes from LiDAR in Python roof shape classification lidar ⚙️ How-To
- How to compute building shadows for a given time in Python building shadow analysis python ⚙️ How-To
- How to estimate rooftop solar potential in Python rooftop solar potential python ⚙️ How-To
- How to compute sky view factor from a surface model sky view factor python ⚙️ How-To
- How to export a 3D city model to glTF in Python export gltf python gis ⚙️ How-To
- How to test whether a window can see a landmark 3d line of sight python ⚙️ How-To
- How to publish a 3D building layer to a web map 3d buildings web map maplibre ⚙️ How-To
- Extruded buildings float above or sink into the ground extruded buildings float terrain 🔧 Fix
- CityJSON coordinates come out tiny or at the origin cityjson coordinates wrong 🔧 Fix
- A building mesh is not watertight and its volume is wrong mesh not watertight volume 🔧 Fix
- Shadows point the wrong way or have the wrong length shadow wrong direction python 🔧 Fix
- A 3D viewer shows nothing or a black screen 3d viewer shows nothing 🔧 Fix
Topics this path covers
A path is a route; a topic is everything the site has on a subject. Open a topic to see the guides this path skips.