Allgemein

Es werden aktuell drei Arten von Feature-Providern unterstützt:

  • SQL: Die Features sind in einer SQL-Datenbank gespeichert (PostgreSQL/PostGIS, GeoPackage, SQLite/SpatiaLite).
  • WFS: Die Features werden von einem OGC WFS bezogen.
  • GraphQL: Die Features werden von einer GraphQL API bezogen. Dieser Feature-Provider ist experimentell und hat einen eingeschränkten Funktionsumfang.

Konfiguration

Dies sind gemeinsame Konfigurations-Optionen für alle Provider-Typen.

NameDefaultBeschreibungTypSeit
id
Eindeutiger Identifikator der Entity, muss dem Dateinamen entsprechen. Erlaubt sind Buchstaben (A-Z, a-z), Ziffern (0-9), der Unterstrich ("_") und der Bindestrich ("-").
string
v2.0
providerType
Stets FEATURE.
string
v2.0
providerSubType
SQL für ein SQL-DBMS als Datenquelle, WFS für einen OGC Web Feature Service als Datenquelle.
string
v2.0
featureProviderType
Deprecated Siehe providerSubType.
string
v2.0
nativeCrs
CRS84
Das Koordinatenreferenzsystem, in dem Geometrien in dem Datensatz geführt werden. Der EPSG-Code des Koordinatenreferenzsystems wird als Integer in code angegeben. Mit forceAxisOrder kann die Koordinatenreihenfolge geändert werden: NONE verwendet die Reihenfolge des Koordinatenreferenzsystems, LON_LAT verwendet stets Länge/Ostwert als ersten und Breite/Nordwert als zweiten Wert, LAT_LON entsprechend umgekehrt. Beispiel: Das Default-Koordinatenreferenzsystem CRS84 entspricht code: 4326 und forceAxisOrder: LON_LAT.
object
v2.0
nativeTimeZone
UTC
Eine Zeitzonen-ID, z.B. Europe/Berlin. Wird auf temporale Werte ohne Zeitzone im Datensatz angewendet.
string
v2.0
typeValidation
NONE
Steuert ob die Spezifikationen der Objektarten daraufhin geprüft werden, ob sie zur Datenquelle passen (nur für SQL). NONE heißt keine Prüfung. Bei LAX schlägt die Prüfung fehl und der Start des Providers wird verhindert, wenn Probleme festgestellt werden, die in jedem Fall zu Laufzeitfehlern führen würden. Probleme die abhängig von den tatsächlichen Daten zu Laufzeitfehlern führen könnten, werden als Warnung geloggt. Bei STRICT führen alle festgestellten Probleme zu einem Fehlstart. Der Provider wird also nur gestartet, wenn keine Risiken für Laufzeitfehler im Zusammenhang mit der Datenquelle identifiziert werden.
string
v2.0
extensions
[]
Definition von Erweiterungen, siehe Erweiterungen.
array
v2.0
types
{}
Definition von Feature-Types. Die Einträge sind Schema-Definitionen mit type: OBJECT und mindestens einem Property mit role: ID.
object
v2.0
fragments
{}
Definition von wiederverwendbaren Schema-Fragmenten, die mittels schema in types referenziert werden können. Die Einträge sind beliebige Schema-Definitionen.
object
v2.0
auto
false
Steuert, ob die Informationen zu types beim Start automatisch aus der Datenquelle bestimmt werden sollen (Auto-Modus). In diesem Fall sollte types nicht angegeben sein.
boolean
v2.0
autoPersist
false
Deprecated, wird vom Editor abgelöst. Steuert ob mit auto generierte Definitionen in die Konfigurationsdatei geschrieben werden sollen. Setzt voraus, dass der Store nicht READ_ONLY ist.
boolean
v2.0
autoTypes
[]
Deprecated, wird vom Editor abgelöst. Liste von Quelltypen, die für die Ableitung der types Definitionen im Auto-Modus berücksichtigt werden sollen. Funktioniert aktuell nur für SQL.
array
v2.0

Schema-Definitionen

