Docstoc

Reprsentation von Geodaten mit GML

Document Sample
Reprsentation von Geodaten mit GML Powered By Docstoc
					    Institut für Kartographie und Geoinformation, Uni Bonn
    Lehrstuhl für Geoinformation, Prof. Dr. Plümer, Dr. Gröger, Dr. Kolbe




GIS III – Vorlesung 15


Geography Markup Language – Teil 1
 Geography Markup Language GML
• GML ist eine XML-Anwendung zum Transport und zur
  Speicherung von Geodaten.
• Spezifikation durch das Open Geospatial Consortium
• Version 3.0 am 29. Januar 2003 verabschiedet
   – Spezifikationen abrufbar unter: http://www.opengis.org
   – Rückwärtskompatibilität: GML2-Instanzdokumente sind
     gültige GML3-Instanzdokumente; Schemata müssen (leicht)
     angepasst werden
• Gemeinsame Weiterentwicklung durch OGC & ISO:
  GML 3.1 wird ISO-Standard 19136
• Normbasierte Austauschschnittstelle (NAS) von
  ALKIS verwendet GML3
              T. H. Kolbe: Geography Markup Language – Teil 1   2
 Open Geospatial Consortium
• Internationales Standardisierungsgremium
   – Zusammenschluss von Systemherstellern, Datenlieferanten,
     Nutzern und Wissenschaftlern
   – Non-profit, aber Mitgliedschaft ist beitragspflichtig
• 1994 gegründet (bis 09/2004: OpenGIS Consortium)
• Ziel: Entwicklung von Industriestandards für GIS
   – Offene Standards, d.h. frei für Jedermann nutzbar
   – Spezifikationen kostenlos von Homepage herunterladbar
• Bekannteste Standards: GML, Web Map Service,
  Web Feature Service
• seit 1998 offizielle Zusammenarbeit mit ISO TC 211

              T. H. Kolbe: Geography Markup Language – Teil 1   3
 Entwurfsziele von GML3

• Offenes, herstellerneutrales Rahmenkonzept zur
  Definition raumbezogener Anwendungsmodelle
• Transport und Speicherung von Schemata und
  Datensätzen
• Unterstützung bei der Bildung von Fachschemata
• Ermöglichung von verteilten raumbezogenen
  Anwendungsschemata und Datensätzen
• Möglichkeit der Profilbildung (Teilmengen von GML3)
   Interoperabilität für komplexe Geodaten

             T. H. Kolbe: Geography Markup Language – Teil 1   4
 Überblick über GML3

• Objektorientierte Modellierungsmöglichkeiten
   – Generalisierungen/Spezialisierungen & Aggregationen
• Einfache und komplexe Geometrien
   –   1D: Geraden, Splines, Kreisbögen
   –   2D: planare Flächen, komplexe Interpolationsmethoden
   –   3D: Volumina als Boundary Representation
   –   Zusammengesetzte Geometrien
• Topologie (mit und ohne Geometriebindung)
• Koordinaten- und Zeitbezugssysteme
• Coverages (Raster, TINs, Punktraster, Landkarten)
               T. H. Kolbe: Geography Markup Language – Teil 1   5
 Unterschiede zu anderen Datenformaten
• Objektorientiert; erlaubt semantische Modellierung
   – im Gegensatz zu rein geometrischen Modellen (wie CAD-
     Formaten oder VRML) oder Geometrietyp-orientierten GIS-
     Modellen (z.B. Shapefiles):
    Objektbildung (mit ID)
    räumliche und nichträumliche Eigenschaften
    Spezialisierungshierarchien (Taxonomien) abbildbar
    Bestandteilshierarchien
    Assoziationen / Relationen zu anderen Objekten

• Gemischte Verwendung unterschiedlicher räumlicher
  Bezugssysteme
• XML-basiert
              T. H. Kolbe: Geography Markup Language – Teil 1   6
  Bezüge zu anderen Standards / Normen

                                   OGC Abstract
                                   Specifications
      ISO 19107                                                          W3C
    Spatial Schema                                                  XML, SMIL, SVG



   ISO 19108                                                             ISO 19115
Temporal Schema                        GML3                               Metadata



      ISO 19109                                                       ISO 19123
 Application Schemas                                                  Coverages
                                     ISO 19118
                                      Encoding
                                                                                  (Auszug)
                  T. H. Kolbe: Geography Markup Language – Teil 1                            7
Anwendungsmodellierung in GML3
• GML3 ist ein Meta-Format zur Spezifikation von
  Austauschformaten für Geoinformationen
   – GML3-Spezifikation gibt durch abstrakte Elemente und Typen nur
     den Modellierungsrahmen vor
   – große Auswahl direkt verwendbarer Geometrie- und
     Topologieelemente enthalten

• Das konkrete Austauschformat ergibt sich erst durch
  Definition anwendungsspezifischer Typen und Elemente
   – Ableitung von den abstrakten GML3-Typen bzw. –Elementen
     durch Erweiterung oder Restriktion

• Verschiedene Anwendungen haben jeweils eigene, und
  damit unterschiedliche Anwendungsschemata
              T. H. Kolbe: Geography Markup Language – Teil 1         8
 Anwendungsmodell definiert...
• jeden konkreten, anwendungsspezifischen
  GML-Typ bzw. -Element

