In deze module gaan we aan de slag met het visualiseren van de 3D Tiles die we in de vorige module hebben gemaakt. We gaan de 3D Tiles inladen in een CesiumJS-webomgeving en de tileset stijlen aanpassen. Daarnaast voegen we 3D modellen toe aan de visualisatie.
We beginnen met het installeren van een webserver om de 3D Tiles te serveren. We gebruiken hiervoor Node.JS tool 'http-server'.
npm install -g http-server
Open de command line en navigeer naar werkdirectory. Start de server met het volgende commando:
http-server
Open een webbrowser en ga naar http://localhost:8080. Bestanden in de werkdirectory worden nu getoond.
Voor het inladen van de 3D Tiles in een CesiumJS-webomgeving, maken we gebruik van de Cesium Viewer.
Kopieer index.html naar de werkdirectory
Open index.html in een teksteditor. In de code worden 3 tilesets geladen:
-
DTB Vlakken: ./dtb_vlakken/tileset.json
-
DTB puntent: ./dtb_punten/tileset.json
-
Andijk panden: ./andijk_panden/tileset.json
Open een brower en ga naar http://localhost:8080/index.html. 3D Tiles worden nu getoond in de Cesium Viewer.
De Cesium viewer bevat een aantal kaartlagen:
-
PDOK BRT achtergrondkaart;
-
3D Basisvoorziening - Digitaal Terreinmodel (DTM)
https://api.pdok.nl/kadaster/3d-basisvoorziening/ogc/v1_0/collections/digitaalterreinmodel
Inspecteer de viewer op de DTB vlakken, bomen en panden. Welke attributen zijn er beschikbaar per laag?
We zien dat de DTB vlakken soms verdwijnen onder het terrein, dit is eventueel op te lossen door de vlakken iets te verhogen
var translation = new Cesium.Cartesian3(0, 0, 5);
var modelMatrix = Cesium.Matrix4.fromTranslation(translation);
tilesetDtbVlakken.modelMatrix = modelMatrix;
Styling kan worden toegepast op de tileset op twee manieren:
-
tijdens het genereren van de tileset
-
via de index.html file
In deze oefening wordt de styling toegepast via de index.html file.
Zie voor een beschrijving van de 3D Tiles Styling language https://github.com/CesiumGS/3d-tiles/tree/main/specification/Styling
Open index.html in een teksteditor. Voeg de volgende code toe aan de tileset van de DTB vlakken:
tilesetDtbVlakken.style = new Cesium.Cesium3DTileStyle({
color: {
conditions: [
["${feature['osmchr']} === 'Bitumen'", "color('#430719')"],
["${feature['omschr']} === 'Steen bekleding'", "color('#740320')"],
["${feature['omschr']} === 'Bomen en struiken'", "color('#008000')"],
["${feature['omschr']} === 'Industrieterrein'", "color('#FFFF00')"]
// todo: add more conditions
]
}
});
Bekijk het resultaat in de Cesium Viewer. De vlakken zijn nu gekleurd op basis van de omschrijving van de vlakken.
Experimenteer met de kleuren en voeg meer condities toe.
Naast 3D Tiles kunnen we ook losse 3D modellen toevoegen aan de visualisatie.
Kopieer het 3D model 'windturbine.glb' naar de werkdirectory.
Voeg de volgende code toe aan index.html en bekijk het resultaat in de browser:
const windturbine = viewer.entities.add({
position: Cesium.Cartesian3.fromDegrees(5.193486,52.754867),
model: {
uri: "windturbine.glb"
},
});
Er wordt een windturbine met animatie getoond in de Cesium Viewer.
In de 3D Basis voorziening van PDOK zijn een aantal landelijke 3D Tilesets beschikbaar die we kunnen inladen in de Cesium Viewer.
Zie https://api.pdok.nl/kadaster/3d-basisvoorziening/ogc/v1_0/collections/gebouwen voor een beschrijving van de 3D gebouwen tileset.
Voeg deze tileset toe aan de Cesium Viewer en inspecteer de gebouwen.
const tileset3DGebouwen = await Cesium.Cesium3DTileset.fromUrl(
"https://api.pdok.nl/kadaster/3d-basisvoorziening/ogc/v1_0/collections/gebouwen/3dtiles"
);
viewer.scene.primitives.add(tileset3DGebouwen);
In deze oefening gaan we de gemaakte 3D Tiles inladen in QGIS.
Open QGIS en ga naar de menu optie 'Layer' -> 'Data Source Manager' en selecteer 'Scene'.
Voeg de DTB vlakken toe via
- Zet 'Source Type' op 'Service'
Maak een nieuwe connectie aan via knop 'New' -> 'New Cesium 3D Tiles Connection'
Name: DTB Vlakken
URL: http://localhost:8080/dtb_vlakken/tileset.json
Klik op Add, DTB vlakken worden getoond in QGIS.
Vraag: Waarom zien we de gedefinieerde stylen niet in QGIS?
Extra opgave: Voeg de Andijk panden toe aan QGIS.
Voor het bekijken in 3D in QGIS, ga naar View -> 3D Map Views -> new 3D Map View
Als het goed is opent er een nieuw venster met de 3D Tiles.
Wat valt er op aan de 3D View in QGIS?