De 3D BAG is een open dataset met 3D-gebouwmodellen van heel Nederland, gemaakt door de TU Delft en 3DGI uit de BAG en de AHN. U haalt hem op als CityJSON, GeoPackage, 3D Tiles of via de 3DBAG API, zonder key. De licentie is CC BY 4.0, met een verplichte vermelding. Er zijn drie detailniveaus, LoD1.2, LoD1.3 en LoD2.2.

Laatst bijgewerkt:

Wat is de 3D BAG en wie maakt hem?

De 3D BAG combineert de gebouwcontouren uit de BAG met hoogtegegevens uit de AHN tot 3D-modellen. De TU Delft (3D geoinformation research group) en 3DGI maken en beheren de dataset. De documentatie noemt hem de eerste open 3D-gebouwdataset die volledig automatisch is gegenereerd en een heel land op dit detailniveau beslaat.

Eigenschappen van de 3D BAG (gelezen op 11 oktober 2026)
EigenschapWaarde
Beheerder3D geoinformation research group (TU Delft) en 3DGI
LicentieCC BY 4.0, met verplichte vermelding
BronnenBAG (contouren) en AHN (hoogtepunten)
Laatste release in de documentatie2025.09.03, uitgebracht op 9 september 2025
DetailniveausLoD1.2, LoD1.3, LoD2.2
Coördinaatstelsel APIAmersfoort / RD New + NAP-hoogte (EPSG:7415), het enige ondersteunde stelsel
APIhttps://api.3dbag.nl, CityJSONFeature-objecten
Tiles3D Tiles 1.1 per LoD, https://data.3dbag.nl/v20250903/cesium3dtiles/lod22/tileset.json

We require that you use the credit “© 3DBAG by tudelft3d and 3DGI”. In digital media you must also provide a link to this copyright page.

Bron: 3DBAG-documentatie, Copyright, gelezen op 11 oktober 2026. Bij een kaartviewer hoort de vermelding rechtsonder in de kaart. Meer over de licentievorm leest u bij open data-licenties.

Welk detailniveau kiest u, LoD1.2, LoD1.3 of LoD2.2?

Kies LoD1.2 voor eenvoudige volumeberekeningen, LoD1.3 als hoogteverschillen binnen één gebouw tellen, en LoD2.2 voor daken met hun werkelijke vorm. De documentatie legt het verschil tussen de eerste twee zo uit.

the distinction between LoD1.2 and LoD1.3 is that LoD1.3 distinguishes between significant height differences within one building, while in case of LoD1.2 the whole model has a uniform height.

Bron: 3DBAG-documentatie, General Concepts. Het onderscheid tussen LoD1 en LoD2 is daarnaast dat LoD2 oppervlakken labelt met hun functie, zoals dak, muur en grondvlak (semantic surfaces). Daarmee kunt u daken rood en muren grijs inkleuren, of dakoppervlak per dakvlak berekenen. De gebouwen zijn gemodelleerd als Solid, en de dataset valideert elk model met het programma val3dity.

De drie niveaus zitten in dezelfde CityJSON-tegel en dezelfde API-respons. U hoeft dus niet te kiezen bij het downloaden, alleen bij het weergeven of rekenen. Hoe 3D-gebouwdata in een digitale tweeling past, staat bij digital twin voor gemeenten.

Welke formaten en routes biedt de 3D BAG?

De 3D BAG komt als bestand per tegel, als geheel en via webservices. De keuze hangt af van wat u ermee doet.

Leveringsvormen van de 3D BAG volgens de documentatie
VormInhoud en gebruik
CityJSONAlle drie de LoD's per tegel, alleen de attributen die voor het hele gebouw gelden; opent in o.a. ninja, azul en QGIS
GeoPackagePer tegel en als één bestand voor heel Nederland, alle lagen
FlatGeobuf, Wavefront OBJ, IFCAanvullende bestandsformaten; IFC (versie 4.3, voor BIM-gebruikers; door 3DBAG zelf als experimenteel aangeduid) en 3D Tiles zijn nieuw sinds release 2025.09.03
3D Tiles 1.1Streaming in 3D-viewers; glTF met metadata per gebouw; coördinaten in EPSG:4978
WFS en WMSTweedimensionale lagen en een tegelindex
3DBAG APIEén gebouw op BAG-identificatie of alle gebouwen in een bbox, met 3D-geometrie en alle attributen

De documentatie meldt dat de 3DBAG API "currently not OGC-compliant" is, met de bedoeling later volledig aan OGC API Features te voldoen. Wat de standaard OGC API Features inhoudt, staat bij WFS en OGC API Features. De downloadlinks per tegel staan op de Downloads-pagina van 3dbag.nl.

