Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Die Oracle-Schnittstelle der Berliner 3D-Geodatenbank

Ähnliche Präsentationen


Präsentation zum Thema: "Die Oracle-Schnittstelle der Berliner 3D-Geodatenbank"—  Präsentation transkript:

1 Die Oracle-Schnittstelle der Berliner 3D-Geodatenbank
Claus Nagel, Alexandra Stadler, Gerhard König, Thomas H. Kolbe Technische Universität Berlin Institut für Geodäsie und Geoinformationstechnik Fachgebiet Methodik der Geoinformationstechnik 25. November 2008

2 Geodaten-Sammelstelle
Motivation Geodaten-Sammelstelle Zusammentragen, vergleichen, anpassen, fortführen und austauschen Daten beliebiger Herkunft Voraussetzung: Grundlegendes Datenmodell und Austauschformat für 3D-Stadtmodelle Einheitliche Strukturierung garantiert Verwendung von CityGML 25. November 2008

3 Oracle 10g R2 Systementscheidung Designentscheidung
Unterstützung von räumlichen Datentypen (2D-4D) Datenbankverbindung zu kommerziellen GIS Methoden zur effizienten Verwaltung von Rasterdaten Workspace Manager (Versions- und Historienmanagement) Designentscheidung Beschränkung auf Standard Datentypen von Oracle Spatial Abbildung des objektorientierten Datenmodells auf relationales Schema 24. Juli 2008

4 CityGML: Überblick Technisches Geschichtliches
Modelliert alle wesentlichen Bestandteile einer virtuellen Stadt in ihrer Semantik, Geometrie, Topologie und Erscheinung GML-Anwendungsschema, XML-basiert Datenmodell und Austauschformat für virtuelle 3D Stadtmodelle Geschichtliches Entwickelt in der SIG3D NRW unter Federführung von Prof. Thomas H. Kolbe (IGG TU Berlin) Dr. Gerhard Gröger (IGG Uni Bonn) Seit August 2008 internationaler Standard des Open Geospatial Consortium (OGC) 25. November 2008

5 CityGML: Auf dem Weg zum OGC-Standard
CityGML OGC Discussion Paper CityGML OGC Best Practices Paper CityGML (Proposal) OGC Request for Comments <<<<<<< Public Comment Phase >>>>>>> CityGML OGC Implementation Specification (after final OGC TC vote)  Internationaler Standard 24. Juli 2008

6 CityGML: thematische Gliederung in Objektklassen
<<Feature>> gml::_Feature ExternalReference - informationSystem: anyURI - externalReference: ExternalObjectReferenceType <<FeatureCollection>> CityModel <<Feature>> _CityObject * * <<Feature>> _Abstract Building <<Feature>> _Transportation Object <<Feature>> ReliefFeature <<Feature>> _WaterBody <<Feature>> _Vegetation LOD 0-4 GeometryProperty <<Geometry>> gml::_Geometry 25. November 2008

7 CityGML: Detailstufen in der Gebäudemodellierung
ab LOD4 ab LOD1 ab LOD2 ab LOD3 25. November 2008

8 CityGML: Kohärenz von Semantik und Geometrie
basierend auf ISO 19109 Geometrie basierend auf ISO 19107 8 25. November 2008

9 Eine 3D-Geodatenbank für Berlin
Auftraggeber Berliner Senatsverwaltung für Wirtschaft, Arbeit und Frauen Berlin Partner GmbH 1. Projektphase Institut für Geodäsie und Geoinformationstechnik – Uni Bonn Datenbank-Prototyp (Oracle 10g R2 Spatial) Basierend auf CityGML (Version 0.3.0) Gebäude bis LOD3, DGM 2. Projektphase Institut für Geodäsie und Geoinformationstechnik - TU Berlin Adaption auf aktuelle Version von CityGML (0.4.0) 99% Unterstützung von CityGML Gebäude inklusive Innenraummodellierung und Adressierung Weitere thematische Module: Appearance, Gewässer, Verkehrsnetz, … 25. November 2008

