WFS 3.0 Server

Cardo bietet seit jeher verschiedene OGC Dienste an.

Der aktuelle Standard für WFS Dienste ist Version 3, dieser ist derzeit noch in Arbeit.

Hier wird derzeit der Weg beschritten, von XML basierten Diensten hin zu REST basierten Endpunkten, mit JSON als bevorzugtem Transportformat.

Mit der cardo Version 4.1.1 haben wir eine erste Implementierung dieses Standards vorgenommen. Schwerpunkt soll hier die Datenbereitstellung als GeoJSON sein.

Die Dokumentation zum Standard finden Sie hier (OGC API - Features - Part 1: Core)

Die Implementierung ist noch nicht vollständig und kann sich noch ändern. Dies betrifft vor allem die als "proprietär" benannten Argumente.

Generelle Hinweise

Alle Daten werden per Streaming geschrieben, es erfolgt kein Puffern der Daten. Der Speicherbedarf ist entsprechend gering und es gibt damit kein Standard-Limit.

Der Datenabruf erfolgt intern ausschließlich über Iwan7, die Ebenen werden bei Bedarf automatisch konvertiert.

Der Aufrufer muss für die Ebene das Export-Recht zugewiesen haben.

Der Parameter "Offset" beim Datenabruf wird z.Z. nicht unterstützt.

Laut aktueller GeoJSON Spezifikation müssen alle Daten in CRS84 sein, die Angabe einer CRS ist nicht mehr möglich. Wir ignorieren das vorerst.

Am Rande: Wir selber sehen das erzwungene Chunking (d.h. Limit/Offset) vor allem für eine Server <-> Server Kommunikation ehr als kontraproduktiv.

Die Dienste sind in jeder Installation nach folgendem Schema abrufbar.

  • Mit Anmeldung:

    net4/ogcapi/collections/

  • Ohne Anmeldung, d.h. als Benutzer "SYSTEM_ANONYMOUS_USER":

    net4/public/ogcapi/collections/


Verfügbare Ebenen : "ogcapi/collections/"

Entspricht 7.13. Feature collections.

Ruft eine Beschreibung aller verfügbaren Collection (=Ebenen) ab.

Hierbei werden alle Ebenen abgerufen, für die der Aufrufer über die Berechtigung "Export" verfügt.

Bsp.: https://IhrCardoServer/net4/ogcapi/collections/


Beschreibung einer Ebene : "ogcapi/collections/{collectionId}"

Entspricht 7.14. Feature collection.

Ruft die Beschreibung für die Collection (=Ebene, L-Nummer).

Bsp.: https://IhrCardoServer/net4/ogcapi/collections/L120

Erweitert wurde die Ausgabe um das Element properties.

Hier wird ein Array der Spaltendefinitionen der Ebenen angegeben.

Der Typ für die Spaltenbeschreibung ist folgendermaßen definiert:

{
  columnName:string;
  flags?:FieldAttributeFlags;
  type::DataType;
  length?:number;
}

Eigenschaften, (als Flags kombinierbar):

public enum FieldAttributeFlags
{
  Default = 0,
  IsNotNull = 1,
  ComputedColumn = 2,
  RowId = 4,
  HasIndex = 8,
  UniqueValues = 16,
  HiddenSystemColumn = 32
}

Mögliche Datentypen sind:

public enum DataType
{
  Null,
  Boolean,
  SingleByte,
  Int16,
  UInt16,
  Int32,
  UInt32,
  Int64,
  UInt64,
  Double,
  DateTime,
  Text,
  Binary,
  Geom,
  Object
}

Daten einer Ebene : "ogcapi/collections/{collectionId}/items"

Entspricht 7.15. Features.

Bsp.:

  • Alle Datensätze, alle Spalten:

    https://IhrCardoServer/net4/ogcapi/collections/L120/items

  • Alle Daten, die die Bedingung "nenner = 17 und zaehler = 1" erfüllen:

    https://IhrCardoServer/net4/ogcapi/collections/L120/items?filter=nenner == 17 and zaehler == 1

  • Alle ID Werte, die die Bedingung "nenner = 17 und zaehler = 1" erfüllen:

    https://IhrCardoServer/net4/ogcapi/collections/L120/items?filter=nenner == 17 and zaehler == 1&propertyNames=ID

  • Alle Geometrien, wo geom_flaeche kleiner 1000 ist http://IhrCardoServer/net4/ogcapi/collections/L159/items?filter=geom_flaeche<1000&propertyNames=geom

  • Alle ALK-Nummern, wo der Stand nicht Grundbuchstand ist:

    http://IhrCardoServer/net4/ogcapi/collections/L159/items?filter=stand!="Grundbuchstand"&propertyNames=alknr

Argumente
  • limit=n - Maximale Anzahl zurückzugebender Datensätze, per Default gibt es keine Beschränkung

  • bbox=x1,y1,x2,y2 - Filter auf die Boundings-Box der Elemente, wenn crs nicht angegeben ist, dann wird hier CRS84 (d.h. EPSG=4326) angenommen. Die 6 Argument Variante ist z.Z. nicht implementiert

  • crs=crs - crs in der die Koordinaten der BBox interpretiert werden (Epsg:4326 wenn nicht angegeben).

    Hiermit wird auch die Ausgabeprojektion gesteuert.

    Entgegen dem Standard geben wir die Daten in der Projektion aus, wie diese vorliegen (lt. GeoJSON Standard müsste es WG84 sein)

Propriertäre Eigenschaften

  • propertynames=a,b,c - optionale Liste der Attribute, die in der Abfrage zurückgegeben werden.

    Da die Geometrie auch nur eine "normale" Spalte ist, kann diese damit auch weggelassen werden. In dem Fall wird ein Feature mit null Geometrie erstellt.

  • filter=xxx ... hier kann ein Filter auf die Attribute angegeben werden. Z.Z. verwenden wir dazu unsere Expression-Syntax aus iwan7.

    Bsp.:

    NENNER == 17 AND zaehler == 5

    In(nenner,1,2,3,4) or ST_Intersects(geom,'SRID=4326;POINT(12 51)')

    Beachten Sie, dass die Spaltennamen denen der Quelle entsprechen. Bspw. die Geometrie oder Id, diese folgen keiner Namenskonvention. Die Attribute sind in der Beschreibung der Collection mit angegeben. Hintergrund ist, dass bspw. auch mehrere Geometriespalten vorhanden sein können, bzw. die ID Spalte nicht unbedingt "id" heißen muss.

    Die möglichen Operatoren sind hier dokumentiert.

Sind bbox und query angegeben, werden die Bedingungen mit UND kombiniert.


Datensatz einer Ebene : "ogcapi/collections/{collectionId}/items/{featureId}"

Ruft einen Datensatz einer Ebene ab, hier mit dem Id-Wert (sofern eine Id für die Quelle definiert ist.)

Bsp.: https://IhrCardoServer/net4/ogcapi/collections/L120/18735

Ist kein Datensatz mit der angegeben Id vorhanden, wir der Statuscode 404 generiert und ein leeres Objekt zurückgegeben.

Argumente
  • crs=crs - crs in der die Geometrien zurückgegeben werden sollen, Standardmäßig in der Projektion "as is"

Zuletzt geändert: 08.07.2020 09:25:40 (erstmals erstellt 21.02.2020)