Tjänsten

WFS-tjänster nås genom en URL. För Stockholms stads Trafikkontors öppna data gäller länken https://openstreetgs.stockholm.se/geoservice/api//wfs där "DIN API-NYKEL" byts ut mot den API-nyckel som du har fått per e-post efter att du har begärt en API-nyckel .

Funktionerna

För att kunna anropa en WFS-tjänst behövs mer än bara adressen till tjänsten. Om du testade länken under rubriken "Tjänsten" märkte du säkert att det inte gav något vettigt resultat trots att du angav din API-nyckel?! Problemet är att tjänsten inte vet vad du efterfrågar. För att berätta vad man vill få ut av tjänsten behöver man ange detta i en parameter som heter request. Det finns många funktioner i WFS, men här är några av de viktigaste:

GetCapabilities

https://openstreetgs.stockholm.se/geoservice/api//wfs?request=GetCapabilities

GetCapabilities är en funktion som får tjänsten att returnera ett XML-dokument som beskriver vad som kan och vad som inte kan utföras med den specifika tjänst som man anropar. I taggen "OperationsMetadata" finns en lista av "Operations" vilket är de funktioner som finns tillgängliga i tjänsten.

GetCapabilities berättar även om vilken data som finns tillgänglig från tjänsten. Under taggen "FeatureTypeList" finns en beskrivning av vilken information man kan få ut. Funktionen anropas genom att ange GetCapabilities till URL-parametern "request".

DescribeFeatureType

DescribeFeatureType beskriver hur en datamängd från tjänsten är definierad, det vill säga vilka attribut (värdefält) med namn och datatyp som ett objekt i datamängden kan ha. Från GetCapabilities dokumentet kan vi få fram namnet på en datamängd genom att titta efter "name"-taggen inom varje "FeatureType". Till exempel ger länken nedan en definition av objekttypen Cykelpump.
https://openstreetgs.stockholm.se/geoservice/api//wfs?request=DescribeFeatureType&typeName=od_gis:Cykelpump_Punkt

Funktionen anropas genom att man anger DescribeFeatureType till URL parametern "request" och sedan namnet på en datatyp till URL-parametern "typeName".

GetFeature

GetFeature är funktionen som hämtar de faktiska objekten med värden från WFS-tjänsten. Exempelvis skickar man följande fråga för att hämta värden för alla cykelpumpar från tjänsten:
https://openstreetgs.stockholm.se/geoservice/api//wfs?request=GetFeature&typeName=od_gis:Cykelpump_Punkt

GetFeature stödjer däremot många fler parametrar för att förfina sitt resultat. Till exempel har den stöd för parametern "cql_filter" vilket tillåter användaren att skicka med CQL-frågor (se Fortsatt läsning) som filtrerar objekten baserat på dess värden. Till exempel kan man söka fram alla cykelpumpar vars adress är på Bergslagsplan:
https://openstreetgs.stockholm.se/geoservice/api//wfs?request=GetFeature&typeName=od_gis:Cykelpump_Punkt&cql_filter=Adress='Bergslagsplan'

Även utdataformat kan ändras genom parametern outputFormat. Till exempel skrivs förgående fråga i JSON-format så här:
https://openstreetgs.stockholm.se/geoservice/api//wfs?request=GetFeature&typeName=od_gis:Cykelpump_Punkt&cql_filter=Adress='Bergslagsplan'&outputFormat=JSON

Funktionen anropas genom att ange GetFeature till URL-parametern "request" och namnet på den datatyp man vill hämta till URL-parametern "typeName".


QGIS

QGIS är en kostnadsfri applikation för att visualisera geodata. Här följer en kort beskrivning av hur man använder QGIS för att enkelt hämta data från en WFS-tjänst. Mer information om hur man kan arbeta med QGIS kan du hitta i de övriga guiderna om QGIS; Använd QGIS för att visualisera data och Använd QGIS med stora datamängder.

För att visa data från en WFS-tjänst i QGIS, börja med att skapa en uppkoppling. Det gör man genom att välja "Lägg till WFS-lager..." i lagermenyn.
Lägg till WFS-lager

Klicka sedan på Ny för att skapa en ny uppkoppling.
Koppla upp WFS

Ange ett lämpligt namn på tjänsten och ange webbadressen till tjänsten. Det är fördelaktigt att ange 1.1 vid ”Version” då det i dagsläget är den version som fungerar bäst för QGIS. Väljer man Auto blir det annars version 2.0 som kan leda till att QGIS inte kan hämta data. Tryck OK för att skapa uppkopplingen.
Skapa en ny WFS-anslutning

Klicka Koppla upp för att visa tjänstens datamängder. Markera den datamängd du vill visa och klicka Lägg till.
Lägg till WFS-lager

Datamängden visas nu i kartvyn i QGIS och finns tillgänglig för fortsatta analyser. QGIS kartvy

Blandade geometrityper

Trafikkontorets öppna data publicerar vissa lager med blandade geometrityper. QGIS saknar stöd för att tematisera (färgsätta) på flera geometrityper i samma lager vilket gör att alla geometrier inte syns. Dessa lager slutar på "_Geom". Bäst är att skapa separata lager för varje geometrityp för att samtliga objekt ska kunna ritas ut. Detta kan man göra genom att välja "Skapa fråga" längst ner i menyn när man ska lägga till lagret i QGIS.
Skapa fråga för blandade geometri-typer

I fältet "Filter" kan en filtreringsfråga skrivas, till exempel "GEOM_TYPE = 'POLYGON'" eller "GEOM_TYPE = 'LINE'", för att plocka ut en viss geometrityp från de datamängder som har blandade geometrityper. Värdet GEOM_TYPE finns endast med i de datamängder som har blandade geometrityper. Tyck OK följt av Lägg till för att lägga till det filtrerade lagret till QGIS.
Exempel på filtreringsfråga

Upprepa för samtliga geometrityper om hela datamängden önskas visas.

Fortsatt läsning

Mer information om WFS-tjänster finns att läsa på följande sidor:
OGC WFS Standard
GeoServer WFS dokumentation
GeoServer CQL handledning