10 Funktionsumfang der 3D-Geodatenbank
von CityGML vererbte Eigenschaften Zusatz Flexible 3D-Geometrien Generische (prototypische) 3D-Objekte Gebäude bis LOD 3 Digitale Geländemodelle (DGM) Versions- management Verwaltung von DGMs und Luftbildern (WebServices) Referenzierung von externen Datenquellen (rekursive) Gruppierung von Objekten 1. Projektphase 2. Projektphase umfassende thematische Modellierung Oberflächen- daten Import und Export von CityGML-Files Gebäude inkl. Innenraum- modellierung (LOD 4) 25. November 2008

11 Entwicklungsablauf c a b CityGML
Entwicklung eines Import/Exporttools für CityGML-Instanzdokumente c CityGML Xsd Schema <xs:complexType name="CityModelType"> <xs:complexContent> <xs:extension UML Schema Java Bindung (JAXB) Schema-basierte Klassen public class CityModel { … } SQL Abfragen (Imp/Export Tool) Daten- import Daten- export Abbildung Klassen  Tabellen Oracle Datenbank SQL DDL Befehle (JDeveloper) Datenbank- Erzeugung Relationales Datenbankschema vereinfachtes UML Schema Schema- verein- fachung Vereinfachung des komplexen Datenmodells von CityGML a Ableitung des relationalen Datenbankschemas b 25. November 2008

12 Vereinfachung des Datenmodells von CityGML
Entwicklung eines Import/Exporttools für CityGML-Instanzdokumente c Java Bindung (JAXB) Schema-basierte Klassen public class CityModel { … } SQL Abfragen (Imp/Export Tool) Daten- import Daten- export Ableitung des relationalen Datenbankschemas b Abbildung Klassen  Tabellen Oracle Datenbank SQL DDL Befehle (JDeveloper) Datenbank- Erzeugung Relationales Datenbankschema CityGML Xsd Schema <xs:complexType name="CityModelType"> <xs:complexContent> <xs:extension UML Schema vereinfachtes UML Schema Schema- verein- fachung Vereinfachung des komplexen Datenmodells von CityGML a 25. November 2008

13 Vereinfachung des Datenmodells von CityGML
CityGML = umfangreiches Datenmodell mit Erweiterungsmechanismen Thematisches Modell deckt breites Spektrum an Anwendungsfeldern ab Komplexe Relationen innerhalb einzelner thematischer Module Vergleichbare Hierarchien auf Seite der Geometrie Analyse bisheriger Berlin DB ergab: Weniger komplexes Schema ist ausreichend!  Anpassung der CityGML-Möglichkeiten and die Projektbedürfnisse Vereinfachtes Datenmodell Optimaler Workflow Effiziente Prozessierung Abstimmung mit Projektpartner 3DGeo 25. November 2008

14 Auflistung durchgeführter Vereinfachungen
Multiplizitäten von Attributen 0..*  0..1 Kardinalitäten von Relationen n:m  1:n oder n:1 (und damit auch ihre Typen) Aggregation  Komposition Rekursionen parent-id und root-id Datentypanpassung codetype, color vector  String gml-Geometrie  SDO_GEOMETRY Projektspezifische Klassen und Orthophotos, Adressrepräsentation, Klassenattribute Metadaten 25. November 2008

15 Vereinfachte Abbildung der GML-Geometrieklassen
CityGML = GML3-Anwendungsschema  unterstützt eine Teilmenge der in GML3 spezifizierten Geometrieklassen (ebene Geometrien) 25. November 2008

16 Attribute der Klasse _BRepGeometry
+isSolid: 1… Geometrie ist geschlossen  bildet einen Solid 0… Geometrie ist nicht geschlossen  bildet eine Surface +isComposite: 1… Geometrie ist zusammenhängend  bildet einen Composite 0… beliebige Geometrieanordnung  bildet einen Multi +isTriangulated: 1… Geometrie ist trianguliert  bildet eine TriangulatedSurface … Geometrie ist nicht trianguliert  keine TriangulatedSurface Effizinte XLink-Behandlung erfordert zusätzlich: +isXLink: isXLink kennzeichnet aufeinander verweisende Geometrien beim Export entfällt Prüfung auf mehrfach vorkommende Geometrien  Performancesteigerung! +isReverse: Geometrie in DB immer im korrekten Drehsinn gespeichert  direkte Verarbeitung sichergestellt für Export von XLinks wird der Drehsinn aus dem Originalfile benötigt isReverse kennzeichnet den Drehsinn einer Geometrie im Originalfile 25. November 2008