NameDefaultBeschreibungTypSeit
sourcePath
Der relative Pfad zu diesem Schemaobjekt. Die Pfadsyntax ist je nach Provider-Typ unterschiedlich (SQL und WFS).
string
v2.0
path
Deprecated Siehe sourcePath.
string
v2.0
sourcePaths
[sourcePath]
Deprecated, anstatt dessen concat oder coalesce verwenden. Die relativen Pfade zu diesem Schemaobjekt. Die Pfadsyntax ist je nach Provider-Typ unterschiedlich (SQL und WFS).
array
v2.0
type
STRING/OBJECT
Der Datentyp des Schemaobjekts. Der Standardwert ist STRING, sofern nicht auch die Eigenschaft properties angegeben ist, dann ist es OBJECT. Erlaubt sind: - FLOAT, INTEGER, STRING, BOOLEAN, DATETIME, DATE für einfache Werte. - GEOMETRY für eine Geometrie. - OBJECT für ein Objekt. - OBJECT_ARRAY für eine Liste von Objekten. - VALUE_ARRAYfür eine Liste von einfachen Werten. - FEATURE_REF für einen Verweis auf ein anderes Feature oder eine externe Ressource. - "FEATURE_REF_ARRAY" für eine Liste von Verweisen auf andere Features oder externe Ressourcen.
string
v2.0
role
null
Kennzeichnet besondere Bedeutungen der Eigenschaft. ID ist bei der Eigenschaft eines Objekts anzugeben, die für die featureId in der API zu verwenden ist. Diese Eigenschaft ist typischerweise die erste Eigenschaft im properties-Objekt. Erlaubte Zeichen in diesen Eigenschaften sind alle Zeichen bis auf das Leerzeichen (" ") und der Querstrich ("/"). TYPE kann bei der Eigenschaft eines Objekts angegeben werden, die den Namen einer Unterobjektart enthält. Hat eine Objektart mehrere Geometrieeigenschaften, dann ist PRIMARY_GEOMETRY bei der Eigenschaft anzugeben, die für bbox-Abfragen verwendet werden soll und die in Datenformaten mit genau einer oder einer herausgehobenen Geometrie (z.B. in GeoJSON geometry) kodiert werden soll. Hat eine Objektart mehrere zeitliche Eigenschaften, dann sollte PRIMARY_INSTANT bei der Eigenschaft angegeben werden, die für datetime-Abfragen verwendet werden soll, sofern ein Zeitpunkt die zeitliche Ausdehnung der Features beschreibt. Ist die zeitliche Ausdehnung hingegen ein Zeitintervall, dann sind PRIMARY_INTERVAL_START und PRIMARY_INTERVAL_END bei den jeweiligen zeitlichen Eigenschaften anzugeben.
string
v2.0
valueType
STRING
Wird nur benötigt, wenn type auf VALUE_ARRAY gesetzt ist. Mögliche Werte: FLOAT, INTEGER, STRING, BOOLEAN, DATETIME, DATE
string
v2.0
geometryType
null
Mit der Angabe kann der Geometrietype spezifiziert werden. Die Angabe ist nur bei Geometrieeigenschaften (type: GEOMETRY) relevant. Erlaubt sind die Simple-Feature-Geometrietypen, d.h. POINT, MULTI_POINT, LINE_STRING, MULTI_LINE_STRING, POLYGON, MULTI_POLYGON, GEOMETRY_COLLECTION und ANY.
string
v2.0
objectType
Optional kann ein Name für den Typ spezifiziert werden. Der Name hat i.d.R. nur informativen Charakter und wird z.B. bei der Erzeugung von JSON-Schemas verwendet. Bei Eigenschaften, die als Web-Links nach RFC 8288 abgebildet werden sollen, ist immer "Link" anzugeben.
string
v2.0
label
Eine Bezeichnung des Schemaobjekts, z.B. für die Angabe in der HTML-Ausgabe.
string
v2.0
description
Eine Beschreibung des Schemaobjekts, z.B. für die HTML-Ausgabe oder das JSON-Schema.
string
v2.0
unit
Die Maßeinheit des Wertes, nur relevant bei numerischen Eigenschaften.
string
v2.0
constantValue
null
Alternativ zu sourcePath kann diese Eigenschaft verwendet werden, um im Feature-Provider eine Eigenschaft mit einem festen Wert zu belegen.
string
v2.0
scope
null
Deprecated, benutzen Sie stattdessen excludedScopes. Optionaler Geltungsbereich für Eigenschaften die entweder nur beim Lesen (QUERIES) oder beim Schreiben (MUTATIONS) verwendet werden sollen.
string
v2.0
excludedScopes
[]
Optionaler Ausschluss einer Eigenschaft aus einem Schema-Anwendungsbereich. Siehe Schema-Anwendungsbereiche für eine Beschreibung der Bereiche.
array
v2.0
refType
Für eine Feature-Eigenschaft des Typs FEATURE_REF oder FEATURE_REF_ARRAY, bei der das Ziel immer ein Feature einer anderen Objektart im selben Provider ist, wird die Kennung der Objektart in refType angegeben. Für Details siehe Objektreferenzen.
string
v2.0
refUriTemplate
Für eine Eigenschaft vom Typ FEATURE_REF oder FEATURE_REF_ARRAY, bei der das Ziel eine externe Ressource ist, deklarieren Sie das URI-Template in refUriTemplate. Für Details siehe Objektreferenzen.
string
v2.0
refKeyTemplate
Für eine Eigenschaft vom Typ FEATURE_REF oder FEATURE_REF_ARRAY, bei der die Objektart des Ziels variiert, deklarieren Sie das String-Template in refKeyTemplate. Für Details siehe Objektreferenzen.
string
v2.0
schema
null
Referenz auf eine externe Schema-Definition. Der Default-Resolver löst Referenzen auf Einträge in fragments auf, z.B. #/fragments/example. Für weitere Resolver siehe Erweiterungen.
string
v2.0
ignore
false
Option um dieses Schemaobjekt komplett zu ignorieren. Der Hauptzweck ist es Teile von Schemas zu ignorieren, die mit schema referenziert werden.
boolean
v2.0
transformations
[]
Optionale Transformationen für die Eigenschaft, siehe Transformationen.
array
v2.0
constraints
{}
Optionale Beschreibung von Schema-Einschränkungen, vor allem für die Erzeugung von JSON-Schemas. Siehe Constraints.
object
v2.0
forcePolygonCCW
true
Option zum Erzwingen der Orientierung von Polygonen, gegen den Uhrzeigersinn für äußere Ringe und mit dem Uhrzeigersinn für innere Ringe (nur für SQL).
boolean
v2.0
linearizeCurves
false
Option zur Linearisierung von Kurvengeometrien (z. B. CircularString oder CurvePolygon) zu einer Simple-Features-Geometrie. Diese Option gilt nur für SQL-Feature-Anbieter mit Dialekt PostGIS.
boolean
v2.0
isQueryable
see description
Deprecated, benutzen Sie stattdessen excludedScopes. Eigenschaften, die nicht vom Typ OBJECT oder OBJECT_ARRAY sind, sind standardmäßig für Abfragen geeignet. Diese Einstellung kann verwendet werden, um eine Eigenschaft als nicht abfragefähig zu markieren, z. B. wenn die Eigenschaft nicht für die Verwendung in Abfragen optimiert ist. Ob eine geeignete Eigenschaft tatsächlich abgefragt werden kann entscheidet die Provider-Implementierung, das könnte aufgrund technischer Gründe nicht möglich sein.
boolean
v2.0
isSortable
see description
Deprecated, benutzen Sie stattdessen excludedScopes. Nur die direkten Feature-Eigenschaften einer Objektart, die vom Typ STRING, FLOAT, INTEGER, DATE oder DATETIME sind, kommen als Sortierkriterien in Frage. Diese Einstellung kann verwendet werden, um eine Eigenschaft als nicht geeignet zu deklarieren, zum Beispiel, wenn die Eigenschaft nicht für die Verwendung in Abfragen optimiert ist. Ob eine geeignete Eigenschaft tatsächlich als Sortierkriterium verwendet werden kann entscheidet die Provider-Implementierung, das könnte aufgrund technischer Gründe nicht möglich sein.
boolean
v2.0
isLastModified
see description
Kennzeichnet eine DATETIME-Eigenschaft als eine Eigenschaft, die den Zeitstempel enthält, wann das Feature zuletzt geändert wurde. Diese Information wird beim optimistischen Sperren verwendet, um die Vorbedingungen zu bewerten, wenn ein CRUD-Request einen "Last-Modified"-Header enthält.
boolean
v2.0
properties
Nur bei OBJECT und OBJECT_ARRAY. Ein Objekt mit einer Eigenschaft pro Objekteigenschaft. Der Schüssel ist der Name der Objekteigenschaft, der Wert das Schema-Objekt zu der Objekteigenschaft.
object
v2.0
merge
[]
Wenn nur einige properties in einem externen schema definiert sind, oder wenn nur einige properties auf eine andere Tabelle gemappt werden sollen, stellt diese Option einen komfortablen Weg zur Verfügung, um solche properties zusammen mit den regulären properties zu definieren. Der Wert ist eine Liste von Schema-Objekten, aber nur sourcePath, schema und properties werden berücksichtigt. Für Details siehe Mapping Operationen.
array
v2.0
allOf
[]
Deprecated Siehe merge.
array
v2.0
coalesce
[]
Wenn der Wert für ein Property aus mehr als einem sourcePath stammen kann, erlaubt diese Option den ersten Wert der nicht Null ist zu wählen. Die Option erwartet eine Liste von Werte-Schemas, für Details siehe Mapping Operationen.
array
v2.0
concat
[]
Wenn die Werte für ein Array-Property aus mehr als einem sourcePath stammen können, erlaubt diese Option alle verfügbaren Werte zu konkatenieren. Die Option erwartet eine Liste von Werte- oder Werte-Array-Schemas, für Details siehe Mapping Operationen.
array
v2.0

