|
|
|
Dieses Kapitel beschäftigt sich mit verschiedenen Möglichkeiten, Gebäudemodelle in der CityGML Detailstufe LoD 1 zu erzeugen. Dabei liegt der Fokus auf der automatisierten Ableitung von LoD1-Modellen auf Basis vorhandener Grundrisse und Höheninformationen. Als Software wird dazu FME in der Version FME 2019 genutzt.
|
|
|
|
|
|
|
|
## Ableiten von LoD1-Modellen aus ALKIS-Daten
|
|
|
|
Ein CityGML Gebäudemodell in LoD1 lässt sich vollautomatisch aus vorhandenen Gebäudegrundrissen und Höheninformationen ableiten. Die Höheninformationen können dabei aus unterschiedlichen Datenquellen kommen. Hier lassen sich im Wesentlichen zwei Ansätze unterscheiden: Das Ableiten der Gebäudehöhe anhand von Attributen und das Messen der Gebäudehöhe.
|
|
|
|
|
|
|
|
### Ableiten der Gebäudehöhe aus Attributen
|
|
|
|
Die einfachste Möglichkeit besteht darin, für jedes Gebäude eine Standardhöhe zu verwenden. Allerdings ist dieser Ansatz natürlich auch sehr ungenau. Die Gebäudehöhe stimmt hier eher zufällig mit der realen Höhe überein. Eine genauere Gebäudehöhe erhält man, wenn zu den Grundrissen noch die Anzahl der Stockwerke vorhanden ist. Durch Festlegung einer Stockwerkhöhe lässt sich so auch eine Höhe des Gebäudes ermitteln. Die Stockwerkhöhe wird häufig in Abhängigkeit der Gebäudefunktion vergeben. Siehe hierzu die Empfehlung der SIG3D zur [Ableitung, Migration und Fortführung von 3D-Stadtmodellen aus ALKIS-Daten](https://www.sig3d.org/files/media/downloads/SIG3D/AG-Fortfuehrung/Stadtmodell_ALKIS_V2_1_1.pdf), Anhang A „Ermittlung von typisierten Geschoss- und Gebäudehöhen durch Auswertung der Gebäudefunktion, Geschosszahl und Baujahr“. [^1] Wenn vorhanden, kann natürlich auch die ALKIS-Objekthöhe oder eine auf andere Art ermittelte Gebäudehöhe (z.B. durch Airborne-Laserscanning oder Fotogrammetrie) zur Ableitung des LoD1-Modells genutzt werden.
|
|
|
|
|
|
|
|
[^1]: Arbeitsgruppe „ALKIS3D“ der SIG3D in Zusammenarbeit mit der Arbeitsgruppe "Fortführung 3D Stadtmodelle" des Städtetages und der SIG 3D: Ableitung, Migration und Fortführung von 3D Stadtmodellen aus ALKIS Daten, Version 2.1.1, online: https://www.sig3d.org/files/media/downloads/SIG3D/AG-Fortfuehrung/Stadtmodell_ALKIS_V2_1_1.pdf
|
|
|
|
|
|
|
|
<dl class="bildunterschrift">
|
|
|
|
<dt><img src="uploads/ff678d84cf1422dace864fb025567cdf/image.png" alt="Bildbeschreibung" title="Kap-LoD-1-Gebäudehöhen-ALKIS3D"></dt>
|
|
|
|
<dd> Abbildung LoD1.1: Festlegung einer typisierten Geschosshöhe und Standardhöhe (bei unbekannter Geschosszahl) zur Ableitung der Gebäudehöhe anhand der Gebäudefunktion.</dd>
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Ableiten der LoD1-Gebäudegeometrie mit FME
|
|
|
|
Für die Generierung der LoD 1 Gebäudegeometrie wird davon ausgegangen, dass die Daten bereits soweit aufbereitet sind, dass zu jedem Grundriss eine Gebäudehöhe vorliegt. In CityGML LoD 1 kann einem Grundriss nur ein Höhenwert zugeordnet werden, auch wenn das Gebäude beispielsweise ein Satteldach hat. Um das Gebäudevolumen möglichst gut zu erhalten, wird als Höhenwert die mittlere Höhe des Daches verwendet.
|
|
|
|
|
|
|
|
Zunächst muss das resultierende CityGML-Modell definiert werden. Die Gebäudegeometrie kann in LoD1 entweder als Solid- oder als Multisurface-Geometrie beschrieben werden. Da später das Gebäudevolumen berechnen werden soll, wird die Gebäudegeometrie als Solid festgelegt[^2].
|
|
|
|
|
|
|
|
[^2]: Da es sich bei LoD 1 Geometrien immer um Extrusionskörper mit einem geschlossenen Volumen handelt, fällt mir kein sinnvoller Anwendungsfall ein, warum man ein LoD 1 als MultiSurface Geometrie erstellen sollte. Das INSPIRE 3D-Gebäudemodell verlangt daher bei LoD 1 immer eine Solid Geometrie.
|
|
|
|
|
|
|
|
Zur Berechnung der 3D-Gebäudegeometrie wird zunächst nur der Gebäudeumring (in ALKIS AX_Gebäude) verwendet. Mit der FME Workbench lässt sich ein entsprechendes Modell automatisch erzeugen. In diesem Beispiel davon ausgegangen, dass die Grundrisse als Shapefile gegeben sind. Aus diesen Grundrissdaten wird mit Hilfe der FME Workbench ein LoD1-Modell generiert. Dazu werden folgende Teilschritte durchgeführt:
|
|
|
|
|
|
|
|
* Einlesen der 2D Gebäudegrundrisse (ESRI Shape Format)
|
|
|
|
* Extrusion der Grundrisse zu einem Blockmodell
|
|
|
|
* Setzen der CityGML-spezifischen Attribute und Eigenschaften
|
|
|
|
* Schreiben von CityGML
|
|
|
|
|
|
|
|
<dl class="bildunterschrift">
|
|
|
|
<dt><img src="uploads/0f678b41c2ebd90807f80d012d9e59f1/Kap-2-1-FME_data_inspector.png" alt="Bildbeschreibung" title="Kap-2-1-FME_data_inspector"></dt>
|
|
|
|
<dd>Abbildung LoD1.2: Testdatensatz im FME data inspector</dd>
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
Zunächst wird die FME Workbench mit einem leeren Workspace gestartet. Die Gebäudegrundrisse werden über einen Reader (<i> Readers-> Add Reader </i>) gelesen. Die Ableitung der 3D-Gebäudegeometrie erfolgt nun mit Hilfe sog. Transformer. Ein Transformer ist immer ein Block, in den Eingangsdaten hineingehen, diese bearbeitet werden und über Ausgangsdaten an andere Blöcke weitergeleitet. So miteinander verknüpfte Blöcke bilden einen Prozess. In der sog. Transformer-Gallerie finden sich alle Transformer, die in FME zur Verfügung stehen. Zur Schreibweise: Namen von Transformern werden in <b> Bold </b> geschrieben, Parameter und Verbindungen <i>italic</i>
|
|
|
|
|
|
|
|
<dl class="bildunterschrift">
|
|
|
|
<dt><img src="uploads/78a03d3c4562a20e1b2b1fdbf3078b5a/Kap-2-1-FME_workspace.png" alt="Bildbeschreibung" title="Kap-2-1-FME_workspace"></dt>
|
|
|
|
<dd>Abbildung LoD1.3: FME Workbench</dd>
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
Der Gebäudegrundriss kann mit den Transformer <b>Extruder</b> zu einer 3D Geometrie extrudiert werden. Dazu wird der Reader-Ausgang mit dem Eingang des <b>Extruders</b> verbunden. Nun muss dem <b>Extruder</b> noch mitgeteilt werden, auf welche Höhe die Grundrisse extrudiert werden sollen. Hierzu wird im Eigenschaftsdialog des <b>Extruders</b> das Attribut HEIGHT als Wert für den Parameter <i> Distance </i> gesetzt.
|
|
|
|
Um die erzeugten Daten anzuschauen, kann ein sog. <b>Inspector</b> (rechte Maustaste) in den Prozess eingefügt werden, der mit dem Ausgang <i> Extruded </i> des <b>Extruders</b> verbunden wird.
|
|
|
|
|
|
|
|
<dl class="bildunterschrift">
|
|
|
|
<dt><img src="uploads/9c7d3d419feffd7dcbbb3550c258d1ed/Kap-2-1-Workbench_Extruder.png" alt="Bildbeschreibung" title="Kap-2-1-FME_Extruder"></dt>
|
|
|
|
<dd>Abbildung LoD1.4: FME Workbench zur Extrusion der Gebäudegrundrisse</dd>
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
<dl class="bildunterschrift">
|
|
|
|
<dt><img src="uploads/34724b2eb724bef715371e6e32b29c34/Kap-2-1-Workbench_Extruder-Result.png" alt="Bildbeschreibung" title="Kap-2-1-FME_Extruder-Result"></dt>
|
|
|
|
<dd>Abbildung LoD1.5: resultierendes 3D-Modell in LoD 1</dd>
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
Das folgende Video zeigt die Erstellung der entsprechenden Workbench im Detail.
|
|
|
|
[![FME Workbench CityGML LoD 1 Teil 1](https://i.ytimg.com/vi/3_PgZi_MjaQ/hqdefault.jpg?sqp=-oaymwEZCPYBEIoBSFXyq4qpAwsIARUAAIhCGAFwAQ==&rs=AOn4CLC3xIh71TaXsVGzVsGXiE8i__PFvw)](https://www.youtube.com/watch?v=3_PgZi_MjaQ).
|
|
|
|
|
|
|
|
Die LoD1-Gebäudegeometrie ist nun vorhanden. Allerdings muss noch definiert werden, dass die Geometrie als Solid gespeichert werden soll. Dazu wird der Transformer <b>AttributCreator</b> in den Prozess eingefügt. Der Eingang des <b>AttributCreator</b> wird mit dem Ausgang des <b>Extruders</b> verbunden. Es muss ein neues Attribut mit dem Namen <i>citygml_lod_name</i> und dem konstanten Wert <i>lod1Solid</i> erzeugt werden. Dieses Attribut wird zu allen Features hinzugefügt, der Wert ist immer derselbe.
|
|
|
|
|
|
|
|
<dl class="bildunterschrift">
|
|
|
|
<dt><img src="uploads/c4da1510e597ac5984a7de2f69b54ec5/Kap-2-1-Workbench_AttributeCreator.png" alt="Bildbeschreibung" title="Kap-2-1-Workbench_AttributeCreator"></dt>
|
|
|
|
<dd>Abbildung LoD1.6: Mit dem AttributeCreator wird das Attribut citygml_lod_name hinzugefügt</dd>
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
Mit einem nachgeschalteten <b>GeometryPropertySetter</b> wird das eben hinzugefügte Attribut <i>citygml_lod_name</i> zu einer Geometrieeigenschaft. Damit wird die extrudierte 3D-Geometrie als <i>lod1Solid</i> gekennzeichnet. Im <b>GeometryPropertySetter</b> muss dazu als <i>source attribute</i> das Attribut <i>citygml_lod_name</i> ausgewählt werden.
|
|
|
|
|
|
|
|
<dl class="bildunterschrift">
|
|
|
|
<dt><img src="uploads/d9d46f1e0eb71905d6e309a70223e0d0/Kap-2-1-Workbench_GeometryPropertySetter.png" alt="Bildbeschreibung" title="Kap-2-1-Workbench_GeometryPropertySetter"></dt>
|
|
|
|
<dd>Abbildung LoD1.7: GeometryPropertySetter</dd>
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
Um das so erstellte 3D-Modell als CityGML-Document zu speichern steht unter <i>Writers -> Add Writer</i> ein entsprechender <b>Writer</b> zur Verfügung. Der Name der Ausgabedatei kann dabei beliebig gewählt werden. Es genügt, wenn beim Erstellen des <b>Writers</b> als <i>feature Type </i> <i>Building</i> ausgewählt wird. Dadurch werden die extrudierten Grundrisse als Building in CityGML gespeichert. Auch die CityGML Version kann als Parameter des <b>Writers</b> festgelegt werden.
|
|
|
|
[Dokumentation des CityGML Writers](https://docs.safe.com/fme/html/FME_Desktop_Documentation/FME_ReadersWriters/citygml/CITYGML_writer.htm)
|
|
|
|
|
|
|
|
Der <b>GeometryPropertySetter</b> wird mit dem <b>Writer</b> verbunden, um das CityGML Modell zu schreiben. Das Attribut <i>ID</i> wird mit dem <i>gml_id</i> von <i>Building></i> verbunden, damit im CityGML Dokument dieselben Ids für die Gebäude verwendet werden wie in den Eingangsdaten.
|
|
|
|
|
|
|
|
<dl class="bildunterschrift">
|
|
|
|
<dt><img src="uploads/f5f42caff2883c58be58fc4d762ce847/Kap-2-1-Workbench_shape2CityGML_LoD1.png" alt="Bildbeschreibung" title="Kap-2-1-Workbench_shape2CityGML_LoD1"></dt>
|
|
|
|
<dd> Abbildung LoD1.8: Workbench shape2CityGML_LoD1</dd>
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
In dem resultierenden CityGML Datensatz wird so für jeden Grundriss ein <i>cityObjectMember Building</i> mit entsprechender <i>gml:id</i> und einer <i>lod1Solid</i>-Geometrie erzeugt:
|
|
|
|
|
|
|
|
```
|
|
|
|
<cityObjectMember>
|
|
|
|
<bldg:Building gml:id="Building_ID_197">
|
|
|
|
<bldg:lod1Solid>
|
|
|
|
…
|
|
|
|
```
|
|
|
|
|
|
|
|
Im Detail auf Youtube:
|
|
|
|
|
|
|
|
[![FME Workbench CityGML LoD 1 Teil 2](https://i.ytimg.com/vi/gBAOQ7n4roE/hqdefault.jpg?sqp=-oaymwEZCPYBEIoBSFXyq4qpAwsIARUAAIhCGAFwAQ==&rs=AOn4CLBohoKLvoZeEv__MaxS_RmWzC52uQ)](https://www.youtube.com/watch?v=gBAOQ7n4roE).
|
|
|
|
|
|
|
|
<b>Speichern der Workbench nicht vergessen.</b>
|
|
|
|
|
|
|
|
Das erzeugte CityGML Dokument sollte immer auch validiert werden. Hierzu kann die an der HFT Stuttgart entwickelte Software CityDoctor genutzt werden. Ein Video Tutorial dazu gibt es bei YouTube:
|
|
|
|
[![Validierung mit CityDoctor](https://i.ytimg.com/vi/msfuDLokjWk/hqdefault.jpg?sqp=-oaymwEZCPYBEIoBSFXyq4qpAwsIARUAAIhCGAFwAQ==&rs=AOn4CLBYEEd6PXQ_GF6bSgY7k6EtN_a9ig)](https://www.youtube.com/watch?v=msfuDLokjWk).
|
|
|
|
|