17 Ableitung des relationalen Datenbankschemas
Entwicklung eines Import/Exporttools für CityGML-Instanzdokumente c Java Bindung (JAXB) Schema-basierte Klassen public class CityModel { … } SQL Abfragen (Imp/Export Tool) Daten- import Daten- export CityGML Xsd Schema <xs:complexType name="CityModelType"> <xs:complexContent> <xs:extension UML Schema Oracle Datenbank Vereinfachung des komplexen Datenmodells von CityGML Schema- verein- fachung a Datenbank- Erzeugung vereinfachtes UML Schema Abbildung Klassen  Tabellen Relationales Datenbankschema SQL DDL Befehle (JDeveloper) b Ableitung des relationalen Datenbankschemas 25. November 2008

18 Abbildung von Vererbungshierarchien
 Umsetzung der Geometrieklasse Ansätze zur Abbildung von Vererbungshierarchien 25. November 2008

19 Wie kommt Geometrie in die Datenbank?
<bldg:lod1Solid> <gml:Solid> <gml:exterior> <gml:CompositeSurface gml:id="lod1Surface"> <gml:surfaceMember> <gml:Polygon gml:id="Left1"> <gml:LinearRing gml:id="LeftRing1"> <gml:posList srsDimension="3"> </gml:posList> </gml:LinearRing> </gml:exterior> </gml:Polygon> </gml:surfaceMember> ... <gml:Polygon gml:id="Roof1"> <gml:LinearRing gml:id="RoofRing1"> <gml:posList srsDimension="3"> </gml:CompositeSurface> </gml:Solid> </bldg:lod1Solid> 7 4 5 6 3 Datenbank ? SURFACE_GEOMETRY ID GMLID PARENT _ID ROOT _ID IS_ SOLID IS_COM POSITE GEOMETRY 1 UUID_xyz 2 lod1Surface 3 Left1 LoD1 surface 3 4 Front1 LoD1 surface 4 5 Right1 LoD1 surface 5 6 Back1 LoD1 surface 6 7 Roof1 LoD1 surface 7 LOD1 building 25. November 2008

20 Wie werden Texturen zugeordnet?
<app:appearanceMember> <app:Appearance> <app:theme>Summer</app:theme> <app:surfaceDataMember> <app:ParameterizedTexture gml:id="roofTexture"> <app:imageURI>roof.png</app:imageURI> <app:wrapMode>wrap</app:wrapMode> <app:target uri="#Roof1"> <app:TexCoordList> <app:textureCoordinates ring="#RoofRing1"> </app:textureCoordinates> </app:TexCoordList> </app:target> </app:ParameterizedTexture> </app:surfaceDataMember> </app:Appearance> </app:appearanceMember> TEXTUREPARAM SURFACE_GEOMETRY_ID IS_TEXTURE _PARAME TRIZATION WORLD_TO_TEXTURE TEXTURE_ COORDINATES SURFACE _DATA_ID 7 1 - x roof.png 0,0 1,0 0,1 1,1 0,0,4 10,0,4 10,5,4 0,5,4 7 25. November 2008

21 25. November 2008

22 25. November 2008

23 Entwicklung eines Import/Exporttools
Entwicklung eines Import/Exporttools für CityGML-Instanzdokumente CityGML c Xsd Schema <xs:complexType name="CityModelType"> <xs:complexContent> <xs:extension Java Bindung (JAXB) Schema-basierte Klassen public class CityModel { … } SQL Abfragen (Imp/Export Tool) UML Schema Daten- export Daten- import Oracle Datenbank Vereinfachung des komplexen Datenmodells von CityGML a vereinfachtes UML Schema Schema- verein- fachung Ableitung des relationalen Datenbankschemas b Abbildung Klassen  Tabellen SQL DDL Befehle (JDeveloper) Datenbank- Erzeugung Relationales Datenbankschema 25. November 2008

