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.
Es muss eine Konfiguration hinterlegt werden, damit die Anfrage von Geodaten aktiviert ist.
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.
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.
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.
Die Anfrage eines Einzelobjektes liefert ein GeoJSON mit einem Feature.
curl --request GET \
--url https://<URL>/api/v4/things/<THING-ID> \
--header 'Accept: application/geo+json' \
--header 'Authorization: Bearer <TOKEN>'
{
"type": "Feature",
"id": "<THING-ID>",
"geometry": {
"type": "Point",
"coordinates": [
14.298621,
46.607465
]
},
"properties": {
"@id": "<THING-ID>",
"@type": [
"Place",
"dcls:Örtlichkeit"
],
"name": "dataCycle"
}
}
Endpoints beinhalten Elemente einer gespeicherten Suche oder Inhaltssammlung und liefern eine FeatureCollection mit den Inhalten.
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"
}
}'
{
"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"
}
}
]
}
@id
@type
fields
)name
fields
oder include
)dc:slug
dc:classification
@id
dc:path
image
@id
thumbnailUrl
dc:contentScore
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"
}
}'
{
"type": "FeatureCollection",
...
},
"features": [
{
"type": "Feature",
...
},
"properties": {
"@id": "<THING-ID>",
"@type": [
"Place",
"dcls:Örtlichkeit"
],
"dc:classification": [
{
"@id": "<CLASSIFICATION-ID>"
},
{
"@id": "<CLASSIFICATION-ID>"
},
]
}
},
{
...
}
]
}