Features - GML

specstableimplcandidate

Kodierung von Features als GML.

Umfang

Bei einem WFS-Feature-Provider werden die Features als GML vom WFS abgerufen und in die Antwort umgeschrieben. Im Falle von Features ist das Wurzelelement sf:FeatureCollection.

Bei einem SQL-Feature-Provider werden die Features auf der Grundlage des Provider-Schemas auf GML-Objekt- und Eigenschaftselemente abgebildet. Es gibt eine Reihe von Konfigurationsoptionen, um zu steuern, wie die Merkmale auf XML abgebildet werden.

Alle Konfigurationsoptionen dieses Moduls mit Ausnahme von "gmlSfLevel" sind nur für Collections mit einem SQL-Feature-Provider anwendbar. Für Collections mit einem WFS-Feature-Provider werden alle anderen Konfigurationsoptionen ignoriert.

Die folgenden Beschreibungen gelten alle nur für Collections mit einem SQL-Feature-Provider:

  • Die Feature-Eigenschaft mit der Rolle ID im Provider-Schema wird auf das Attribut gml:id
    des Features abgebildet. Diese Eigenschaften müssen eine direkte Eigenschaft des Featuretyps
    sein.
  • Geometrieeigenschaften werden auf die entsprechende GML 3.2 Geometrie abgebildet (gml:Point
    und gml:MultiPoint mit gml:pos; gml:LineString, gml:MultiCurve, gml:Polygon und
    gml:MultiSurface mit gml:posList). Das Attribut gml:id wird den Geometrieelementen
    nicht hinzugefügt. Das Attribut "srsName" wird in jeder Geometrie gesetzt.
  • Eigenschaften, die OBJECTs mit dem Objekttyp Link sind, werden auf einen gml:Reference-
    Wert mit den Attributen xlink:href und xmlnk:title abgebildet, falls gesetzt.
  • Eigenschaften, die OBJECTs mit dem Objekttyp Measure sind, werden auf einen
    gml:MeasureType-Wert abgebildet. Das Objekt muss die Eigenschaften value und uom
    haben, die beide in den Daten vorhanden sein müssen.
  • Eigenschaften, die FLOAT- oder INTEGER-Werte mit einer unit-Eigenschaft im
    Provider-Schema sind, werden ebenfalls auf einen gml:MeasureType-Wert abgebildet.
    Der Wert von unit wird auf das Attribut uom abgebildet.

Konformitätsklassen

Im Allgemeinen implementiert Features GML alle Anforderungen der Konformitätsklassen Geography Markup Language (GML), Simple Features Profile, Level 0 und Geography Markup Language (GML), Simple Features Profile, Level 2 aus OGC API - Features - Part 1: Core 1.0open in new window. Die Konformität hängt jedoch von der Konformität des GML-Anwendungsschemas mit dem GML Simple Features Standard ab. Da das GML-Anwendungsschema nicht von ldproxy kontrolliert wird, muss die Einstufung der Konformität als Teil der Konfiguration deklariert werden.

Für SQL-Feature-Provider kann außerdem ein anderes Root-Element als sf:FeatureCollection für die Features-Ressource konfiguriert werden. In diesem Fall kann die API nicht konform zu einer der GML-Konformitätsklassen von OGC API Features sein.

Konfiguration

Standardmäßig erhält jedes GML-Eigenschaftselement den Eigenschaftsnamen aus dem Feature-Schema. Das heißt, das Element wird im Standard-Namensraum liegen. Ein anderer Name kann mit der Transformation rename festgelegt werden, die zum Ändern des Namens verwendet werden kann, aber auch das Hinzufügen eines Namensraumpräfixes unterstützt.

Optionen