24 Entwicklung eines Import/Exporttools: Überblick
Datenimport CityGML Eingabedatei ____ ____ ____ _____ CityGML lesen Features CityModel cityModel1 = new CityModel () ; … folgt Instanz von ___ ___ ___ Oracle Datenbank Datenbank -import angewendet citygml4j Import- Funktionalität statischer Kern der Software XSD Schema <xs:complexType name="CityModelType"> <xs:complexContent> … </xs:complexType> Java Bindung Schema-basierte Klassen public class CityModel { … } Export- Funktionalität CityGML Ausgabedatei ____ ____ ____ _____ CityGML schreiben folgt Features CityModel cityModel1 = new CityModel () ; … Datenbank -export angewendet Instanz von Datenexport 25. November 2008

25 Herausforderungen der CityGML/GML Verarbeitung
Unterstützung von Instanzdokumenten beliebiger Dateigröße GML bietet ein mächtiges, komplexes Datenmodell XML ist „geschwätzig” Dateigröße von Instanzdokumenten wächst schnell (1 Mio. LOD1 Gebäude benötigen ca. 7GB Speicherplatz) Effiziente und performante Verarbeitung beliebige Verschachtelungstiefe von CityGML/GML Objekten führt zu komplexen XML-Datenstrukturen  effiziente Verarbeitung? Nebenläufige Prozesse zur Erhöhung der Performance  Entkopplung? XLink-Verweise CityGML/GML: “Property”-Elemente können per XLink auf entfernte Objekte verweisen Vorwärts- und Rückwärtsverweise innerhalb einer Datei möglich Korrekte Abbildung in Datenbank erfordert Auflösung von XLinks 25. November 2008

26 Unterstützung beliebig großer CityGML-Dateien
Umsetzung eines zweistufigen Verfahrens Partielles Einlesen von XML-Dokumenten Datenstrombasiertes, ereignisorientiertes XML-Parsen Simple API for XML (SAX) Sequentielles Einlesen von XML-Elementen in den Hauptspeicher  keine Beschränkung der absoluten Dateigröße Problem: SAX-Ereignisse zustandslos  Kontext geht verloren, Rekonstruktion komplexer Datenstrukturen aufwendig Aufspaltung der CityGML Datei in kleinere Stücke („XML-Chunks“) Sinnvolle Teilung bspw. anhand von CityObject Instanzen <cityObjectMember> CityObject Instanz </cityObjectMember> Zwischenspeicherung der zugehörigen SAX-Ereignisse Hauptspeicherverbrauch bestimmt sich nach der Größe der XML-Chunks, nicht mehr nach der Dateigröße 25. November 2008

27 Unterstützung beliebig großer CityGML-Dateien
Umsetzung eines zweistufigen Verfahrens Bindung der XML-Chunks an Java-Klassen Objektorientierte Sicht auf XML-Daten Java Architecture for XML Binding (JAXB) Generierung einer Java-Klassenhierarchie aus einer XML-Schemainstanz Abbildung komplexer XML-Datenstrukturen auf Java-Objektbaum (Unmarshalling) und umgekehrt (Marshalling)  Effiziente Verarbeitung Problem: Überführung des gesamten Instanzdokuments in eine in-memory Repräsentation  Hauptspeicherbedarf bestimmt sich nach Dateigröße Schrittweise Bindung der einzelnen XML-Chunks XML-Chunks werden unabhängig voneinander in Objektbäume übersetzt Hauptspeicherverbrauch bestimmt sich nach der Größe der Teilbäume Freigabe von Hauptspeicher nach Verarbeitung eines XML-Chunks 25. November 2008

28 Performante Datenverarbeitung
Verarbeitung eines Instanzdokuments durch (quasi-)parallele, interagierende Prozesse (Threads) Nebenläufige Verarbeitung durch Entkoppelung anhand der einzelnen CityObject Instanzen (XML-Chunks) Parallelisierung abhängig von Anzahl an Prozessoren/Prozessorkernen Kontextwechsel  überhöhte Lebenszyklus- und Ressourcenverwaltung  Thrashing durch Mangel an Arbeitsspeicher Wiederverwendung von Threads durch Verwaltung in Thread-Pools Kombination von Thread-Pools zu komplexen Prozessketten Queue Thread Pool Worker 25. November 2008