Een gebouw ophalen met de 3DBAG API

De API werkt zonder key en stuurt Access-Control-Allow-Origin: * mee. U vraagt een gebouw op met de BAG-identificatie van het pand, voorafgegaan door NL.IMBAG.Pand.. Het voorbeeld hieronder is op 11 oktober 2026 met Node 24 gedraaid, voor een pand in de binnenstad van Amersfoort.

const id = 'NL.IMBAG.Pand.0307100000308303';
const res = await fetch(`https://api.3dbag.nl/collections/pand/items/${id}`);
if (!res.ok) throw new Error('3DBAG API gaf status ' + res.status);
const { feature, metadata } = await res.json();

const pand = feature.CityObjects[id];
const a = pand.attributes;
const hoogte = a.b3_h_dak_max - a.b3_h_maaiveld;

console.log(metadata.metadata.referenceSystem);
console.log('bouwjaar', a.oorspronkelijkbouwjaar, '- daktype', a.b3_dak_type);
console.log('hoogte (dakmax - maaiveld):', hoogte.toFixed(1), 'm');
console.log('volume LoD2.2:', a.b3_volume_lod22.toFixed(0), 'm3');
const deel = feature.CityObjects[id + '-0'];
console.log(deel.geometry.map((g) => g.type + ' LoD ' + g.lod).join(', '));

Uitvoer:

https://www.opengis.net/def/crs/EPSG/0/7415
bouwjaar 1986 - daktype slanted
hoogte (dakmax - maaiveld): 10.8 m
volume LoD2.2: 2252 m3
Solid LoD 1.2, Solid LoD 1.3, Solid LoD 2.2

De respons is een CityJSONFeature. Het gebouw (Building) draagt de attributen, het gebouwdeel (BuildingPart, id eindigt op -0) draagt de geometrie in drie LoD's. De hoogtes liggen in NAP. De coördinaten staan als gehele getallen in vertices; u rekent ze om met transform.scale en transform.translate uit de metadata. De berekende hoogte van 10,8 meter is het verschil tussen de hoogste dakhoogte en het maaiveld, niet een gepubliceerde bouwhoogte.

Gebouwen in een kaartvenster opvragen

Voor een venster gebruikt u bbox in RD. Het voorbeeld haalt de panden rond het station van Amersfoort op en berekent per gebouw de hoogte.

const url = 'https://api.3dbag.nl/collections/pand/items?bbox=154150,462680,154250,462760&limit=100';
const res = await fetch(url);
if (!res.ok) throw new Error('3DBAG API gaf status ' + res.status);
const { features, numberMatched } = await res.json();

// numberMatched telt CityObjects (gebouw + gebouwdeel), niet gebouwen
console.log(numberMatched, 'CityObjects,', features.length, 'gebouwen');
for (const f of features) {
  const a = f.CityObjects[f.id].attributes;
  const hoogte = a.b3_h_dak_max - a.b3_h_maaiveld;
  console.log(f.id.split('.').pop(), a.b3_dak_type, hoogte.toFixed(1) + ' m');
}
10 CityObjects, 5 gebouwen
0307100000308303 slanted 10.8 m
0307100000311531 slanted 12.2 m
0307100000338918 slanted 19.5 m
0307100000341963 slanted 25.5 m
0307100000347585 slanted 52.2 m

Let op de telling. numberMatched en limit tellen CityObjects, en elk gebouw heeft er twee. Met limit=4 kwamen twee gebouwen terug. Pagineren kan met offset; limit=4&offset=4 gaf de volgende twee gebouwen. Het venster bevat in de BGT zes actuele panden en hier vijf gebouwen.

Hoe laadt u de 3D BAG als 3D Tiles?

3D Tiles zijn voor streaming naar de browser. De 3D BAG levert de drie LoD's als aparte tilesets. Het LoD2.2-tileset staat op https://data.3dbag.nl/v20250903/cesium3dtiles/lod22/tileset.json. Op 11 oktober 2026 gaf dat bestand status 200 met Access-Control-Allow-Origin: * en de eigenschap asset.version met waarde 1.1.

De documentatie beschrijft de inhoud. De tegels gebruiken glTF-bestanden (.glb) met metadata per gebouw volgens de extensies EXT_mesh_features en EXT_structural_metadata, in EPSG:4978 en met uniforme kleur. De documentatie noemt een voorbeeld met CesiumJS. Dat voorbeeld vraagt een eigen Cesium ion-token. Bij gebruik is de vermelding verplicht. Het volume is niet gelimiteerd, maar de documentatie waarschuwt dat dit kan veranderen. Hang een productieviewer dus niet aan één extern pad zonder cache of eigen kopie.