NameDefaultBeschreibungTypSeit
buildingBlock
Immer GML.
string
v2.0
extensionType
Deprecated Siehe buildingBlock.
string
v2.0
enabled
false
Soll das Modul aktiviert werden?
boolean
v2.0
transformations
{}
Property-Transformationen erfolgen bei der Aufbereitung der Daten für die Rückgabe über die API. Die Datenhaltung selbst bleibt unverändert. Alle Filterausdrücke (siehe queryables in Features) wirken unabhängig von etwaigen Transformationen bei der Ausgabe und müssen auf der Basis der Werte in der Datenhaltung formuliert sein - die Transformationen sind i.A. nicht umkehrbar und eine Berücksichtigung der inversen Transformationen bei Filterausdrücken wäre kompliziert und nur unvollständig möglich. Insofern sollten Eigenschaften, die queryable sein sollen, möglichst bereits in der Datenquelle transformiert sein. Eine Ausnahme sind typischerweise Transformationen in der HTML-Ausgabe, wo direkte Lesbarkeit i.d.R. wichtiger ist als die Filtermöglichkeit.
object
v2.0
gmlVersion
GML32
Bestimmt die zu verwendende GML-Version: GML32 für GML 3.2, GML31 für GML 3.1 und GML21 für GML 2.1.
string
v3.3
gmlSfLevel
null
Der Standardwert null erklärt, dass die GML-Unterstützung nicht alle Anforderungen der Konformitätsklassen Geography Markup Language (GML), Simple Features Profile, Level 0 oder der Geography Markup Language (GML), Simple Features Profile, Level 2 aus OGC API - Features - Part 1: Core 1.0open in new window erfüllt. Wenn der Wert auf 0, 1 oder 2 gesetzt wird, wird die Konformität in der Conformance Declaration Ressource angegeben. Wenn für eine Sammlung von einem SQL-Feature-Provider ein anderes Root-Element als sf:FeatureCollection in featureCollectionElementName konfiguriert ist, wird der Wert ignoriert und es wird keine Konformität zu einer GML-Konformitätsklasse erklärt.
number
v3.3
conformance
string
v2.0
applicationNamespaces
{}
Jedes XML-Element hat einen XML-Namensraum und jedes XML-Attribut kann einen XML-Namensraum haben. Um die Lesbarkeit der XML-Dokumente zu verbessern, wird für jeden Namespace ein Namespace-Präfix deklariert. Gängige Namespaces und Präfixe sind vordefiniert, diese sind: gml (GML 3.2), xlink (XLink), xml (XML), sf (OGC API Features Core 1.0, Core-SF), wfs (WFS 2.0), und xsi (XML Schema Information). Weitere Namespaces, die in den Daten verwendet werden (deklariert in GML-Anwendungsschemata und importierten Schemata), werden mit ihren Präfixen konfiguriert. Da Feature-Daten immer Elemente in anwendungsschemaspezifischen Namespaces verwenden, muss dieser Konfigurationsparameter immer angegeben werden.
object
v3.3
defaultNamespace
null
Mit diesem Konfigurationsparameter kann ein Standard-Namespace angegeben werden, der für XML-Elemente verwendet wird, wenn kein anderer Namespace angegeben ist. Der Wert ist der Namespace-Präfix. Es muss entweder ein vordefiniertes Präfix oder ein in applicationNamespaces deklariertes Präfix sein. Dieser Namespace wird als Standard-Namespace des XML-Dokuments deklariert.
string
v3.3
schemaLocations
null
Wenn ein Anwendungsnamensraum in das Attribut xsi:schemaLocation des Root-Elements aufgenommen werden soll, müssen die Dokument-URIs angegeben werden. Außerdem wird die Schema-URL des Namespaces des Root-Elements hinzugefügt, falls bekannt. Für die vordefinierten Namespaces (gml, sf und wfs) wird die kanonische Schema-URL im OGC-Schema-Repository verwendet, sofern keine andere Schema-URL für den Namespace konfiguriert ist. Beachten Sie, dass der Namespace des Root-Elements im Attribut xsi:schemaLocation deklariert werden muss, um den XML-Schema-Validierungsanforderungen zu entsprechen, auch wenn der Namespace von einem anderen Schema importiert wird.
object
v3.3
objectTypeNamespaces
{}
Alle Objekt/Datentyp-Instanzen werden durch ein GML-Objektelement dargestellt. Im Provider-Schema muss für jedes OBJEKT in der Eigenschaft objectType ein Name angegeben werden, auch für den Feature-Typ selbst. Standardmäßig wird dieser Name für den unqualifizierten Namen des GML-Objektelements verwendet. Wenn das GML-Objektelement nicht im Standard-Namensraum liegt, spezifiziert dieser Konfigurationsparameter den Namensraumpräfix zu einem Objekttyp.
object
v3.3
variableObjectElementNames
{}
Es kann auch Fälle geben, insbesondere wenn im zugrunde liegenden Anwendungsschema Vererbung verwendet wird, in denen mehrere Objekttypen in derselben Tabelle geführt werden, mit einem Attribut, das den Namen des Merkmals/Objekttyps angibt. Dieser Konfigurationsparameter bietet die Möglichkeit, diese Eigenschaften zu identifizieren und die Werte auf qualifizierte Namen für das GML-Objektelement abzubilden. Im Beispiel ist _type die Feature-Eigenschaft mit drei verschiedenen Werten, die auf den qualifizierten Elementnamen abgebildet werden.
object
v3.3
featureCollectionElementName
sf:FeatureCollection
Es werden verschiedene Feature-Collection-Elemente verwendet und manchmal werden zusätzliche Elemente in GML-Anwendungsschemata definiert. Der Standard ist sf:FeatureCollection, wie von OGC API Features spezifiziert. Dieser Konfigurationsparameter bietet die Möglichkeit, dass ein anderes Feature-Collection-Element in der Rückgabe verwendet wird.
string
v3.3
featureMemberElementName
sf:featureMember
Das in featureCollectionElementNamereferenzierte Feature-Collection-Element hat ein untergeordnetes Eigenschaftselement, das wiederum jedes Feature enthält. Der Standardwert ist sf:featureMember, wie von OGC API Features definiert. Dieser Konfigurationsparameter bietet die Möglichkeit, den Elementnamen für das konfigurierte Feature-Collection-Element zu spezifizieren.
string
v3.3
supportsStandardResponseParameters
false
Das Feature-Collection-Element, auf das in featureCollectionElementName verwiesen wird, kann die WFS-2.0-Standardantwortparameter (timeStamp, numberMatched, numberReturned) unterstützen. Dieser Konfigurationsparameter steuert, ob die Attribute als XML-Attribute in das Feature-Collection-Element aufgenommen werden.
boolean
v3.3
xmlAttributes
[]
Eigenschaften werden standardmäßig als XML-Kindelement (GML-Eigenschaftselement) des XML-Elements dargestellt, das das Objekt repräsentiert (GML-Objektelement). Alternativ kann die Eigenschaft auch als XML-Attribut des übergeordneten GML-Objektelements dargestellt werden. Dies ist nur für Eigenschaften vom Typ STRING, FLOAT, INTEGER oder BOOLEAN möglich.
array
v3.3
gmlIdPrefix
null
Die Feature-Eigenschaft mit der Rolle ID im Provider-Schema wird auf das Attribut gml:id des Merkmals abgebildet. Diese Eigenschaften müssen eine direkte Eigenschaft des Feature-Typs sein. Wenn die Werte die Regel für XML-IDs verletzen, z. B. wenn sie mit einer Ziffer beginnen können, kann dieser Konfigurationsparameter verwendet werden, um ein konsistentes Präfix hinzuzufügen, um alle Werte auf gültige XML-IDs abzubilden.
string
v3.3

Beispiele


- buildingBlock: GML
  enabled: true
  applicationNamespaces:
    ns1: http://www.example.com/ns/ns1/1.0
    ns2: http://www.example.com/ns/ns2/1.0
  defaultNamespace: ns1
  schemaLocations:
    ns1: '{{serviceUrl}}/resources/ns1.xsd'
    ns2: '{{serviceUrl}}/resources/ns2.xsd'
  gmlIdPrefix: '_'
collections:
  some_type:
    ...
    api:
    - buildingBlock: GML
      xmlAttributes:
        - someAtt
      transformations:
        someOtherAtt:
          rename: 'ns2:someOtherAtt'