Datenquellen
WFS
Vektordaten aus einem OGC Web Feature Service laden: In der Konfiguration stehen die Dienst-URL und der Name des Feature-Typs. map0 ruft die Daten per GetFeature als GeoJSON ab und lädt Ergebnisse bei WFS 2.0 seitenweise. Die Darstellung entspricht einem GeoJSON-Layer.
Ausprobieren: Den Netzwerk-Tab öffnen und die Seite neu laden. Die Bäume im Alsergrund werden mit count und startIndex in Seiten mit bis zu 1.000 Einträgen geladen, bis die gemeldete Gesamtzahl erreicht ist. Die Trinkbrunnen aus ganz Wien werden in einer Seite geladen und zu Clustern zusammengefasst. Ein Klick auf ein Objekt zeigt seine Attribute.
Konfiguration
url und typeNames legen den Dienst und den Feature-Typ fest. map0 erstellt daraus die GetFeature-Anfragen. Darstellung, Clustering, Popups und Hover-Tooltips werden wie bei einem geojson-Layer konfiguriert.
{
"$schema": "https://map0.net/schema/v1.json",
"version": 1,
"meta": { "title": "WFS" },
"map": { "center": [16.359, 48.222], "zoom": 14 },
"basemaps": [
{
"id": "grau",
"title": "Grey",
"type": "raster",
"url": "https://mapsneu.wien.gv.at/basemap/bmapgrau/normal/google3857/{z}/{y}/{x}.png",
"attribution": "© basemap.at",
"default": true
}
],
"layers": [
{
"id": "brunnen",
"type": "wfs",
"title": "Drinking fountains (clustered)",
"url": "https://data.wien.gv.at/daten/geo",
"typeNames": "ogdwien:TRINKBRUNNENOGD",
"cluster": { "enabled": true, "radius": 45 },
"style": {
"circle-color": "#0e7490",
"circle-radius": 6,
"circle-stroke-color": "#ffffff",
"circle-stroke-width": 1.5
},
"popup": { "title": "{{BASIS_TYP_TXT}}" },
"attribution": "Stadt Wien, data.wien.gv.at"
},
{
"id": "baeume-alsergrund",
"type": "wfs",
"title": "Tree cadastre, Alsergrund",
"url": "https://data.wien.gv.at/daten/geo",
"typeNames": "ogdwien:BAUMKATOGD",
"params": { "cql_filter": "BEZIRK=9" },
"pageSize": 1000,
"style": {
"circle-color": "#15803d",
"circle-radius": 4,
"circle-stroke-color": "#ffffff",
"circle-stroke-width": 1
},
"hover": { "content": "{{GATTUNG_ART}}" },
"popup": {
"title": "{{GATTUNG_ART}}",
"fields": [
{ "key": "PFLANZJAHR_TXT", "label": "Planted" },
{ "key": "BAUMHOEHE_TXT", "label": "Height" },
{ "key": "OBJEKT_STRASSE", "label": "Location" }
]
},
"attribution": "Stadt Wien, data.wien.gv.at"
}
]
}Was diese Demo zeigt
- Ein
wfs-Layer benötigturlundtypeNames. Voreingestellt sind WFS 2.0.0,application/jsonund EPSG:4326 - WFS-2.0-Ergebnisse werden seitenweise geladen:
pageSizelegt die Seitengröße fest (Standard: 5.000),limitdie maximale Gesamtzahl (Standard: 10.000) - Wenn der Server eine Gesamtzahl meldet, lädt map0 auch dann weiter, wenn eine Seite kleiner ausfällt als angefragt
paramsübergibt zusätzliche Parameter an den Dienst. Hier wähltcql_filterden Bezirk bereits auf dem Server aus- XML-Fehlerantworten werden auch dann als Fehler erkannt, wenn der Dienst HTTP 200 zurückgibt
- Dieselben Optionen für Darstellung, Clustering, Popups, Hover und
promoteIdwie bei GeoJSON
application/json in WGS84 an. outputFormat muss einem vom Dienst unterstützten GeoJSON-Format entsprechen, beispielsweise "geojson" bei MapServer. Die CORS-Header müssen den Zugriff von der eigenen Seite erlauben. Bei version: "1.1.0" sendet map0 eine einzelne Anfrage mit maxFeatures; seitenweises Laden wird für WFS 2.0 unterstützt.Wann eignet sich WFS?
WFS eignet sich, wenn eine Karte aktuelle Daten aus einem bestehenden Dienst abrufen soll. Bei jedem Neuladen wird eine neue Anfrage an den Dienst gesendet, sodass Änderungen in der Quelldatenbank in der Karte verfügbar werden. Filter wie cql_filter beschränken die Antwort auf die benötigten Objekte, sofern der Dienst sie unterstützt. Ladezeit und Datenmenge hängen vom Dienst und der Abfrage ab. Das voreingestellte limit begrenzt das Laden auf 10.000 Objekte. Für die Veröffentlichung als Datei kommt GeoParquet infrage, für größere Datensätze Vektorkacheln wie PMTiles. Bietet der Dienst auch OGC API Features an, lässt er sich über eine Collection-URL konfigurieren.