Een eigen kaartviewer met 3D-gebouwen hoort bij GIS- en kaartoplossingen. Voor 2D-ondergrond zonder 3D gebruikt u de MapLibre-bibliotheek met vector tiles.

Welke valkuilen kent de 3D BAG?

  • Een onbekend pand geeft status 502. De API antwoordt op een niet-bestaande identificatie, en ook op het nieuwe pand uit 2024 bij het station van Amersfoort (0307100000595635), met 502 en een lege body, niet met 404. Vang dit expliciet op.
  • Nieuwe gebouwen ontbreken. De dataset loopt achter op de BAG. Het release-overzicht noemt bij 2025.09.03 een bekend probleem, 397.512 BAG-objecten zonder 3D-model, meestal door ontbrekende hoogtegegevens.
  • Documentatie en API noemen attributen anders. Het attributenoverzicht heeft b3_h_max en b3_h_50p. De API-respons heeft b3_h_dak_max en b3_h_dak_50p. De collectiemetadata meldt versie v2023.10.08, terwijl attributen als b3_h_nok uit een latere release komen. Welke release de API serveert, valt dus niet af te leiden uit de respons. Lees de velden uit de respons zelf.
  • Alleen EPSG:7415. De API ondersteunt geen WGS84. Reken coördinaten zelf om, bijvoorbeeld met de RD-naar-WGS84-tool of GDAL.
  • Dakhoogte is een berekening. De hoogtes volgen uit de AHN-puntenwolk en zijn een model, geen meting aan het gebouw. De dataset meldt de afwijking in b3_rmse_lod22 en een betrouwbaarheidsvlag in b3_kwaliteitsindicator.
  • Glazen daken en kassen. De documentatie noemt dat de AHN-puntenwolk bij glazen daken, vooral kassen, onbetrouwbaar is. Voor die gebouwen valt de dataset terug op een eenvoudig model.

Wanneer is de 3D BAG niet de goede bron?

De 3D BAG is een afgeleid model, geen landmeting. Voor een vergunning, een bouwhoogtecontrole of een claim over een bepaald dak is een meting of de bronhouder nodig. Voor de nauwkeurige ligging van de gevelrand gebruikt u de BGT, voor adressen de BAG. Voor maaiveld, bomen en terrein is de AHN de bron zelf.

De 3D BAG past goed in een kaart- of beleidstoepassing, zoals zonnepotentie, geluid of windhinder. Voor zo'n toepassing combineert u hem met eigen gegevens in een open data-platform. Voor andere bronnen zie de hub open data.

Veelgestelde vragen

Is de 3D BAG gratis te gebruiken, ook commercieel?

Ja. De 3D BAG staat onder CC BY 4.0. U mag de data kopiëren, verspreiden en bewerken, op voorwaarde dat u de vermelding "© 3DBAG by tudelft3d and 3DGI" opneemt, naar de licentie linkt en aangeeft of u wijzigingen hebt aangebracht. In digitale media hoort daar ook een link naar de copyrightpagina bij.

Wat is het verschil tussen de 3D BAG en de 3D Basisvoorziening van PDOK?

De 3D BAG komt van de TU Delft en 3DGI en gebruikt CC BY 4.0 met een verplichte vermelding. De 3D Basisvoorziening is een aparte PDOK-dataset met acht collecties hoogte-informatie, onder meer gebaseerd op BGT, BAG, luchtfoto's en AHN. Het is een andere dataset met een eigen structuur. Lees de bronvermelding per dataset voordat u ze combineert.

Kan ik de 3D BAG ook als gewone kaartlaag gebruiken?

Ja, als 2D. De 3D BAG biedt WFS en WMS met de tweedimensionale lagen en een tegelindex, en de documentatie noemt de lagen lod12, lod13, lod22 en tiles. Voor 3D-weergave in de browser gebruikt u de 3D Tiles of de API.

Hoe actueel is de 3D BAG?

De documentatie noemt als laatste release 2025.09.03. Nieuwere gebouwen ontbreken tot de volgende release. In onze test ontbrak een pand uit 2024 dat wel in de BAG staat. Voor actuele gebouwen gebruikt u de BAG zelf en voor 3D de dataset als benadering.

Bronnen

Meer over TechinFlow

Een nieuw bureau in Haarlem voor maatwerk software, GIS en dataplatforms op open standaarden.

023 230 21 42Neem contact op

Een vraag of opdracht?

Vertel kort wat er speelt en voor welke organisatie. We reageren per e-mail.

Stuur een bericht