A collection of datasets from various Dutch institutions to demonstrate a Spatial Data Infrastructure built on Portolan.
All ~10.8 million buildings in the Netherlands as 3D models from the 3D BAG, produced by the 3D Geoinformation Research Group at TU Delft and 3DGI.
The 3D BAG enriches the official BAG building registry (maintained by Kadaster) with building heights, roof types, volumes, and surface areas derived from the AHN national LiDAR point cloud.
The source BAG footprints (without heights) are available in this catalog as Buildings (Panden) from Kadaster.
Provider: 3D Geoinformation Research Group, TU Delft License: CC BY 4.0 (attribution required) Source: https://3dbag.nl/ Documentation: https://docs.3dbag.nl/en/
Three files, two schemas:
Available as GeoParquet (3dbag-lod13.parquet, 747 MB, EPSG:7415) and
PMTiles (3dbag-lod13.pmtiles, 1.2 GB, EPSG:4326). Same data, different
formats. Buildings are split into parts where roof heights differ.
3dbag-pand.parquet (1.3 GB, EPSG:7415). One row per building with 62
attributes including volumes, surface areas, floor counts, and quality metrics.
Join to LOD 1.3 parts on identificatie.
Files are 747 MB and 1.3 GB. DuckDB streams via HTTP range requests.
For visualization:
height — building part height in meters (for 3D extrusion)base_height — base elevation for stepped building partsdak_type — roof type classificationFor analysis (join from 3dbag-pand.parquet on identificatie):
b3_volume_lod13 — building volume in m³b3_opp_grond — ground floor area in m²b3_bouwlagen — estimated floor countb3_opp_buitenmuur — exterior wall area in m²b3_opp_dak_plat / b3_opp_dak_schuin — flat/sloped roof areasBAG attributes (shared with Kadaster BAG):
identificatie — BAG building ID (the linking key)bouwjaar — construction yeargebruiksdoel — building usage functionstatus — building lifecycle statusThe height and base_height fields are pre-computed for direct use with
MapLibre GL / Mapbox GL fill-extrusion layers:
The base_height creates stepped rooflines — a church nave and bell tower
render at different heights even though they share one identificatie.
identificatie.ST_Transform(geom, 'EPSG:7415', 'EPSG:4326')height field in LOD 1.3 is relative to ground
(ready for extrusion). Absolute heights (NAP datum) are in 3dbag-pand.parquet
(b3_h_maaiveld, b3_h_nok).b3_kwaliteitsindicator in the pand file.gebruiksdoel is comma-separated (same as BAG).
Use LIKE '%woonfunctie%' for all residential.Hand-maintained agent guide (ported from this collection's llms.txt in August 2026). Update it alongside collection.json.
Pand in gebruikgebruiksdoel | string | Usage function (e.g. woonfunctie, kantoorfunctie). Comma-separated for mixed use. NULL = no dwelling units. |
oppervlakte_min | int64 | Minimum floor area (m²) of dwelling units. |
oppervlakte_max | int64 | Maximum floor area (m²) of dwelling units. |
aantal_verblijfsobjecten | int64 | Number of dwelling units. |