... | @@ -11,11 +11,20 @@ Dazu wird die im Abschnitt [Gebäudemodell in LoD 1](Gebäudemodell Lod 1) defin |
... | @@ -11,11 +11,20 @@ Dazu wird die im Abschnitt [Gebäudemodell in LoD 1](Gebäudemodell Lod 1) defin |
|
Zunächst muss ein weiterer <b>Reader</b> zum Prozess hinzugefügt werden, um die EXCEL-Tabelle zu lesen.
|
|
Zunächst muss ein weiterer <b>Reader</b> zum Prozess hinzugefügt werden, um die EXCEL-Tabelle zu lesen.
|
|
Für die Verknüpfung von Objekten kann der Transformer <b>FeatureMerger</b> verwendet werden. Dabei sind die Sachdaten aus dem Excel-Dokument mit dem <i>Supplier </i> und die Gebäude aus der shp-Datei <i>Requestor</i>-Objekte. Im <b>FeatureMerger</b> werden die beiden Datensätze durch einen <i>join</i> bei gleicher Id verknüpft. Dies wird über die Parameter <i>Requestor-</i> und <i>Supplier Join Attribut</i> festgelegt.
|
|
Für die Verknüpfung von Objekten kann der Transformer <b>FeatureMerger</b> verwendet werden. Dabei sind die Sachdaten aus dem Excel-Dokument mit dem <i>Supplier </i> und die Gebäude aus der shp-Datei <i>Requestor</i>-Objekte. Im <b>FeatureMerger</b> werden die beiden Datensätze durch einen <i>join</i> bei gleicher Id verknüpft. Dies wird über die Parameter <i>Requestor-</i> und <i>Supplier Join Attribut</i> festgelegt.
|
|
|
|
|
|
![Kap-2-1-Workbench_FeatureMerger](uploads/3b34f76f76e1e88787901a8c9d0e328f/Kap-2-1-Workbench_FeatureMerger.png)
|
|
|
|
|
|
<dl class="bildunterschrift">
|
|
|
|
<dt><img src="uploads/689bbe89d5bb0904c8755fa68315cd62/Kap-2-1-Workbench_FeatureMerger.png" alt="Bildbeschreibung" title="Kap-2-1-Workbench_FeatureMerger"></dt>
|
|
|
|
<dd>Abbildung LoD1.8: Feature Merger</dd>
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
|
|
Um die so zugeordneten Attribute auch im CityGML-Modell einzufügen, werden die Attribute <i>Baujahr</i> und <i>Dachtyp</i> im <b>GeometryPropertySetter</b> auf die Attribute <i>citygml_year_of_construction</i> und <i>citygml_roof_type</i> im <b>Writer</b> abgebildet. Das Attribut <i>Funktion</i> muss etwas anders behandelt werden, dazu weiter unten mehr. Erst einmal soll das Ergebnis dbisher hierhin angeschaut werden. In dem resultierenden CityGML Datensatz werden zu jedem Grundriss entsprechende Sachdaten zugeordnet. Fehlen die Sachdaten, wird kein Building erzeugt. Diese Gebäude lassen sich ergänzen, in dem auch die <i>unmergedRequestor</i>-Objekte mit dem <b>Extruder</b> verbunden werden.
|
|
Um die so zugeordneten Attribute auch im CityGML-Modell einzufügen, werden die Attribute <i>Baujahr</i> und <i>Dachtyp</i> im <b>GeometryPropertySetter</b> auf die Attribute <i>citygml_year_of_construction</i> und <i>citygml_roof_type</i> im <b>Writer</b> abgebildet. Das Attribut <i>Funktion</i> muss etwas anders behandelt werden, dazu weiter unten mehr. Erst einmal soll das Ergebnis dbisher hierhin angeschaut werden. In dem resultierenden CityGML Datensatz werden zu jedem Grundriss entsprechende Sachdaten zugeordnet. Fehlen die Sachdaten, wird kein Building erzeugt. Diese Gebäude lassen sich ergänzen, in dem auch die <i>unmergedRequestor</i>-Objekte mit dem <b>Extruder</b> verbunden werden.
|
|
|
|
|
|
![image](uploads/7d3b2ddd544801be45f68ce99baada3c/image.png)
|
|
<dl class="bildunterschrift">
|
|
|
|
<dt><img src="uploads/3534124e1cdc78c2c8c5e4f7d199cf41/Kap-2-1-Workbench_shape2CityGML_LoD1_v2.png" alt="Bildbeschreibung" title="Kap-2-1-Workbench_shape2CityGML_LoD1_v2"></dt>
|
|
|
|
<dd>Abbildung LoD1.9: Workbench shape2CityGML LoD1 mit Attributen</dd>
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
|
|
Das resultierende CityGML Dokument hat dann folgende Struktur:
|
|
Das resultierende CityGML Dokument hat dann folgende Struktur:
|
|
|
|
|
... | @@ -30,11 +39,18 @@ Das resultierende CityGML Dokument hat dann folgende Struktur: |
... | @@ -30,11 +39,18 @@ Das resultierende CityGML Dokument hat dann folgende Struktur: |
|
## Attribut function ##
|
|
## Attribut function ##
|
|
Das Attribut <i>function</i> in CityGML ist im Gegensatz zu <i>roofType</i> und <i>yearOfConstruction</i> kein elementarer Typ, sondern ein Array, d.h. ein Gebäude kann in CItyGML mehrere Funktionen haben, die als Liste angegeben werden können. Deshalb lässt sich der einzelne Wert <i>Funktion</i> nicht auf diese Liste abbilden. Mit dem <b>AttributCopier</b> kann aber der Wert der <i>Funktion</i> als erstes Element in die Liste <i>function</i> kopiert werden. Dabei kann auch ein default-Wert angegeben werden, der verwendet wird, wenn für ein Gebäude keine Funktion angegeben ist.
|
|
Das Attribut <i>function</i> in CityGML ist im Gegensatz zu <i>roofType</i> und <i>yearOfConstruction</i> kein elementarer Typ, sondern ein Array, d.h. ein Gebäude kann in CItyGML mehrere Funktionen haben, die als Liste angegeben werden können. Deshalb lässt sich der einzelne Wert <i>Funktion</i> nicht auf diese Liste abbilden. Mit dem <b>AttributCopier</b> kann aber der Wert der <i>Funktion</i> als erstes Element in die Liste <i>function</i> kopiert werden. Dabei kann auch ein default-Wert angegeben werden, der verwendet wird, wenn für ein Gebäude keine Funktion angegeben ist.
|
|
|
|
|
|
![image](uploads/55ab2498e4a5f689965397a85c4e5d3b/image.png)
|
|
<dl class="bildunterschrift">
|
|
|
|
<dt><img src="uploads/e035aac1050efd3cfde95897b818176e/Kap-2-1-Workbench_AttributCopier.png" alt="Bildbeschreibung" title="Kap-2-1-Workbench_AttributCopier"></dt>
|
|
|
|
<dd>Abbildung LoD1.10: AttributCopier</dd>
|
|
|
|
</dl>
|
|
|
|
|
|
Der vollständige Workbench sieht nun wie folgt aus:
|
|
Der vollständige Workbench sieht nun wie folgt aus:
|
|
|
|
|
|
![image](uploads/04e79cb13fc0cc18d1a7cd28204edfdb/image.png)
|
|
<dl class="bildunterschrift">
|
|
|
|
<dt><img src="uploads/ff6107830b1bdc214a3d44e3c4ea936e/Kap-2-1-Workbench_shape2CityGML_LoD1_v3.png" alt="Bildbeschreibung" title="Kap-2-1-Workbench_shape2CityGML_LoD1_v3"></dt>
|
|
|
|
<dd>Abbildung LoD1.11: Workbench shape2CityGML LoD1 mit Attributlisten</dd>
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
|
|
## Addressen ##
|
|
## Addressen ##
|
|
Adressen sind in CityGML konform zum xAL address standard (OASIS 2003) spezifiziert[^2]. Dabei handelt es sich um ein generisches Schema für alle Arten internationaler Adressen.
|
|
Adressen sind in CityGML konform zum xAL address standard (OASIS 2003) spezifiziert[^2]. Dabei handelt es sich um ein generisches Schema für alle Arten internationaler Adressen.
|
... | @@ -42,11 +58,19 @@ Jedes Gebäude (<i>Building</i>) bzw. Gebäudeteil (<i>BuildingPart</i>) kann ei |
... | @@ -42,11 +58,19 @@ Jedes Gebäude (<i>Building</i>) bzw. Gebäudeteil (<i>BuildingPart</i>) kann ei |
|
|
|
|
|
[^2]: eXtensible Address Language, Namespace – urn:oasis:names:tc:ciq:xsdschema:xAl:2.0
|
|
[^2]: eXtensible Address Language, Namespace – urn:oasis:names:tc:ciq:xsdschema:xAl:2.0
|
|
|
|
|
|
![image](uploads/c096877447d0ab2d2df9f9fd94d16947/image.png)
|
|
<dl class="bildunterschrift">
|
|
|
|
<dt><img src="uploads/88d76ba0fab56a729fb012aeabd8d4bb/Kap-2-1-UML-Adressen.png" alt="Bildbeschreibung" title="Kap-2-1-UML-Adressen"></dt>
|
|
|
|
<dd>Abbildung LoD1.12: UML Diagramm Adressen</dd>
|
|
|
|
</dl>
|
|
|
|
|
|
Im Folgenden wird das Mapping von Adressen in den bisherigen FME-Prozess zur Generierung von LoD1 Gebäudemodellen integriert. In der EXCEL-Tabelle ist zu jedem Gebäude eine Adresse gegeben. Die Adresse wird dabei mit den Attributen Straße, Hausnummer, Postleitzahl und Ort beschrieben. Um diese Attribute in das xAL Schema für Adressen abzubilden, kann in FME ein sog <b>xml Templater </b> genutzt werden. Damit kann eine beliebige XML Struktur definiert und mit Attributen aus dem FME Workflow gefüllt werden.
|
|
Im Folgenden wird das Mapping von Adressen in den bisherigen FME-Prozess zur Generierung von LoD1 Gebäudemodellen integriert. In der EXCEL-Tabelle ist zu jedem Gebäude eine Adresse gegeben. Die Adresse wird dabei mit den Attributen Straße, Hausnummer, Postleitzahl und Ort beschrieben. Um diese Attribute in das xAL Schema für Adressen abzubilden, kann in FME ein sog <b>xml Templater </b> genutzt werden. Damit kann eine beliebige XML Struktur definiert und mit Attributen aus dem FME Workflow gefüllt werden.
|
|
|
|
|
|
![image](uploads/0ea31468404696602ce3c5a65c213fdb/image.png)
|
|
|
|
|
|
<dl class="bildunterschrift">
|
|
|
|
<dt><img src="uploads/238c31e8ba3c396404d264d696ca46d9/Kap-2-1-XML-Templater-Adressen.png" alt="Bildbeschreibung" title="Kap-2-1-XML-Templater-Adressen"></dt>
|
|
|
|
<dd>Abbildung LoD1.13: XML Templater Adressen</dd>
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
|
|
Das Template für die Adressen sieht wie folgt aus:
|
|
Das Template für die Adressen sieht wie folgt aus:
|
|
|
|
|
... | @@ -69,15 +93,30 @@ Das Template für die Adressen sieht wie folgt aus: |
... | @@ -69,15 +93,30 @@ Das Template für die Adressen sieht wie folgt aus: |
|
|
|
|
|
Um die Adresse mit dem CityGML <i>Building</i> zu verbinden, muss analog zum <i>citygml_lod_name</i> ein Attribut <i>citygml_feature_role</i> erzeugt werden. Dazu wird wieder ein <b> AttributCreator </b> verwendet. Das Attribut <i>citygml_feature_role</i> bekommt den Wert <i>address</i>.
|
|
Um die Adresse mit dem CityGML <i>Building</i> zu verbinden, muss analog zum <i>citygml_lod_name</i> ein Attribut <i>citygml_feature_role</i> erzeugt werden. Dazu wird wieder ein <b> AttributCreator </b> verwendet. Das Attribut <i>citygml_feature_role</i> bekommt den Wert <i>address</i>.
|
|
|
|
|
|
![image](uploads/3033e0783e15636a94fd69077377c2ec/image.png)
|
|
|
|
|
|
<dl class="bildunterschrift">
|
|
|
|
<dt><img src="uploads/66f20a0ec018162d883dc6ed95d7b524/Kap-2-1-Workbench_AttributeCreator-2.png" alt="Bildbeschreibung" title="Kap-2-1-Workbench_AttributeCreator-2"></dt>
|
|
|
|
<dd>Abbildung LoD1.14: Workbench AttributeCreator für Adressen </dd>
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
|
|
Die Adresse muss abschließend dem <i>Building</i> zugeordnet werden. Dazu muss ein neuer <b>CityGML Writer</b> erzeugt werden. Am besten vorher den bestehenden <b>Writer</b> löschen[^3]. Bei dem neuen <b>Writer</b> die Feature Typs <i>Building</i> und <i>Address</i> auswählen. Die Adresse wird über die <i>ID</i> mit der <i>citygml_parent_id</i> im <b>Writer</b> verknüpft.
|
|
Die Adresse muss abschließend dem <i>Building</i> zugeordnet werden. Dazu muss ein neuer <b>CityGML Writer</b> erzeugt werden. Am besten vorher den bestehenden <b>Writer</b> löschen[^3]. Bei dem neuen <b>Writer</b> die Feature Typs <i>Building</i> und <i>Address</i> auswählen. Die Adresse wird über die <i>ID</i> mit der <i>citygml_parent_id</i> im <b>Writer</b> verknüpft.
|
|
|
|
|
|
[^3]: Und auch die Ausgabedatei, falls diese schon vorhanden ist. Ansonsten nimmt der <b>Writer</b> nur Feature Types, die in diesem CityGML Dokument vorkommen.
|
|
[^3]: Und auch die Ausgabedatei, falls diese schon vorhanden ist. Ansonsten nimmt der <b>Writer</b> nur Feature Types, die in diesem CityGML Dokument vorkommen.
|
|
|
|
|
|
![image](uploads/6385d6d448ad1184133a8935cdbe345c/image.png)
|
|
<dl class="bildunterschrift">
|
|
|
|
<dt><img src="uploads/3f5877fe736105e66c6d7ee4a257f23a/Kap-2-1-Workbench_shape2CityGML_LoD1_v4.png" alt="Bildbeschreibung" title="Kap-2-1-Workbench_shape2CityGML_LoD1_v4"></dt>
|
|
|
|
<dd>Abbildung LoD1.15: Workbench shape2CityGML LoD1 mit Adressen</dd>
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
|
|
Das resultierende CityGML Dokument hat nun folgende Struktur:
|
|
Das resultierende CityGML Dokument hat nun folgende Struktur:
|
|
![image](uploads/148338c2b44ff08d24089a6c992d432d/image.png)
|
|
|
|
|
|
<dl class="bildunterschrift">
|
|
|
|
<dt><img src="uploads/2b99a1f689de70c19220d0f61f456b79/Kap-2-1-XML-Templater-Adressen_result.png" alt="Bildbeschreibung" title="Kap-2-1-XML-Templater-Adressen_result"></dt>
|
|
|
|
<dd>Abbildung LoD1.16: CityGML Gebäudemodell LoD1 mit Adressen</dd>
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
|
|
Ein umfangreicheres Beispiel zur Generierung von CityGML LoD 1 Gebäudemodellen mit Attributen, externen Codelisten und externen Referenzen findet sich als Beispiel auf dem Safe Hub: [CityGML LoD 1 Gebäude mit Attributen](https://hub.safe.com/templates/citygml-create-building-lod1-with-address-and-external-reference).
|
|
Ein umfangreicheres Beispiel zur Generierung von CityGML LoD 1 Gebäudemodellen mit Attributen, externen Codelisten und externen Referenzen findet sich als Beispiel auf dem Safe Hub: [CityGML LoD 1 Gebäude mit Attributen](https://hub.safe.com/templates/citygml-create-building-lod1-with-address-and-external-reference).
|
|
|
|
|