29 Auflösung von XLink-Verweisen
Nebenläufige, partielle Verarbeitung von CityGML Dateien Verarbeitung beliebig großer Instanzdokumente Performante Verarbeitung durch (quasi-)parallele Prozesse Problem: Auflösung von XLink-Verweisen auf entfernte CityObject Instanzen wird komplexer Rückwärtsverweise  CityObject bereits verarbeitet: SQL-Abfrage in Datenbank? CityObject wird parallel verarbeitet: Interprozess-Kommunikation? Vorwärtsverweise CityObject noch nicht verarbeitet: ? Einstufige Strategie erfordert Repräsentation des kompletten Instanzdokuments im Hauptspeicher Implementierung einer zweistufigen Strategie 25. November 2008

30 XLink-Verweise: Zweistufige Strategie
Erste Stufe Speicherung von CityObject Instanzen in Datenbank ohne Berücksichtigung ihrer XLink-Verweise Zwischenspeicherung der XLink-Verweise in temporären Tabellen Quelle: Tabellenname + Primärschlüssel Ziel: GML-ID des referenzierten Elements Eventuell: Zusatzinformationen Effiziente Datenstruktur zur Abbildung “GML-ID  Tabellenname + Primärschlüssel” (im Hauptspeicher + Überlaufspeicher in Datenbank) Zweite Stufe: Post-Processing Abfrage der temporären XLink-Tabellen Auflösung des XLink-Ziels über Datenstruktur im Hauptspeicher Entsprechende Prozessierung des XLinks 25. November 2008

31 Datenimport – Schritt 1 ____ _____ ____ _____
___ ___ ___ _____ ____ ____ _____ SAX Parser Temporärer Buffer Buffer Queue TopLevel Feature Queue ____ _____ ____ _____ CityGML Eingabedatei Parser Thread (1 Instanz) Converter Thread (begrenzte Anzahl von Instanzen) Feature- erzeugung citygml4j 25. November 2008

32 Datenimport – Schritt 2 ___ ___ ___ _____ ____ ____ _____ TopLevel Feature Queue SQL Erzeugung commit SQL-Befehl Queues Geodaten Importfilter XLink Queue ___ ___ ___ Oracle Datenbank Importer Thread (begrenzte Anzahl von Instanzen) Datenbank- update ___ ___ ___ mit separater XLink Speicherung (temporär) commit XLinks XLink Thread (begrenzte Anzahl von Instanzen) XLink Information 25. November 2008

33 Datenimport – Schritt 3 XLink Splitter Thread (1 Instanz)
___ ___ ___ _____ ____ ____ _____ ___ ___ ___ Oracle Datenbank XLink Splitter XLink Resolver Queue SQL-Erzeugung XLinks commit SQL-Befehl Queue Datenbank- update Oracle Datenbank ___ ___ ___ mit aufgelösten XLinks XLink Splitter Thread (1 Instanz) XLink Resolver Thread (begrenzte Anzahl von Instanzen) ___ ___ ___ mit separater XLink Speicherung (temporär) 25. November 2008

34 Datenexport – Schritt 1 Splitter Thread (1 Instanz)
____ _____ ____ _____ ___ ___ ___ Exportfilter SQL TopLevel Feature ID Queue Splitter Thread (1 Instanz) ___ ___ ___ Oracle Datenbank Exporter Thread (begrenzte Anzahl von Instanzen) Datenbank- ausgabe SQL Feature / Geometrie Anfrage Feature 25. November 2008

35 Datenexport – Schritt 2 ____ _____ ____ _____ ___ ___ ___ citygml4j Temporärer Buffer Buffer Queue Exporter Thread (begrenzte Anzahl von Instanzen) ____ _____ ____ _____ CityGML Ausgabedatei CityGML schreiben IO Writer Thread (1 Instanz) Feature 25. November 2008