Connection Info

Informationen zu den Datenquellen finden Sie auf separaten Seiten: SQL und WFS.

Beispiel-Konfiguration (SQL)

Als Beispiel siehe die Provider-Konfigurationopen in new window der API Weinlagen in Rheinland-Pfalzopen in new window.

Mapping Operationen

Mapping Operationen können notwendig sein, wenn die Quell- and Ziel-Schema-Struktur zu unterschiedlich sind.

Merge

Wenn nur einige properties in einem externen schema definiert sind, oder wenn nur einige properties auf eine andere Tabelle gemappt werden sollen, stellt diese Option einen komfortablen Weg zur Verfügung, um solche properties zusammen mit den regulären properties zu definieren.

Beispiele
Einige Properties in einem externen JSON schema definieren

example:
  sourcePath: /main
  type: OBJECT
  merge:
  - properties:
      id:
        sourcePath: id
        type: INTEGER
        role: ID
  - sourcePath: '[JSON]names'
    schema: names.json

Spalten aus einer gejointen Tabelle im Haupt-Feature verwenden

example:
  sourcePath: /main
  type: OBJECT
  merge:
  - properties:
      id:
        sourcePath: id
        type: INTEGER
        role: ID
  - sourcePath: '[id=id]names'
    properties:
      name1:
        sourcePath: name1
        type: STRING
      name2:
        sourcePath: name2
        type: STRING

