De entitetsbasserede WFS-tjenester kan til anvendes på to forskellige måder: Gennem separate REST-kald og gennem GIS-klienter, som QGIS, ArcGIS og MapInfo. Anvendelsesmønsteret for brug de entitetsbaserede WFS-tjenester forløber i begge tilfælde således:
Selvom det er nøjagtigt samme data der returneres i begge tilfælde, er arbejdsgangen ved brug af separate REST-kald og GIS-klienter lidt forskellig.
Sideinformation
Hvis man vil tilgå de entitetsbaserede WFS-tjenester gennem almindelige REST-kald, skal man først kalde den pågældende WFS-tjeneste med GetCapabilities-metoden:
Metode: GetCapabilities | |
URL | https://wfs.datafordeler.dk/<register>/<register>_WFS/<version>/WFS?service=WFS&version=2.0.0&request=GetCapabilities&apikey={YOUR_API_KEY} |
HTTP-metode | GET |
Returværdier |
|
Adgang | IT-system med API-nøgle, OAuth Shared Secret eller OAuth Certifikat. |
GetCapabilities kan kaldes med følgende parametre:
Parameter | Type | Beskrivelse | Obligatorisk |
register | String | Angiver hvilket register der skal hentes oplysninger for. Se Tabel 2 for en oversigt over registre der udstilles via WFS. | Ja |
service-version | String | Angiver hvilken serviceversion af tjenesten der kaldes | Ja |
service | String | Angiver hvilken service man forsøger at kalde. Kaldes kun værdien ”WFS”. | Ja |
OGC-version | String | Angiver hvilken OGC WFS-version der anvendes. Kan kaldes kun med værdien "2.0.0" | Ja |
Denne tjeneste returnerer altid en xml-fil ved HTTP 200 – OK. Filen indeholder metadata om WFS-tjenesten, der beskriver hvilke lag der findes for det pågældende register.
Et eksempel på et kald til tjenesten ved brug af API-nøgle:
| https://wfs.datafordeler.dk/BBR/BBR_WFS/1.0.0&WFS?service=WFS&version=2.0.0&request=GetCapabilities&apiKey= {YOUR_API_KEY} |
Svaret returnerer en længere XML-fil, som blandt andet indeholder elementet FeatureTypeList:
<FeatureTypeList> <FeatureType xmlns:bbr_v001="http://datafordeler.dk/schemas/bbr/v001/gml3"> <Name>bbr_v001:tekniskanlaeg_current</Name> <Title>tekniskanlaeg_current</Title> <Abstract>bbr_tekniskanlaeg_v001_current</Abstract> <DefaultCRS>urn:ogc:def:crs:EPSG::25832</DefaultCRS> <ows:WGS84BoundingBox> <ows:LowerCorner>-60.0 54.5</ows:LowerCorner> <ows:UpperCorner>15.2 84.0</ows:UpperCorner> </ows:WGS84BoundingBox> </FeatureType> <FeatureType xmlns:bbr_v001="http://datafordeler.dk/schemas/bbr/v001/gml3"> <Name>bbr_v001:tekniskanlaeg_hist</Name> <Title>tekniskanlaeg_hist</Title> <Abstract>bbr_tekniskanlaeg_v001_hist</Abstract> <DefaultCRS>urn:ogc:def:crs:EPSG::25832</DefaultCRS> <ows:WGS84BoundingBox> <ows:LowerCorner>-60.0 54.5</ows:LowerCorner> <ows:UpperCorner>15.2 84.0</ows:UpperCorner> </ows:WGS84BoundingBox> </FeatureType> </FeatureTypeList> |
Fra denne liste fremgår det at der for BBR udstilles to lag:
Ønsker man at hente data for et af disse lag kan man således bruge DescribeFeatureType-metoden til først at hente information om det specifikke lag:
Metode: DescribeFeatureType | |
URL | https://wfs.datafordeler.dk//_WFS//WFS?service=&version=<OGC-version>&request=DescribeFeatureType&typeName=<typeName> |
HTTP-metode | GET |
Returværdier |
|
Adgang | IT-system med API-nøgle, OAuth Shared Secret eller OAuth Certifikat. |
DescribeFeatureType kan kaldes med følgende parametre:
Parameter | Type | Beskrivelse | Obligatorisk |
register | String | Angiver hvilket register der skal hentes oplysninger for. Se Tabel 2 for en oversigt over registre der udstilles via WFS. | Ja |
service-version | String | Angiver hvilken serviceversion af tjenesten der kaldes | Ja |
service | String | Angiver hvilken service man forsøger at kalde. Kaldes kun med værdien ”WFS”. | Ja |
Metode | String | DescribeFeatureType + TypeName | |
OGC-version | String | Angiver hvilken OGC WFS-version der anvendes. Kaldes kun med værdien "2.0.0" | Ja |
typeName | String | Angiver hvilket lag der skal hentes metadata for. Hvis denne ikke angives, hentes metadata for alle tilgængelige lag. | Nej |
Denne tjeneste returnerer altid en xml-fil ved HTTP 200 – OK. Filen indeholder et metadataskema om WFS-tjenesten, der beskriver hvilke data der findes for det pågældende lag.
Et eksempel på et kald til tjenesten ved brug af API-nøgle:
https://wfs.datafordeler.dk/BBR/BBR_WFS/1.0.0&WFS?service=WFS&version=2.0.0&request=DescribeFeatureType&typeName=tekniskanlaeg_current&apiKey=placeholderNoegle |
Svaret returnerer en længere XML-fil, som blandt andet indeholder elementet complexType:
<xsd:complexType name="tekniskanlaeg_currentType"> <xsd:complexContent> <xsd:extension base="gml:AbstractFeatureType"> <xsd:sequence> <xsd:element maxOccurs="1" minOccurs="0" name="forretningshændelse" nillable="true" type="xsd:string"/> <xsd:element maxOccurs="1" minOccurs="0" name="forretningsområde" nillable="true" type="xsd:string"/> <xsd:element maxOccurs="1" minOccurs="0" name="forretningsproces" nillable="true" type="xsd:string"/> <xsd:element maxOccurs="1" minOccurs="0" name="id_namespace" nillable="true" type="xsd:string"/> <xsd:element maxOccurs="1" minOccurs="0" name="id_lokalId" nillable="true" type="xsd:string"/> <xsd:element maxOccurs="1" minOccurs="0" name="kommunekode" nillable="true" type="xsd:string"/> ... # Flere properties <xsd:element maxOccurs="1" minOccurs="0" name="tek109Koordinat" nillable="true" type="gml:PointPropertyType"/> ... # Flere properties </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> |
Herfra kan man læse hvilke attributter der eksisterer på et givent lag og hvilken type den pågældende attribut er. Man kan bruge oplysningerne fra dette kald til at sortere eller filtrere data når man efterfølgende kalder WFS-tjenesterne med GetFeature-metoden. Bemærk at tek109Koordinat er af typen ”gml:PointPropertyType”, hvilket er en geometri. Man kan derfor i GetFeature-metoden lave geografisk filtrering af data på baggrund af denne attribut ved hjælp af bbox- eller cql_filter-parameteren.
For at hente data for det pågældende lag, skal man bruge GetFeature-metoden:
Metode: GetFeature | |
URL | https://wfs.datafordeler.dk/<register>/<register>_WFS/<service-version>/WFS?service=<service>& |
HTTP-metode | GET |
Returværdier | · Returnerer HTTP 200 – OK, ved succes. · Returnerer HTTP 400 – Bad Request, ved angivelse af forkerte parametre. · Returnerer HTTP 404 – Not Found, hvis den angivne ressource ikke kan findes. · Returnerer HTTP 500 – Internal Server Error, hvis der er sket en ukendt fejl |
Adgang | IT-system med API-nøgle, OAuth Shared Secret eller OAuth Certifikat. |
GetFeature kan kaldes med følgende parametre:
Parameter | Type | Beskrivelse | Obligatorisk |
register | String | Angiver hvilket register der skal hentes oplysninger for. Se Tabel 2 for en oversigt over registre der udstilles via WFS. | Ja |
service-version | String | Angiver hvilken version af servicen registeret kan kalde. | Ja |
service | String | Angiver hvilken service man forsøger at kalde. aldes kun med værdien ”WFS”. | Ja |
OGC-version | String | Angiver hvilken OGC WFS-version der anvendes. Kaldes kun med værdien "2.0.0" | Ja |
typeName | String | Angiver hvilket lag der skal hentes metadata for. Hvis denne ikke angives, hentes metadata for alle tilgængelige lag. | Nej |
count | String | Angiver det maksimal antal features der returneres. Mulige værdier mellem 1 og 10.000. | Nej |
startindex | String | Startposition for paging | Nej |
outputFormat | String | Outputformatet på data (GML eller GeoJSON). Se afsnit 2.5. | Nej |
bbox | String | Bounding box for geometrisk filtrering (kan ikke kombineres med cql_filter). Se afsnit 2.7.1. | Nej |
cql_filter | String | CQL (Common Query Language) expression for attribut-/geometrisk filtrering (kan ikke kombineres med bbox). Se afsnit 2.7.2. | Nej |
sortBy | String | Navnet på feltet der ønskes sorteret på. Tilføj +D (descending) for omvendt sortering. | Nej |
Denne tjeneste returnerer enten en xml- eller en json-fil ved HTTP 200 – OK. Filen indeholder data fra WFS-tjenesten for det pågældende lag.
Et eksempel på et kald til tjenesten ved brug af API-nøgle:
https://wfs.datafordeler.dk/BBR/BBR_WFS/1.0.0&WFS?service=WFS&version=2.0.0&request=GetFeature&typeName=tekniskanlaeg_current&outputFormat=json&apiKey=placeholderNoegle |
Svaret returnerer en længere json-fil med følgende data:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"id": "tekniskanlaeg_current.fid--7d828cb6_198a8bc895e_-72d8",
"geometry": {
"type": "Point",
"coordinates": [
563733.21,
6242798.55,
0
]
},
"geometry_name": "tek109Koordinat",
"properties": {
"forretningshændelse": "TekniskAnlæg",
"forretningsområde": "54.15.05.05",
"forretningsproces": "4",
"id_namespace": "http://data.gov.dk/bbr/tekniskanlæg",
"id_lokalId": "407bdc4d-dd2b-4c69-ab2f-c382d9a6e8a2",
"kommunekode": "0710",
... # Flere properties
}
},
... # Flere features
]
} |
Herfra kan lave gentagne kald med forskellige filtrerings- eller pagingsparametre for at hente alt det ønskede data.
I stedet for at tilgå de entitetsbaserede WFS-tjenester gennem almindelige REST-kald, kan man vælge at gøre det gennem en GIS-klient. GIS-klienter er software der blandt andet er specialudviklet til behandling af geodata der udstilles gennem WFS-tjenester. I dette eksempel bruges GIS-klienten QGIS.
Når programmet åbnes, ser brugerfladen ud som vist i Figur 18.

