GeoJSON

Das GeoJSON-Format eignet sich am besten dazu die Daten für eine weitere Prozessierung zu verwenden. Da es kein Paging gibt, kann die Dateigröße sehr anwachsen, was sich bei direkter Einbindung im Frontend nachteilig auf die Performance auswirken kann.

Voraussetzungen

Es muss eine Konfiguration hinterlegt werden, damit die Anfrage von Geodaten aktiviert ist.

Allgemeines

Anfragen von Daten im Format GeoJSON werden über die API v4 Schnittstelle durchgeführt. Dafür muss für die Anfrage der Header Accept: application/geo+json gesetzt werden.

Im Allgemeinen sind alle Filter der allgemeinen Datenschnittstelle auch für die Ausgabe als GeoJSON anwendbar. In dieser Dokumentation werden drei Parameter hervorgehoben, mit denen man den den Inhalt der Attribute beeinflussen kann - include, fields und classification_trees.

Zur Authentifizierung muss das API-Token, als URL-Parameter, im JSON-Body oder als Bearer-Token im HTTP-Header mitgesendet werden.

Zu beachten ist, dass eine implizite Filterung auf Geo-Objekte aktiv ist. Es werden keine Daten ohne Koordinaten ausgegeben.

Anfragen

Es können Einzelobjekte oder Ergebnisse von Suchen bzw. Inhaltssammlungen abgefragt werden. Dafür sind die Routen /things/<THING-ID> und /endpoints/<ENDPOINT-ID> vorgesehen. Folgend werden Beispiele für die Anfrage angeführt, wobei bei den Endpoints Beispiele für die Einschränkung der Attribute und Filterung angeführt werden.

Anfragen können als GET oder POST-Methoden gesendet werden.

Parameter

include

Inkludiert zusätzliche Felder in die Ausgabe.

fields

Schränkt die Ausgabe auf die angegebenen Felder ein.

classificationTrees

schränkt die ausgelieferten Klassifizierungen unter dc:classification auf einen Klassifizierungsbaum oder mehrere Klassifizierungsbäume ein.
Gültige Angaben sind eine einzelne UUID, mehrere Komma-getrennte UUIDs, oder ein Array mit UUIDs.
Hat nur eine Auswirkung wenn dc:classification mittels include oder fields angefordert wird.

Einzelobjekte

Die Anfrage eines Einzelobjektes liefert ein GeoJSON mit einem Feature.

Anfrage

curl --request GET \
  --url https://<URL>/api/v4/things/<THING-ID> \
  --header 'Accept: application/geo+json' \
  --header 'Authorization: Bearer <TOKEN>'

Antwort

{
  "type": "Feature",
  "id": "<THING-ID>",
  "geometry": {
    "type": "Point",
    "coordinates": [
      14.298621,
      46.607465
    ]
  },
  "properties": {
    "@id": "<THING-ID>",
    "@type": [
      "Place",
      "dcls:Örtlichkeit"
    ],
    "name": "dataCycle"
  }
}

Endpoints

Endpoints beinhalten Elemente einer gespeicherten Suche oder Inhaltssammlung und liefern eine FeatureCollection mit den Inhalten.

Anfrage

curl --request POST \
  --url https://<URL>/api/v4/endpoints/<ENDPOINT-ID> \
  --header 'Accept: application/geo+json' \
  --header 'Authorization: Bearer <TOKEN>' \
  --header 'Content-Type: application/json' \
  --data '{
    "filter": {
        "search": "Rosentaler"
    }
}'

Antwort

{
  "type": "FeatureCollection",
  "crs": {
    "type": "name",
    "properties": {
      "name": "urn:ogc:def:crs:EPSG::4326"
    }
  },
  "features": [
    {
      "type": "Feature",
      "id": "<THING-ID>",
      "geometry": {
        "type": "Point",
        "coordinates": [
          14.298621,
          46.607465
        ]
      },
      "properties": {
        "@id": "<THING-ID>",
        "@type": [
          "Place",
          "dcls:Örtlichkeit"
        ],
        "name": "dataCycle"
      }
    },
    {
      "type": "Feature",
      "id": "<THING-ID>",
      "geometry": {
        "type": "MultiLineString",
        "coordinates": [
          [
            [
              14.298621,
              46.607465
            ],
            [
              14.298379,
              46.607329
            ]
          ]
        ]
      },
      "properties": {
        "@id": "236bc505-af08-4e53-ae27-69809cd9fff7",
        "@type": [
          "Place",
          "dcls:Tour"
        ],
        "name": "Tour durchs Rosental"
      }
    }
  ]
}

Verfügbare Attribute

Basis (wird immer ausgeliefert)
  • @id
  • @type
Standard (außer bei Einschränkung durch fields)
  • name
Optional (nur bei Anforderung durch fields oder include)
  • dc:slug
  • dc:classification
    • @id
    • dc:path
  • image
    • @id
    • thumbnailUrl
  • dc:contentScore

Anfrage

curl --request POST \
  --url https://<URL>/api/v4/endpoints/<ENDPOINT-ID> \
  --header 'Accept: application/geo+json' \
  --header 'Authorization: Bearer <TOKEN>' \
  --header 'Content-Type: application/json' \
  --data '{
    "include": "dc:classification",
    "classification_trees": "<CLASSIFICATION-TREE-ID>",
    "fields": "@id,dc:classification.@id",
    "filter": {
        "search": "Rosentaler"
    }
}'

Antwort

{
  "type": "FeatureCollection",
  ...
  },
  "features": [
    {
      "type": "Feature",
      ...
      },
      "properties": {
        "@id": "<THING-ID>",
        "@type": [
          "Place",
          "dcls:Örtlichkeit"
        ],
        "dc:classification": [
          {
            "@id": "<CLASSIFICATION-ID>"
          },
          {
            "@id": "<CLASSIFICATION-ID>"
          },
        ]
      }
    },
    {
      ...
    }
  ]
}