Coalesce

Wenn der Wert für ein Property aus mehr als einem sourcePath stammen kann, erlaubt diese Option den ersten Wert der nicht Null ist zu wählen.

Beispiel

foo:
  type: OBJECT
  properties:
    bar:
      type: VALUE
      coalesce:
      - sourcePath: bar_stringValue
        type: STRING
      - sourcePath: bar_integerValue
        type: INTEGER
      - sourcePath: bar_booleanValue
        type: BOOLEAN

Typ-Kompabilität

Die Einschränkungen für die Arten der inneren Eigenschaften in Abhängigkeit von der Art der äußeren Eigenschaft sind in der nachstehenden Tabelle aufgeführt.

Äußerer TypGültige innere TypenBemerkungen
VALUE
INTEGER, FLOAT, STRING, BOOLEAN, DATETIME, DATE
INTEGER
INTEGER
FLOAT
FLOAT
STRING
STRING
BOOLEAN
BOOLEAN
DATETIME
DATETIME
DATE
DATE
OBJECT
OBJECT
Verschiedene objectType mit unterschiedlichen Schemata können verwendet werden
FEATURE_REF
FEATURE_REF
Verschiedene refType können verwendet werden

Concat

Wenn die Werte für ein Array-Property aus mehr als einem sourcePath stammen können, erlaubt diese Option alle verfügbaren Werte zu konkatenieren.

Beispiel

foo:
  type: OBJECT
  properties:
    bar:
      type: FEATURE_REF_ARRAY
      concat:
      - sourcePath: '[id=foo_fk]baz1/id'
        refType: baz1
      - sourcePath: '[id=foo_fk]baz2/id'
        refType: baz2
      - sourcePath: '[id=foo_fk]bazn/id'
        refType: bazn

Typ-Kompabilität

Die Einschränkungen für die Arten der inneren Eigenschaften in Abhängigkeit von der Art der äußeren Eigenschaft sind in der nachstehenden Tabelle aufgeführt.

Äußerer TypGültige innere TypenBemerkungen
VALUE_ARRAY
VALUE_ARRAY, INTEGER, FLOAT, STRING, BOOLEAN, DATETIME, DATE
OBJECT_ARRAY
OBJECT_ARRAY, OBJECT
Verschiedene objectType mit unterschiedlichen Schemata können verwendet werden
FEATURE_REF_ARRAY
FEATURE_REF_ARRAY, FEATURE_REF
Verschiedene refType können verwendet werden

Objektreferenzen

Objektreferenzen (Typ ist FEATURE_REF or FEATURE_REF_ARRAY) sind objektwertige Eigenschaften mit drei vordefinierten Eigenschaften: id, title und type.

  • id ist der Fremdschlüssel, d.h. die ID-Eigenschaft eines referenzierten Features. Typ ist entweder ein STRING oder INTEGER.
  • title ist die Bezeichnung, die verwendet wird, wenn der Link einem Benutzer angezeigt wird, ein STRING. Der Standardwert ist die id, wenn die Eigenschaft nicht angegeben wird.
  • type ist die Objektart des referenzierten Features im selben Feature Provider, ein STRING.