Hvis man dobbeltklikker ”OpenStreetMap” til venstre i ”Browser”-menuen, vil et verdenskort blive tilføjet til brugerfladen og laget ”OpenStreetMap” vil fremgå af ”Layers”-fanen. Zoomer man ind på Danmark ser klienten ud som vist i Figur 19 .

For at oprette forbindelse til en WFS-tjeneste, højreklikker man ”WFS / OGC API – Features” i ”Browser”-menuen og klikker ”New Connection…” som vist i Figur 20 .

Klikker man ”New Connection…” kan man nu konfigurere en ny WFS-forbindelse. Her sættes URL’en, autentifikation og WFS-versionsnummer. Man kan også sætte andre parametre såsom ”Max. number of features”, hvilket svarer til count-parameteren i GetFeature-metoden. For at lave et kald til WFS-tjenesten for BBR indsættes værdierne som vist i Figur 21. Bemærk at ”Max. number of features” er sat til 100.

Klikker man ”OK”, vil ”Datafordeler BBR” fremgå som et punkt under ”WFS / OGC API – Features” i ”Browser”-menuen. Dobbeltklikker man derefter ”Datafordeler BBR” laver QGIS et GetCapabilities-kald til Datafordeleren, som derefter vil vise alle tilgængelige lag for BBR, som vist i Figur 22.

QGIS kalder herefter automatisk DescribeFeatureType og bruger resultatet til at konfigurere attributtabeller korrekt, så man ikke selv behøver at tage stilling til hvordan data er struktureret. Man kan derfor blot dobbeltklikke et af lagene, for eksempel tekniskanlaeg_current, hvorefter klienten laver et GetFeature-kald til Datafordeleren, tilføjer det pågældende lag i ”Layers”-fanen og viser det resulterende data på kortet, som vist i Figur 23.

Herfra kan blot navigere kortet og klikke på datapunkterne for at finde det ønskede data.