Dies sind in der Regel
• Geoobjektarten mit ihren Eigenschaften (Features)
   – z. B. Straße, Fluss, Flurstück, Stadt, Point-of-Interest etc.
• Mengen von Geoobjekten (FeatureCollections)
   – z. B. Katasterauszug, Stadtmodell, alle Flüsse etc.
• Feldbasierte Raummodelle (Coverages)
   – z.B. rasterbasierte Digitale Geländemodelle (DGM)
• Beobachtungen und Messwerte (Observations)
• Begriffsbibliotheken (Dictionaries)
               T. H. Kolbe: Geography Markup Language – Teil 1       9
 Wesentliche Komponenten von GML

• Feature (Merkmal), steht für ein Realweltobjekt
   – Eigenschaften werden als Properties bezeichnet
      • Differenzierung in raumbezogene und
        nicht-raumbezogene Eigenschaften
      • raumbezogene Eigenschaften werden durch Geometrie- oder
        Topologie-Objekte modelliert

• Feature Collection (Menge von Features)
• Geometry (Geometrie-Objekte)
   – z.B. Punkte, Linien, Polygone, TINs, Volumina
• Topology (Topologie-Objekte)
   – z.B. Nodes, Edges, Faces

             T. H. Kolbe: Geography Markup Language – Teil 1      10
   Zusammenspiel der GML-Komponenten

FeatureCollection                    *        Feature                       *    Geometry
                             feature                                  geometry
                             Member nicht-                            Property
                                         geometrische E.


 • Feature ist die zentrale (abstrakte) Klasse
 • Modellierung nichtgeometrischer Eigenschaften von Features:
     – durch Attribute mit Standarddatentypen wie z.B. String, Integer,...
     – durch Assoziationen von Feature zu anderen Klassen
 • Geometry ist die (abstr.) Oberklasse aller Geometrie-Objekte
 • Geometrische Eigenschaften von Features werden durch die
   Assoziation geometryProperty mit Geometrie-Objekten modelliert
 • Die Bestandteile einer Feature Collection sind über die Assoziation
   featureMember erreichbar
                    T. H. Kolbe: Geography Markup Language – Teil 1                         11
   Beispiel für eine GML-Modellierung


 Geometrie     *                                    Feature
               geometry                                                        abstrakt
               Property

                                                             Realweltobjekte werden
          Es sind für alle Geometrie-                        als Unterklasse der Klasse
          Klassen eigene geometrische                        Feature modelliert
          Eigenschaften definiert


 LineString
               curve
                                    Strasse                          Stadt      konkret
              Property           name:string

Spezifische geome-
trische Eigenschaft:                       nichtgeometrische
linienhafte Geometrie                      Eigenschaft
                 T. H. Kolbe: Geography Markup Language – Teil 1                          12
       Aufbau von GML: GML-Objekte
                                                  _Object



                      _GML                             „Ein GML-Objekt ist ein
             (from gmlBase)                            Objekt mit Identität“
   + description [0..1] : StringOrRef
                                             +metadataProperty
   + name [0..*] : Code                                              MetadataPropertyChoice
                                                             0..n
   + id [0..1] : ID




                                                    +dictionaryEntry
          _Feature                    Definition                           Dictionary   _Metadata
                                                     0..n
+ fid [0..1] : CharacterString       + id : ID                                          + id [0..1] : ID



                             T. H. Kolbe: Geography Markup Language – Teil 1                               13
   XML Schema für GML-Objekte
<element name="_GML" type="gml:AbstractGMLType" abstract="true"
         substitutionGroup="gml:_Object"/>
 <complexType name="AbstractGMLType" abstract="true">                Entwurfsmuster in
  <sequence>                                                         GML3: globales
   <element ref="gml:metaDataProperty" minOccurs="0"                 Element (dient
              maxOccurs="unbounded"/>
   <element ref="gml:description" minOccurs="0"/>                    oftmals als Kopf
   <element ref="gml:name" minOccurs="0"                             einer substitution-
               maxOccurs="unbounded"/>                               Group) + ent-
  </sequence>
  <attribute ref="gml:id" use="optional"/>                           sprechender
                                                                     sprechendem
 </complexType>                                                      globalen Datentyp
                                                                     globaler Typ

 • Abstraktes Element gml:_GML ist Wurzelelement
   jedes GML3-Instanzdokuments (Datendatei)
 • Standardeigenschaften: Name, Beschreibung und
   Metadaten
      – modelliert als Kindelemente von gml:_GML
                   T. H. Kolbe: Geography Markup Language – Teil 1                         14
 Repräsentation von Eigenschaften

• Eigenschaften (Properties) in GML3 ausschließlich
  durch Kindelemente eines GML-Objekts repräsentiert
   – Kindelement definiert den Datentyp der Eigenschaft
   – keine Verwendung von XML-Attributen zur Repräsentation von
     Objekteigenschaften

• Eigenschaftstyp darf nicht von gml:AbstractGMLType
  abgeleitet sein
   – kein GML-Objekt ist direktes Kindelement eines anderen GML-
     Objekts
   – Kein XML-Element kann gleichzeitig GML-Objekt und GML-
     Eigenschaft sein


              T. H. Kolbe: Geography Markup Language – Teil 1      15
 Eigenschaftswerte: by value / by reference

