map0

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.

wfs.map0.json
{
  "$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

Der Dienst muss GeoJSON und CORS unterstützen. map0 fordert standardmäßig 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.