Web-basierte Visualisierung von 3D-Stadtmodellen Teil 2

[:en] [:de]vom 11.05.2018  |  3D-Stadtmodelle  |  GeoVisualisierung

Teil 2: Konvertierung von CityGML nach 3D Tiles

Im ersten Teil des Blogs wurde gezeigt, wie ein 3D-Stadtmodell im digitialen Globus Cesium visualisiert werden kann. Woher aber kommt der dazu benötigte 3D Tiles Szenengraph?

Visualisierung 3D-Gebäudemodell Wermelskirchen

Visualisierung 3D-Gebäudemodell Wermelskirchen. Datenquelle: GeoBasis NRW, 3D-Gebäudemodell LoD2, CC BY 3.0 DE

Ein 3D-Gebäudemodell LoD 2 steht als CityGML Datensatz von Wermelskirchen über das Open Data Portal NRW zur Verfügung und kann hier heruntergeladen werden. Für die Erstellung eines 3D Tiles Szenengraphen muss man den CityGML Datenbestand konvertieren. Dazu benötigt man eine Software, die das kann. Hier gibt es genug Auswahlmöglichkeiten:

  • FME untertsützt 3D Tiles seit der Version FME 2017.
  • Firmen wie virtualcitySYSTEMS aber auch Cesium bieten die Konvertierung von CityGML nach 3D Tiles als Service an bzw. ein solcher Konverter ist Teil der Produktpalette
  • Die GeoRocket Geodatenbank mit der ergänzenden GeoToolbox des Fraunhofer IGD beinhaltet einen CityGML nach 3D Tiles Konverter

Leider gibt es derzeit keine freie Software zum Download, mit der CityGML nach 3D Tiles konvertieren kann. In diesem Beispiel wird die GeoToolbox des Fraunhofer IGD verwendet.

Das CityGML Modell Wermelskirchen besteht aus zahlreichen einzelnen Dateien. Diese Dateien werden zunächst zu einer großen Datei wermelskirchen.gml zusammengefasst. Dies kann z.B. dadurch erfolgen, dass die einzelnen Datei in die 3D CityDB oder GeoRocket Datenbank importiert und dann das gesamte Gebiet in eine CityGML Datei exportiert wird.

Mit der Anweisung

geo-toolbox-3dtiles --in ".\in\wermelskirchen.gml" --out .\out\ --srsInCode 25832 --strategy quadTree --doubleSided true

wird das CityGML-Modell nach 3D Tiles konvertiert. Als Strategie für die Kachelung wird eine Quadtree-Struktur verwendet. Der EPSG code des Eingangsdatensatzes wird mit dem Parameter srsInCode festgelegt. Der Parameter doubleSided legt fest, ob ein Polygon von beiden Seiten (true) oder nur aus der Richtung entgegengesetzt der Flächennormale (false), also von außen sichtbar ist. Mit der Festlegung doubleSided true sind fehlerhaft orientiert Flächen nicht mehr sichtbar. Eventuelle Fehler in der Geometrie bleiben, aber man sieht sie halt nicht mehr.

Das Ergebnis ist die im ersten Teil des Blog beschriebene Dateistruktur von 3D Tiles. Diese muss noch auf einem Web-Server bereit gestellt werden, und fertig ist das 3D Modell im Web-Browser. Wenn man genau hinschaut, ist leider noch etwas zu tun. Wermelskirchen ist abgehoben und schwebt über dem Globus.  Das liegt daran, dass der Globus kein Geländemodell verwendet, die Bodenhöhe ist immer null. Die Gebäudegeometrie verwendet aber die Höhe über NN. Daher stehen die Gebäude in der Luft.

Wermelskirchen schwebt über dem Globus

Wermelskirchen schwebt über dem Globus. Datenquelle: GeoBasis NRW, 3D-Gebäudemodell LoD2, CC BY 3.0 DE

Was kann man tun, um die schwebenden Gebäude zu vermeiden? Entweder werden die Gebäudegrundrisse auf die Höhe z=0 verschoben oder es wird ein Geländemodell verwendet.

Um die Gebäude auf den Globus zu bringen, wird die Höhe des Grundrisspolygons ein Gebäudes von allen Koordinaten der jeweiligen Gebäudegeometrie subtrahiert. Der Grundriss ist dann bei z=0, ansonsten bleibt die Gebäudegeometrie gleich. Hierzu kann man die Softwarelösung clamp2ground von Athanasios Koukofikis, HFT Stuttgart, verwenden. Dazu muss das clamp2ground Archiv entpackt werden. Die CityGML-Datei wird in den Ordner clamp2ground\in\ kopiert. Danach wird die clamp2ground Software mit der gleichnamigen .bat bzw .sh Datei gestartet. Als Ergebnis liegt dann die transformierte CityGML-Datei im Ordner clamp2ground\out\. Wird die Ergebnisdatei nun wie ober beschrieben nach 3D Tiles konvertiert, liegen die Gebäude auf dem Globus.

Wermelskirchen auf den Cesium Globus projiziert

Wermelskirchen auf den Cesium Globus projiziert. Datenquelle: GeoBasis NRW, 3D-Gebäudemodell LoD2, CC BY 3.0 DE

Alternativ kann auch ein Geländemodell in den Cesium Globus eingebunden werden. Hierzu muss das JavaScript in der Datei Wermelskirchen.html (siehe ersten Teil des Blogs) erweitert werden. Mit der folgenden Anweisung wird Cesium mitgeteilt, dass ein 3D-Geländemodell für die Darstellung verwendet werden soll. Das Geländemodell wird standardmäßig vom Cesium World Terrain Server bereitgestellt.

    // terrain
    var terrainProvider = new Cesium.createWorldTerrain({      
        requestWaterMask : true, // required for water effects
        requestVertexNormals : true // required for terrain lighting
    });
    viewer.terrainProvider = terrainProvider;                      
    viewer.scene.globe.enableLighting = true; // set lighting to true

Leider passen Gebäude und Gelände nicht perfekt zusammen, was vermutlich an der Auflösung des Geländemodells liegt. Es können auch andere Geländemodelle eingebunden werden, wie im Cesium Tutorial beschrieben. Die Nutzung des Geländemodells, das von GeoBasis NRW als Open Data bereitgestellt wird, ist dazu eine schöne Übungsaufgabe. Viel Erfolg dabei.

Wermelskirchen Gebäudemodell mit Geländemodell

Wermelskirchen Gebäudemodell mit Geländemodell, Datenquelle: Geländemodell: Cesium World Terrain, Gebäudemodell GeoBasis NRW, 3D-Gebäudemodell LoD2, CC BY 3.0 DE

Verwendete Software im Überblick

Weiterführende Arbeiten

Copyright

Die im Blog bereitgestellten Texte und Bilder stehen unter der Lizenz CC BY 3.0 DE.