Eigenschaftswerte können auf 2 Arten angegeben werden:
• By value
    – Eigenschaftswerte sind als Kindelement eingebettet („inline“)
<gml:location>
 <gml:Point gml:id="punkt0815" srsName="epsg:4326">
  <gml:coordinates>5.5623,33.2323</gml:coordinates>
 </gml:Point>
</gml:location>


• By reference
    – Das Eigenschaftselement ist leer und verweist stattdessen auf
      ein anderes Objekt (XML-Element mit ID)

<gml:location xlink:href="http://meine.webseite.de/locations/punkt0815" />


                  T. H. Kolbe: Geography Markup Language – Teil 1            16
 XML-Kodierung von GML-Features (I)

• XML-Kodierung von Features ist in der Schema-Datei
  feature.xsd zusammengefasst
• Features werden durch Elemente repräsentiert
   – Es gibt ein vordefiniertes abstraktes Element _Feature vom Typ
     AbstractFeatureType
      • darf selber nicht in Instanzdokumenten vorkommen
       für Features müssen eigene Elementnamen vergeben werden

   – Elementtyp muss vom (abstrakten) Typ AbstractFeatureType
     direkt oder indirekt abgeleitet werden
   – Für das Element muss explizit spezifiziert werden, dass es
     stellvertretend für das Element _Feature verwendet wird
      • mittels Substitution Group (siehe folgendes Beispiel)


              T. H. Kolbe: Geography Markup Language – Teil 1         17
                                                 GML-Objekt _Feature erbt
     XML-Kodierung von GML-Features (II)         von _GML Eigenschaften
                                                 • description
                                                 • name
   Definition von _Feature in der                • id
                                                 und definiert die Eig.
   Schema-Datei feature.xsd:                     • boundedBy
                                                 • location
<element name="_Feature" type="gml:AbstractFeatureType" abstract="true"
         substitutionGroup= "gml:_GML" />

<complexType name="AbstractFeatureType" abstract="true">
 <complexContent>
  <extension base="gml:AbstractGMLType">
    <sequence>
      <element ref="gml:boundedBy" minOccurs="0"/>
      <element ref="gml:location" minOccurs="0"/>
      <!-- additional properties must be specified in an application schema -->
    </sequence>
    <attribute name="fid" type="string"/> . . . </attribute>
  </extension>
 </complexContent>
</complexType>
                  Rückwärtskompatibilität
                  zu GML2: ID-Attribut fid

                   T. H. Kolbe: Geography Markup Language – Teil 1            18
 Feature-Eigenschaft boundedBy
• mit der gml:boundedBy-Property kann für jedes Feature
  ein umgebendes Rechteck (Bounding Box) bzw.
  Volumen angegeben werden
 <element name="boundedBy" type="gml:BoundingShapeType"/>
 <complexType name="BoundingShapeType">
  <sequence>
   <group ref="gml:boundingShape"/>
  </sequence>
 </complexType>

 <group name="boundingShape">
  <choice>                                                Envelope ist ein
   <element ref="gml:Envelope"/>                          GML-Geometrieobjekt
   <element ref="gml:Null"/>
  </choice>
 </group>

                T. H. Kolbe: Geography Markup Language – Teil 1                 19
 Feature-Eigenschaft location
• mit der gml:location-Property kann für jedes Feature die
  Lagegeometrie oder ein Ortsname angegeben werden
 <element name="location" type="gml:LocationPropertyType"
          substitutionGroup="gml:_property"/>
 <complexType name="LocationPropertyType">
  <sequence >
   <group ref="gml:locator" minOccurs="0"/>
  </sequence>
  <attributeGroup ref="gml:AssociationAttributeGroup"/>
 </complexType>

  <group name="locator">
   <choice>
    <element ref="gml:_Geometry"/>
    <element ref="gml:LocationString"/>
    <element ref="gml:LocationKeyWord"/>
   </choice>
  </group>

                  T. H. Kolbe: Geography Markup Language – Teil 1   20
 XML-Kodierung von GML-Features (III)

• Features dürfen beliebig viele nichtgeometrische
  Eigenschaften besitzen
   – Jede Eigenschaft wird in einem eigenen Element
     eingeschlossen

• Features dürfen beliebig viele geometrische
  Eigenschaften besitzen
   – Jede geometrische Eigenschaft wird in einem eigenen
     Element eingeschlossen
   – Das Element bezeichnet den Datentyp bzw. die Rolle
     des Geometrie-Objekts (z.B. surfaceProperty)
   – Kindelement des „Geometrie-Eigenschaftselements“ ist
     ein Geometrie-Objekt (z.B. Point, Line, Polygon usw.)
             T. H. Kolbe: Geography Markup Language – Teil 1   21
     Beispiel zur XML-Kodierung
<Haus>
  <Nummer>134</Nummer>
  <Besitzer>Jupp Zupp</Besitzer>
  <Strasse>Meckenheimer Allee</Strasse>
  <gml:extentOf>
    <gml:Polygon>
       ...
    </gml:Polygon>
  </gml:extentOf>
</Haus>
<element name=“Haus" type=“Bsp:HausTyp“ substitutionGroup="gml:_Feature"/>

