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.
Name | Default | Beschreibung | Typ | Seit |
---|---|---|---|---|
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
Name | Default | Beschreibung | Typ | Seit |
---|---|---|---|---|
sourcePath | string | v2.0 | ||
path | Deprecated Siehe sourcePath . | string | v2.0 | |
sourcePaths | [sourcePath] | 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_ARRAY fü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-Konfiguration der API Weinlagen in Rheinland-Pfalz.
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 Typ | Gültige innere Typen | Bemerkungen |
---|---|---|
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 Typ | Gültige innere Typen | Bemerkungen |
---|---|---|
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 einSTRING
oderINTEGER
.title
ist die Bezeichnung, die verwendet wird, wenn der Link einem Benutzer angezeigt wird, einSTRING
. Der Standardwert ist dieid
, wenn die Eigenschaft nicht angegeben wird.type
ist die Objektart des referenzierten Features im selben Feature Provider, einSTRING
.
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 (diefeatureId
);rel-as-uri
: Die URI des Objekts;rel-as-link
: Ein Objekt mit zwei Eigenschaften:href
mit dem URI des Objekts undtitle
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 derid
des referenzierten Objekts.type
: Der Typ derid
, entwederSTRING
(der Standard) oderINTEGER
.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 imrel-as-key
Profil. Parameter sindid
undtype
. Der Standardwert ist{{id}}
, wenntype
konstant ist, sonst{{type}}::{{id}}
.refUriTemplate
: Das String-Template der URI des referenzierten Features. Parameter sindid
,type
undapiUri
(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