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
labelTemplate
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
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
[]
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
refType
string
v2.0
refUriTemplate
string
v2.0
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]
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.
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 ist optional bei der Eigenschaft eines Objekts anzugeben, 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 GeoJSON in geometry oder in JSON-FG in where 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
Optionaler Geltungsbereich für Eigenschaften die entweder nur beim Lesen (QUERIES) * oder beim Schreiben (MUTATIONS) verwendet werden sollen.
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
isQueryable
see description
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
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
  allOf:
  - 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
  allOf:
  - 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

Constraints on the types of inner properties depending on the type of the outer property are shown in the table below.

Outer typeValid inner typesRemarks
VALUE
INTEGER, FLOAT, STRING, BOOLEAN, DATETIME, DATE
INTEGER
INTEGER
FLOAT
FLOAT
STRING
STRING
BOOLEAN
BOOLEAN
DATETIME
DATETIME
DATE
DATE
OBJECT
OBJECT
Different objectType with different schemas can be used
FEATURE_REF
FEATURE_REF
Different refType can be used

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

Constraints on the types of inner properties depending on the type of the outer property are shown in the table below.

Outer typeValid inner typesRemarks
VALUE_ARRAY
VALUE_ARRAY, INTEGER, FLOAT, STRING, BOOLEAN, DATETIME, DATE
OBJECT_ARRAY
OBJECT_ARRAY, OBJECT
Different objectType with different schemas can be used
FEATURE_REF_ARRAY
FEATURE_REF_ARRAY, FEATURE_REF
Different refType can be used