Einschränkungen: Diese Eigenschaften unterstützen keine Transformationen (z.B. stringFormat) oder coalesce.

Kodieren von Objektreferenzen

Wenn Objekte über die API angefordert werden, können Objektreferenzen mit Hilfe des Abfrageparameters profile nach verschiedenen Profilen kodiert werden, je nach dem ausgehandelten Datenformat. Folgende Profile werden unterstützt:

  • rel-as-key: Die Kennung des Objekts in seiner Collection (die featureId);
  • rel-as-uri: Die URI des Objekts;
  • rel-as-link: Ein Objekt mit zwei Eigenschaften: href mit dem URI des Objekts und title mit einer Bezeichnung des Objekts.

Das Profil rel-as-link wird in der Regel für Datenformate nicht unterstützt, die keine objektwertigen Eigenschaften unterstützen, z.B. CSV oder FlatGeobuf. In HTML wird ein Link als <a> Element kodiert, in GML mit XLink Attributen.

Das Profil wird auf der Grundlage des angeforderten Profils (Standard ist rel-as-link) und der unterstützten Profile des ausgehandelten Datenformats auf der Grundlage des Accept-Headers und des Abfrageparameters f ausgehandelt.

Konfiguration

Einfacher Fall

Wenn der Standardwert von title (d.h. die id) ausreicht und die Zielobjekte in derselben API und alle in derselben Collection sind, müssen die Eigenschaften des FEATURE_REF-Objekts nicht im Schema angegeben werden. Es genügt, die folgende Konfigurationseigenschaften anzugeben:

  • sourcePath: Der Wert mit der id des referenzierten Objekts.
  • type: Der Typ der id, entweder STRING (der Standard) oder INTEGER.
  • refType: Die Kennung der Objektart / Collection des referenzierten Objekts.

Im folgenden Beispiel ist die Spalte abs der Fremdschlüssel des referenzierten Objekts in der Objektart abschnitteaeste:


abs:
  sourcePath: abs
  type: FEATURE_REF
  label: Abschnitt/Ast
  description: 16-stellige Kennung des Abschnittes oder Astes
  refType: abschnitteaeste

Im nächsten Beispiel gibt es zwei Spalten (abs und ast), die Fremdschlüssel des referenzierten Features im Objekttyp abschnitte oder aeste sind. Nur einer der beiden Werte wird gesetzt und der erste Wert, der nicht null ist, wird verwendet:


abs:
  type: FEATURE_REF
  label: Abschnitt/Ast
  description: 16-stellige Kennung des Abschnittes oder Astes
  coalesce:
  - sourcePath: abs
    refType: abschnitte
  - sourcePath: ast
    refType: aeste

Fortgeschrittene Fälle

Wenn sich der title von der id unterscheiden soll, wenn der Typ des referenzierten Objekts aus den Daten bestimmt wird oder wenn die referenzierte Ressource außerhalb der API liegt, werden die Eigenschaften der Objektreferenz explizit im Feature-Schema angegeben.

Example:


unfaelle:
  sourcePath: "[abs=abs]unfaelle_point"
  type: FEATURE_REF_ARRAY
  label: Unfälle
  description: Unfälle auf dem Abschnitt oder Ast
  properties:
    id:
      type: INTEGER
      sourcePath: fid
    title:
      type: STRING
      sourcePath: unfzeit
    type:
      type: STRING
      constantValue: unfaelle

Zusätzlich können die folgenden Konfigurationsoptionen angegeben werden:

  • refKeyTemplate: Das String-Template für den Wert im rel-as-key Profil. Parameter sind id und type. Der Standardwert ist {{id}}, wenn type konstant ist, sonst {{type}}::{{id}}.
  • refUriTemplate: Das String-Template der URI des referenzierten Features. Parameter sind id, type und apiUri (die URI der Landing Page der API). Der Standardwert ist {{apiUri}}/collections/{{type}}/items/{{id}}.

Beispiel:


externalReferences:
  sourcePath: "[fk=oid]externalref"
  type: FEATURE_REF_ARRAY
  label: External References
  refUriTemplate: "https://example.com/foo/bar/{{type}}/{{id}}"
  refKeyTemplate: "{{type}}_{{id}}"
  properties:
  id:
    type: INTEGER
    sourcePath: oid
  title:
    type: STRING
    sourcePath: label
  type:
    type: STRING
    sourcePath: type