<complexType name=“HausTyp">
  <complexContent>
    <extension base="gml:AbstractFeatureType">
      <sequence>
        <element name=“Nummer" type=“positiveInteger"/>
        <element name=“Besitzer" type=“string“/>
        <element name=“Strasse" type=“string "/>
        <element ref=“gml:extentOf"/>
      </sequence>                              surfaceProperty, die
    </extension>
  </complexContent>
                                               als Kindelement ein
</complexType>                                    Polygon besitzt
                   T. H. Kolbe: Geography Markup Language – Teil 1           22
 Feature Eigenschaften

• Features können auch Eigenschaften besitzen, die
  selber Features sind

• Abbildung von Assoziationen / Aggregationen
    – 1:1-Beziehung über referenziertes Feature
    – 1:n-Beziehung über FeatureCollection mit referenzierten Features

 <element name="featureMember" type="gml:FeaturePropertyType"/>
 <element name="featureProperty" type="gml:FeaturePropertyType"/>
 <complexType name="FeaturePropertyType">
  <sequence>
   <element ref="gml:_Feature" minOccurs="0"/>
  </sequence>
  <attributeGroup ref="gml:AssociationAttributeGroup"/>
 </complexType>


                  T. H. Kolbe: Geography Markup Language – Teil 1    23
  FeatureCollection
Eine FeatureCollection
• ist eine Sammlung von Features

• kann null oder mehr FeatureMembers besitzen
   – featureMember ist ein Property von FeatureCollection
   – featureMembers ist ein ArrayProperty von FeatureCollection

• ist selber ein Feature (FeatureCollection von
  FeatureCollection ist möglich; auch rekursiv)
   – eine FeatureCollection kann eigene räumliche und nichträumliche
     Eigenschaften besitzen


               T. H. Kolbe: Geography Markup Language – Teil 1         24
  XML Schema von FeatureCollection
<complexType name="AbstractFeatureCollectionType" abstract="true">
 <complexContent>
  <extension base="gml:BoundedFeatureType">
    <sequence>
     <element ref="gml:featureMember" minOccurs="0" maxOccurs="unbounded"/>
     <element ref="gml:featureMembers" minOccurs="0"/>
    </sequence>
  </extension>
 </complexContent>
</complexType>


<element name="FeatureCollection" type="gml:FeatureCollectionType"
         substitutionGroup="gml:_Feature"/>
<complexType name="FeatureCollectionType">
 <complexContent>
  <extension base="gml:AbstractFeatureCollectionType"/>
 </complexContent>
</complexType>


                 T. H. Kolbe: Geography Markup Language – Teil 1              25
 Eine konkrete FeatureCollection

• Ableitung vom Typ gml:AbstractFeatureCollectionType
• Ersatz für das abstrakte Element <gml:_Feature>
• einzelne Features werden durch <featureMember> in die
  FeatureCollection eingebunden:

   <Stadtmodell gml:id=“sm1456">

     <gml:featureMember>
       <Haus gml:id=“H567">....</Haus>
     </gml:featureMember>

     <gml:featureMember>
       <Strasse gml:id=“Str812">....</Strasse>
     </gml:featureMember>

   </Stadtmodell>

• Mitglieder müssen nicht die selbe Klasse haben
               T. H. Kolbe: Geography Markup Language – Teil 1   26
      Beispiel für konkrete FeatureCollection
<element name=“Stadtmodell" type=“Bsp:StadtmodellTyp"
         substitutionGroup="gml:_Feature"/>
<element name=“Haus" type="Bsp:HausTyp" substitutionGroup="gml:_Feature"/>
<element name=“Strasse" type="Bsp:StrassenTyp" substitutionGroup="gml:_Feature"/>
<complexType name="StadtmodellTyp">
  <complexContent>
    <extension base="gml:AbstractFeatureCollectionType">
      <sequence>...</sequence>
    </extension>
  </complexContent>
</complexType>
<complexType name="HausTyp">
  <complexContent>
    <extension base="gml:AbstractFeatureType">
      <sequence>....</sequence>
    </extension>
  </complexContent>
</complexType>
<complexType name="StrassenTyp">
  <complexContent>
    <extension base="gml:AbstractFeatureType">
      <sequence>.....</sequence>
    </extension>
  </complexContent>
</complexType>

                     T. H. Kolbe: Geography Markup Language – Teil 1            27
Modellierung der Geometrie




       T. H. Kolbe: Geography Markup Language – Teil 1   28
       Modellierung der Geometrie
                                                                       _GML
                                                                  (from gmlBase)
                                                      + description [0. .1 ] : CharacterString
                                                      + name [0. .*] : CharacterString
                                                      + i d [0 ..1] : ID


   _CoordinateReferenceSystem            +srsName                   _Geometry
                                          0..1            + gid [0..1] : CharacterString
(from CoordinateReferenceSystems)




   _GeometricPrimitive               GeometricComplex                        _GeometricAggregate


                      T. H. Kolbe: Geography Markup Language – Teil 1                              29
 Basiskonzepte des Geometriemodells
• Primitive
   – einfache, kontinuierliche geometrische Objekte
• Komplexe (GeometricComplex)
   – Menge geometrisch disjunkter Primitive
• Zusammengesetzte Geometrien (Composites)
   – spezielle Art von Komplexen: homogene Komposition von Primitiven und
     Composites derselben Dimension
   – isomorph zu Primitiven der entsprechenden Dimension
   – zusammenhängend
   – einzelne Primitive besitzen gemeinsame Teilgeometrien (Primitive
     niedriger Dimension, z.B. bei zwei benachbarten Flächen die Grenzlinie)