36 Performance-Messung…
Import Export Dataset File size Time Features / second No. of workers Geometry / Appearance / XLinks 1.1 mio LOD1 buildings 7,5 GB 1:15h 228 4 / 0 / 0 38min 455 10 2:25h 121 1 1:57h 150 LOD2 buildings fully textured 163 MB + 57 MB 25 min 7 / / 4.3min 42  w/o textures 163 MB 6.5 min 28 / 0 / 2min 91 Database server: 2 x Intel Xeon Dual 6GB RAM, SCSI Raid 5 Disk Array, Windows Server 2003 SP2, 100MBit LAN Client running the import/export tool: Intel Core2 CPU 2GB RAM, WindowsXP SP2, 100MBit LAN 25. November 2008

37 Charakteristika des Import/Exporttools
Volle Unterstützung von CityGML 1.0.0, 0.4.0, 0.3.1, 0.3.0 Unterstützung beliebig großer CityGML-Dateien (>4GB) Nebenläufigkeit der Datenverarbeitung durch Multithreading Hohe Performance auch auf Standard-Systemen 7GB Datei (>1mio LOD1-Gebäude)  Import: 75min, Export: 38min Unterstützung von XLinks Benutzerdefinierter Import und Export durch Filteroptionen GML ID, GML Name Blockweiser Import/Export zur Datenkachelung (mittels Bounding Boxes) Auswahl von Objektklassen 25. November 2008

38 Charakteristika des Import/Exporttools
Zwei Schnittstellen Graphische Benutzerschnittstelle (GUI) zur Benutzung durch Endanwender Kommandozeilen-Schnittstelle (CLI) zur einfachen Einbettung der Import/Export-Funktionalität in Drittanwendungen Basiert auf Open Source Bibliothek citygml4j des IGG CityGML Programmbibliothek für Java Ermöglicht das einfache Lesen, Verarbeitung und Schreiben von CityGML Instanzdokumenten 25. November 2008

39 Geplante Erweiterungen
Matchingfunktionalität Erkennung korrespondierender Objekte Verlinkung und Austausch von Informationen Entfernen redundanter Informationen Weiterführende Nutzung als Backend für Web Services Web Feature Services (WFS) können existierende Import- und Exportfunktionalität nutzen Alternative zur graphischen Benutzeroberfläche Erweiterung der Exportfunktionalität um standardisierte Formate KML etc. Performanceoptimierung Optimale Verteilung auf physischen Platten 25. November 2008

40 Verfügbarkeit Open Source Veröffentlichungen des IGG, TU Berlin 3D Geodatenbank Import/Exporttool citygml4j Verfügbar sind SQL-Skripte, Quellcode, ausführbare Binärdateien, Programmbibliotheken, Dokumentation, Tutorials, etc. Lizenz: GNU Lesser Public General License v3 (LGPL) Link: Heute!! 25. November 2008

41 Referenzen 3D city database (2007), [letzter Zugriff: ]. Döllner J, Kolbe TH, Liecke F, Sgouros T, Teichmann K (2006) The Virtual 3D City Model of Berlin - Managing, Integrating, and Communicating Complex Urban Information, In: Proceedings of the 25th Urban Data Management Symposium UDMS, Aalborg 2006. Emgård L, Zlatanova S (2007) Implementation alternatives for an integrated 3D Information Model, In: Advances in 3D Geoinformation Systems, Springer-Verlag, pp GNU Lesser General Public License, [letzter Zugriff: ]. Gröger G, Kolbe TH, Czerwinski A (2007), Candidate OpenGIS Implementation Specification (City Geography Markup Language), Version , OGC Doc. No , Open Geospatial Consortium 2007. Snowflake Software, GO Loader product page (2008), software.co.uk/products/goloader/index.htm [letzter Zugriff: ]. 25. November 2008

42 Fragen ? Claus Nagel Alexandra Stadler Gerhard König Thomas H. Kolbe
{ igg.tu-berlin.de Technische Universität Berlin Institut für Geodäsie und Geoinformationstechnik Fachgebiet Methodik der Geoinformationstechnik Straße des 17. Juni 135, Berlin 25. November 2008


Herunterladen ppt "Die Oracle-Schnittstelle der Berliner 3D-Geodatenbank"

Ähnliche Präsentationen


Google-Anzeigen