Features - GMLspecstableimplcandidate
Encode features as GML.
Scope
For a WFS feature provider, the features are accessed as GML from the WFS and rewritten to the response. In case of Features the root element is sf:FeatureCollection
.
For a SQL feature provider, the features are mapped to GML object and property elements based on the provider schema. A number of configuration options exist to control how the features are mapped to XML.
All configuration options of this module except gmlSfLevel
are only applicable for collections with a SQL feature provider. For collections with a WFS feature provider, all other configuration options are ignored.
The following descriptions all apply only to collections with a SQL feature provider:
- The feature property with the role
ID
in the provider schema is mapped to thegml:id
attribute of the feature. These properties must be a direct property of the feature type. - Geometry properties will be mapped to the corresponding GML 3.2 geometry (
gml:Point
andgml:MultiPoint
withgml:pos
;gml:LineString
,gml:MultiCurve
,gml:Polygon
, andgml:MultiSurface
withgml:posList
). Nogml:id
attribute is added to geometry
elements. ThesrsName
attribute is set in each geometry. - Properties that are
OBJECT
s with object typeLink
will be mapped to agml:Reference
value withxlink:href
andxmlnk:title
attributes, if set. - Properties that are
OBJECT
s with object typeMeasure
will be mapped to agml:MeasureType
value. The object must have the propertiesvalue
anduom
, which
both must be present in the data. - Properties that are
FLOAT
orINTEGER
values with aunit
property in the provider
schema are mapped to agml:MeasureType
value, too. The value ofunit
is mapped to theuom
attribute.
Conformance Classes
In general, Features GML implements all requirements of conformance class Geography Markup Language (GML), Simple Features Profile, Level 0 and Geography Markup Language (GML), Simple Features Profile, Level 2 from OGC API - Features - Part 1: Core 1.0. However, conformance depends on the conformance of the GML application schema with the GML Simple Features standard. Since the GML application schema is not controlled by ldproxy, the conformance level needs to be declared as part of the configuration.
For SQL feature providers a different root element than sf:FeatureCollection
can be configured for the Features resource. In that case, the API cannot conform to any of the GML conformance classes of OGC API Features.
Configuration
By default, every GML property element will receive the property name from the feature schema. That is, the element will be in the default namespace. A different name can be set using the rename
transformation, which can be used to change the name, but also supports to add a namespace prefix.
Options
Name | Default | Description | Type | Since |
---|---|---|---|---|
buildingBlock | Always GML . | string | v2.0 | |
extensionType | Deprecated See buildingBlock . | string | v2.0 | |
enabled | false | Enable the building block? | boolean | v2.0 |
transformations | {} | Property transformations do not affect data sources, they are applied on-the-fly as part of the encoding. Filter expressions do not take transformations into account, they have to be based on the source values. That means queryable properties (see queryables in Features) should not use transformations in most cases. The exception to the rule is the HTML encoding, where readability might be more important than filter support. | object | v2.0 |
gmlVersion | GML32 | Selects the GML version to use: GML32 for GML 3.2, GML31 for GML 3.1 and GML21 for GML 2.1. | string | v3.3 |
gmlSfLevel | null | The default null declares that the GML support does not meet all requirements of the Geography Markup Language (GML), Simple Features Profile, Level 0 or the Geography Markup Language (GML), Simple Features Profile, Level 2 conformance classes from OGC API - Features - Part 1: Core 1.0. If the value is set to 0 , 1 or 2 , the conformance will be declared in the Conformance Declaration resource. If for a collection from a SQL feature provider a root element different to sf:FeatureCollection is configured in featureCollectionElementName , the value will be ignored and no conformance to a GML conformance class will be declared. | number | v3.3 |
conformance | string | v2.0 | ||
applicationNamespaces | {} | Every XML element will have and XML attribute can have an XML namespace. To improve readability of the XML documents, a namespace prefix is declared for every namespace. Common namespaces and prefixes are pre-defined, these are: gml (GML 3.2), xlink (XLink), xml (XML), sf (OGC API Features Core 1.0, Core-SF), wfs (WFS 2.0), and xsi (XML Schema Information). Additional namespaces that are used in the data (declared in GML application schemas and imported schemas), the namespaces are configured with their prefixes. Since feature data will always use elements in application-schema-specific namespaces, this confirguration parameter will always need to be specified. | object | v3.3 |
defaultNamespace | null | A default namespace that is used for XML elements, if no other namespace is specified, can be specified with this configuration parameter. The value will be the namespace prefix. It must be either a pre-defined prefix or a prefix declared in applicationNamespaces . This namespace will be declared as the default namespace of the XML document. | string | v3.3 |
schemaLocations | null | If any application namespace should be included in the xsi:schemaLocation attribute of the root element, the document URIs have to be provided. In addition, the schema location of the namespace of the root element will be added, if known. For the pre-defined namespaces (gml , sf and wfs ), the canonical schema location in the OGC schema repository will be used unless another schema location for the namespace is configured. Note that to meet XML Schema validation requirements, the namespace of the root element must be declared in the xsi:schemaLocation attribute, even if the namespace is imported by another schema. | object | v3.3 |
objectTypeNamespaces | {} | All object/data type instances are represented through a GML object element. In the provider schema, a name must be provided for each OBJECT in the objectType property, including for the feature type itself. By default, this name will be used for the unqualified name of the GML object element. If the GML object element is not in the default namespace, this configuration parameter assigns a namespace prefix to an object type. | object | v3.3 |
variableObjectElementNames | {} | There may also be cases, in particular when inheritance is used in the underlying application schema, where multiple object types are represented in the same table with an attribute that specifies the name of the feature/object type. This configuration parameter provides the capability to identify these properties and map the values to qualified names for the GML object element. In the example, _type is the feature property with three different values mapped to the qualified element name. | object | v3.3 |
featureCollectionElementName | sf:FeatureCollection | Various feature collection elements are in use and sometimes additional ones are specified in GML application schemas. The default is sf:FeatureCollection as specified by OGC API Features. This configuration parameter provides a capability to use a different feature collection element. | string | v3.3 |
featureMemberElementName | sf:featureMember | The feature collection element referenced in featureCollectionElementName has a child property element that contains each feature. The default is sf:featureMember as specified by OGC API Features. This configuration parameter provides a capability to declare the element name for the feature collection element. | string | v3.3 |
supportsStandardResponseParameters | false | The feature collection element referenced in featureCollectionElementName may support the WFS 2.0 standard response parameters (timeStamp , numberMatched , numberReturned ). This configuration parameter controls whether the attributes are included in the feature collection element as XML attributes. | boolean | v3.3 |
xmlAttributes | [] | Properties are by default represented as the XML child element (GML property element) of the XML element representing the object (GML object element). Alternatively, the property can be represented as an XML attribute of the parent GML object element. This is only possible for properties of type STRING, FLOAT, INTEGER, or BOOLEAN. | array | v3.3 |
gmlIdPrefix | null | The feature property with role ID in the provider schema is mapped to the gml:id attribute of the feature. These properties must be a direct property of the feature type. If the values violate the rule for XML IDs, e.g., if they can start with a digit, this configuration parameter can be used to add a consistent prefix to map all values to valid XML IDs. | string | v3.3 |
Examples
- 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'