• Aggregate
   – Sammlungen einzelner Geometrieelemente, die nicht miteinander
     verbunden sein müssen; Überlappungen sind erlaubt !

               T. H. Kolbe: Geography Markup Language – Teil 1                 30
  Hierarchie der Geometrietypen
     _Geometry                      srsName
                                          0..1      _CoordinateReferenceSystem
+gid [0..1]: String




_GeometricPrimitive             GeometricComplex                   _GeometricAggregate




   Point              _Curve                _Surface                 _Solid

0D               1D                       2D                       3D
                 T. H. Kolbe: Geography Markup Language – Teil 1                         31
 Coordinate Reference System (CRS)
• zu den Geometriedaten muss das räuml. Bezugssystem
  (Coordinate Reference System) benannt werden, in dem die
  Koordinaten vorliegen
• bei zusammengesetzten Geometrien reicht es, wenn das
  Bezugssystem bei der Angabe des umschließenden Rechtecks
  (Bounding Box bzw. Envelope) benannt ist
• Benennung erfolgt u.a. auf Basis der Klassifikation geodätischer
  Bezugssysteme der European Petrol Survey Group EPSG
  (www.epsg.org),
    – Beispiel: EPSG:4326 entspricht WGS84
• Verwendung in GML durch Angabe einer URI, diese kann in
  beliebigen Geometrie-Elementen als Attribut angegeben werden:

<Polygon srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">


               T. H. Kolbe: Geography Markup Language – Teil 1       32
     Repräsentation von Koordinaten (I)
     1. Coordinates Element: Liste von Koordinaten
         Die syntaktische Vorschrift zur Trennung der Dezimalstellen, der
         x und y Werte und der Koordinatenpaare wird durch die
         Attribute festgelegt.

  <element name="coordinates" type="gml:CoordinatesType"/>
  Trennung Vor-/
Nachkommastelle (.)
  <complexType name="CoordinatesType">
    <simpleContent>                 coordinate separator (,)
      <extension base="string">
        <attribute name="decimal" type="string" use="default" value="."/>
        <attribute name="cs" type="string" use="default" value=","/>
        <attribute name="ts" type="string" use="default" value="&#x20;"/>
      </extension>
    </simpleContent>
  </complexType>           tuple separator ( )
<Point srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
  <coordinates> 49.11,24.12 </coordinates>
</Point>


                   T. H. Kolbe: Geography Markup Language – Teil 1          33
     Repräsentation von Koordinaten (II)
     2. Pos Element: Liste von Koordinaten (n-dimensional)


  <element name="pos" type="gml:DirectPositionType" />

  <complexType name="DirectPositionType">
    <simpleContent>
      <extension base="gml:doubleList">
        <attribute name="srsName" type="anyURI" use="optional"/>
        <attribute name="dimension" type="positiveInteger" use="optional"/>
      </extension>
    </simplecontent>
  </complexType>




<Point srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
  <pos dimension="2">5.0 40.0</pos>
</Point>


                    T. H. Kolbe: Geography Markup Language – Teil 1           34
Envelope Element (I)
Das Envelope Element dient zur Modellierung räumlicher
Ausdehnung. Es besteht aus zwei Koordinatentupeln, die die
diagonal gegenüber liegenden Eckpunkte beschreiben.

<element name="Envelope" type="gml:EnvelopeType"/>

<complexType name="EnvelopeType">
  <complexContent>
    <extension base="gml:AbstractGeometryType">
      <sequence>
        <choice>
          <element ref="gml:coord" minOccurs="2" maxOccurs="2"/>
          <element ref="gml:pos" minOccurs="2" maxOccurs="2"/>
          <element ref="gml:coordinates"/>
        </choice>
      </sequence>
    </extension>
  </complexContent>
</complexType>


              T. H. Kolbe: Geography Markup Language – Teil 1      35
 Envelope Element (II)
 Das Envelope Element dient zur Modellierung räumlicher
 Ausdehnung. Es besteht aus zwei Koordinatentupeln, die die
 diagonal gegenüber liegenden Eckpunkte beschreiben.
 Typische Verwendung: Angabe einer Bounding Box
                                                                30.0,100.0


         Beispiel:


                                  0.0,0.0
<Envelope srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
  <coordinates> 0.0,0.0 30.0,100.0 </coordinates>
</Envelope>


              T. H. Kolbe: Geography Markup Language – Teil 1                36
    Point Geometry Element
    Ein Point Element besteht aus einem Koordinatentupel.
<element name="Point" type="gml:PointType" substitutionGroup="gml:_Geometry"/>

<complexType name="PointType">
  <complexContent>
    <extension base="gml:AbstractGeometryType">
      <sequence>
        <choice>
          <element ref="gml:pos"/>
          <element ref="gml:coordinates"/>
          <element ref="gml:coord"/>
        </choice>
      </sequence>
    </extension>
  </complexContent>
</complexType>

Beispiel:
<Point srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
  <pos>56.1 13.1</pos>
</Point>

                   T. H. Kolbe: Geography Markup Language – Teil 1               37
     LineString Geometry Element
     LineString: Folge von Punkten, durch
     gerade Liniensegmente verbunden
  <element name="LineString" type="gml:LineStringType"
                             substitutionGroup="gml:_Curve"/>
  <complexType name="LineStringType">
    <complexContent>
      <extension base="gml:AbstractCurveType">
        <sequence>
          <choice>
            <choice minOccurs="2" maxOccurs="unbounded">
              <element ref="gml:pos" />
              <element ref="gml:coord" />
              <element ref="gml:pointRep" />
            </choice>
            <element ref="gml:coordinates"/>
          </choice>
        </sequence>
      </extension>
    </complexContent>
<LineString srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
  </complexType>
  <coordinates>100.0,100.0 230.0,80.0 350.0,130.0 </coordinates>
</LineString>                                                         Beispiel
                   T. H. Kolbe: Geography Markup Language – Teil 1               38
   Polygon Geometry Element

            _Surface




            Polygon

+exterior                +interior
0..1                     0..n                                            exterior
             _Ring



         LinearRing
  +position [4..n]: Position                                           interior
                     T. H. Kolbe: Geography Markup Language – Teil 1                39
    Polygon Geometry Element - Beispiel
<Polygon srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
 <exterior>
  <LinearRing gml:id="Außen1">
   <coordinates>
      0.0,0.0 100.0,0.0 100.0,100.0 0.0,100.0 0.0,0.0
   </coordinates>
  </LinearRing>
 </exterior>
 <interior>
  <LinearRing gml:id="Innen1">
   <coordinates>
      60.0,60.0 60.0,90.0 90.0,90.0
      90.0,60.0 60.0,60.0
   </coordinates>
  </LinearRing>
 </interior>
</Polygon>




                 T. H. Kolbe: Geography Markup Language – Teil 1   40
 Zusammenfassung
• GML3 ist der derzeit umfassendste Standard zur
  Repräsentation von Geodaten
   – 0D-, 1D-, 2D- und 3D-Geometrien; Topologie; Zeit
   – Coverages; Observations; Relationen zwischen Geoobjekten

• GML3 spezifiziert ein Meta-Format
• GML3-Format A  GML3-Format B
   – Kompatibel nur dann, wenn Anwendungsschema gleich
   – NAS ist das gemeinsame Anwendungsschema für ALKIS

• Wermutstropfen:
   – Hohe Komplexität, auch bzgl. Einarbeitung
   – Dateien werden durch XML-Overhead sehr groß

             T. H. Kolbe: Geography Markup Language – Teil 1    41
Beispiel: Ein einfaches 2D-Stadtmodell

                               Meckenheimer Allee



                                        Gemarkung Euskirchen
  Gemarkung Euskirchen                  Flur 14
  Flur 14                               Flurstück 7
  Flurstück 5                           Eigentümer
  Eigentümer Leo Land                   Stadt Euskirchen




          T. H. Kolbe: Geography Markup Language – Teil 1      42
       UML-Diagramm für das 2D-Stadtmodell
                                                                        surfaceProperty 1
                                          *     Flurstück                                     Polygon
                     feature
                     Member
      Stadtmodell
                                                                              1
                            *     Strasse                                             LineString
                                                           curveProperty
                                  strname:
                                   string

                                                             GeometryProperty




AbstractFeatureCollection
                                feature
                                          *   AbstractFeature
                                                                        geometry
                                                                                  *    AbstractGeometry
                                Member                                  Property


                      T. H. Kolbe: Geography Markup Language – Teil 1                                     43
  2D-Stadtmodell Anwendungsschema (1)
Kopf der Schema-Datei
1. Schema-Element mit Angabe des Namensraums, für den das
   Schema definiert wird
2. Deklaration aller referenzierten Namensräume (hier:
   XML-Schema, XLink, GML und der des Anwendungsschemas)
3. Import der benötigten Schemadefinitionen
   (hier: Basisschema feature.xsd von GML3; lädt weitere nach)
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://www.beispiel.net/beispiel"
        xmlns="http://www.w3.org/2001/XMLSchema"
        xmlns:gml="http://www.opengis.net/gml"
        xmlns:xlink="http://www.w3.org/1999/xlink"
        xmlns:bsp="http://www.beispiel.net/beispiel">
  <import namespace="http://www.opengis.net/gml"
          schemaLocation="feature.xsd"/>
  ...
</schema>

               T. H. Kolbe: Geography Markup Language – Teil 1   44
  2D-Stadtmodell Anwendungsschema (2)
Deklaration des Wurzelements
•  Erstes <element> in der XML-Schema-Datei definiert das
   Wurzelelement für die GML-Instanzdokumente (Datendateien)
•  Deklaration des Elements Stadtmodell; dieses kann überall
   verwendet werden, wo GML ein Feature erwartet
•  Definition des Typs StadtmodellType als Unterklasse der
   abstrakten GML-Klasse AbstractFeatureCollectionType
...
<element name="Stadtmodell" type="bsp:StadtmodellType"
         substitutionGroup="gml:_Feature"/>

<complexType name="StadtmodellType">
  <complexContent>
    <extension base="gml:AbstractFeatureCollectionType"/>
  </complexContent>
</complexType>
...

               T. H. Kolbe: Geography Markup Language – Teil 1   45
  2D-Stadtmodell Anwendungsschema (3)
Repräsentation der Features (1)
•   Deklaration des Elements Flurstueck; dieses kann überall
    verwendet werden, wo GML ein Feature erwartet
•   Definition des Typs FlurstueckType als Unterklasse der
    abstrakten GML-Klasse AbstractFeatureType
                                                     Attribute werden
<element name="Flurstueck" type="bsp:FlurstueckType"
         substitutionGroup="gml:_Feature"/>          durch
<complexType name="FlurstueckType">                  Kindelemente mit
  <complexContent>                                   einfachen Daten-
    <extension base="gml:AbstractFeatureType">
      <sequence>                                     typen realisiert
        <element name="Gemarkung" type="string"/>
        <element name="Flur" type="integer"/>
        <element name="Eigentuemer" type="string"/> Repräsentation der
        <element ref="gml:surfaceProperty"/>        Ausdehnung hier
      </sequence>
    </extension>                                    über vordefinierte
  </complexContent>                                 GML-Geometrie-
</complexType>                                      Eigenschaft
               T. H. Kolbe: Geography Markup Language – Teil 1           46
  2D-Stadtmodell Anwendungsschema (4)
Repräsentation der Features (2)
•  Deklaration des Elements Strasse; dieses kann überall
   verwendet werden, wo GML ein Feature erwartet
•  Definition des Typs StrasseType als Unterklasse der
   abstrakten GML-Klasse AbstractFeatureType
<element name="Strasse" type="bsp:StrasseType"
         substitutionGroup="gml:_Feature"/>
<complexType name="StrasseType">
  <complexContent>
    <extension base="gml:AbstractFeatureType">
      <sequence>
        <element name="strname" type="string"/>                  Repräsentation des
        <element ref="gml:curveProperty"/>                       Straßenverlaufs hier
      </sequence>
    </extension>                                                 über vordefinierte
  </complexContent>                                              GML-Geometrie-
</complexType>                                                   Eigenschaft

               T. H. Kolbe: Geography Markup Language – Teil 1                          47
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://www.beispiel.net/beispiel"
        xmlns="http://www.w3.org/2001/XMLSchema"
        xmlns:gml="http://www.opengis.net/gml"

            2D-Stadtmodell Anwendungsschema
        xmlns:xlink="http://www.w3.org/1999/xlink"
        xmlns:bsp="http://www.beispiel.net/beispiel">
  <import namespace="http://www.opengis.net/gml" schemaLocation="feature.xsd"/>

  <element name="Stadtmodell" type="bsp:StadtmodellType" substitutionGroup="gml:_FeatureCollection"/>
  <complexType name="StadtmodellType">
    <complexContent>
      <extension base="gml:AbstractFeatureCollectionType"/>
                                                                                      Stadtmodell
    </complexContent>
  </complexType>

  <element name="Flurstueck" type="bsp:FlurstueckType" substitutionGroup="gml:_Feature"/>
  <complexType name="FlurstueckType">
    <complexContent>
      <extension base="gml:AbstractFeatureType">
        <sequence>
                                                                                      Flurstück
          <element name="Gemarkung" type="string"/>
          <element name="Flur" type="integer"/>
          <element name="Eigentuemer" type="string"/>
          <element ref="gml:surfaceProperty"/>
                                                                 Polygon
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <element name="Strasse" type="bsp:StrasseType" substitutionGroup="gml:_Feature"/>
  <complexType name="StrasseType">
    <complexContent>
      <extension base="gml:AbstractFeatureType">
        <sequence>
                                                                                       Strasse
          <element name="strname" type="string"/>
          <element ref="gml:curveProperty"/>                    LineString
        </sequence>
      </extension>
    </complexContent>
  </complexType>
</schema>

                                T. H. Kolbe: Geography Markup Language – Teil 1                         48
GML-Instanzdokument – Beispiel


                                 Meckenheimer
                                 Allee


  Gemarkung Euskirchen
  Flur 14
  Flurstück 5
  Eigentümer Leo Land




          T. H. Kolbe: Geography Markup Language – Teil 1   49
2D-Stadtmodell Instanzdokument (1)

 <?xml version="1.0" encoding="ISO-8859-1"?>
 <Stadtmodell xmlns="http://www.beispiel.net/beispiel"
              xmlns:gml="http://www.opengis.net/gml"
              xmlns:xlink="http://www.w3.org/1999/xlink">

  <gml:name>Kataster der Stadt XY</gml:name>
  <gml:boundedBy>
        .
        .                 nächste Folie
        .
  </gml:boundedBy>


  <gml:featureMember>
        .
        .
        .
  </gml:featureMember>

 </Stadtmodell>


            T. H. Kolbe: Geography Markup Language – Teil 1   50
   2D-Stadtmodell Instanzdokument (2)
 BoundedBy:
 Die in boundedBy definierte Envelope umschließt alle
 Geodaten dieser Datei.



<gml:boundedBy>
  <gml:Envelope
       srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
    <gml:coordinates> 9500.0,4300.0 9650.7,4353.6</gml:coordinates>
  </gml:Envelope>
</gml:boundedBy>




                T. H. Kolbe: Geography Markup Language – Teil 1       51
     2D-Stadtmodell Instanzdokument (3)
<?xml version="1.0" encoding="ISO-8859-1"?>
<Stadtmodell xmlns="http://www.beispiel.net/beispiel"
             xmlns:gml="http://www.opengis.net/gml"
             xmlns:xlink="http://www.w3.org/1999/xlink">
 <gml:name>Kataster der Stadt XY</gml:name>
 <gml:boundedBy>
   <gml:Envelope
        srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
     <gml:coordinates> 9500.0,4300.0 9650.7,4353.6</gml:coordinates>
   </gml:Envelope>
 </gml:boundedBy>

 <gml:featureMember>
   <Flurstueck> ...        </Flurstueck>                        nächste Folie
 </gml:featureMember>

 <gml:featureMember>
   <Strasse>     ...       </Strasse>
 </gml:featureMember>
</Stadtmodell>

                  T. H. Kolbe: Geography Markup Language – Teil 1               52
       2D-Stadtmodell Instanzdokument (4)

<gml:featureMember>
  <Flurstueck>
    <gml:name>Flst. 5</gml:name>
    <Gemarkung>Euskirchen</Gemarkung>
    <Flur>14</Flur>
    <Eigentuemer>Leo Land</Eigentuemer>

   <gml:surfaceProperty>
     <gml:Polygon srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
          .
          .
          .                          nächste Folie
     </gml:Polygon>
   </gml:surfaceProperty >

  </Flurstueck>
</gml:featureMember>




                       T. H. Kolbe: Geography Markup Language – Teil 1   53
      2D-Stadtmodell Instanzdokument (5)

<gml:surfaceProperty>
  <gml:Polygon srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
    <gml:exterior>
      <gml:Ring>
        <gml:curveMember>
          <gml:LineString>
            <gml:coordinates>
               9500.0,4300.0 9566.8,4306.2 9572.2,4325.5
               9568.8,4341.0 9513.7,4343.6 9500.0,4300.0
            </gml:coordinates>
          </gml:LineString>
        </gml:curveMember>
      </gml:Ring>
    </gml:exterior>
  </gml:Polygon>
</gml:surfaceProperty>



                  T. H. Kolbe: Geography Markup Language – Teil 1        54
     2D-Stadtmodell Instanzdokument (6)
<?xml version="1.0" encoding =“ISO-8859-1“?>
<Stadtmodell xmlns="http://www.vorlesung.net/beispiel"
             xmlns:gml="http://www.opengis.net/gml“>

 <gml:name>Kataster</gml:name>
 <gml:boundedBy>
   <gml:Box srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
     <gml:coordinates> 9500.0,4300.0 9650.7,4353.6</gml:coordinates>
   </gml:Box>
 <gml:boundedBy>

 <gml:featureMember>
   <Flurstueck> ...        </Flurstueck>
 </gml:featureMember>

 <gml:featureMember>
   <Strasse>     ...       </Strasse>                         nächste Folie
 </gml:featureMember>

</Stadtmodell>

                  T. H. Kolbe: Geography Markup Language – Teil 1             55
  2D-Stadtmodell Instanzdokument (7)



<Strasse>
  <strname>Meckenheimer Allee</strname>
  <gml:curveProperty>
    <gml:LineString srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
       <gml:coordinates>
          9510.0,4333.0 9536.4,4320.1 9555.5,4310.7
       </gml:coordinates>
    </gml:LineString>
  </gml:curveProperty >
</Strasse>




                T. H. Kolbe: Geography Markup Language – Teil 1               56
<?xml version="1.0" encoding="ISO-8859-1"?>
<Stadtmodell xmlns="http://www.beispiel.net/beispiel" xmlns:gml="http://www.opengis.net/gml"
             xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <gml:name>Kataster der Stadt XY</gml:name>
  <gml:boundedBy>
    <gml:Envelope srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">           Nicht den
      <gml:coordinates> 9500.0,4300.0 9650.7,4353.6</gml:coordinates>
    </gml:Envelope>                                                               Kopf verlieren
  </gml:boundedBy>

  <gml:featureMember>
    <Flurstueck>
      <gml:name>Flst. 5</gml:name>
      <Gemarkung>Euskirchen</Gemarkung>
      <Flur>14</Flur>
      <Eigentuemer>Leo Land</Eigentuemer>
      <gml:surfaceProperty>
        <gml:Polygon srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
          <gml:exterior>
            <gml:Ring> <gml:curveMember>
               <gml:LineString>
                 <gml:coordinates>9500.0,4300.0 9566.8,4306.2 9572.2,4325.5 9568.8,4341.0 9513.7,4343.6 9500.0,4300.0
                 </gml:coordinates>
               </gml:LineString>
            </gml:curveMember> </gml:Ring>
          </gml:exterior>
        </gml:Polygon>
      </gml:surfaceProperty >
    </Flurstueck>
  </gml:featureMember>

  <gml:featureMember>
    <Strasse>
     <strname>Meckenheimer Allee</strname>
     <gml:curveProperty>
        <gml:LineString srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
           <gml:coordinates>
               9510.0,4333.0 9536.4,4320.1 9555.5,4310.7                                    Gemarkung Euskirchen
           </gml:coordinates>                                                               Flur 14
        </gml:LineString>
                                                                                            Flurstück 5
      </gml:curveProperty >
    </Strasse>                                                                              Eigentümer Leo Land
  </gml:featureMember>
</Stadtmodell>


                                T. H. Kolbe: Geography Markup Language – Teil 1                                     57

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:44
posted:3/12/2011
language:German
pages:57