PDOK / NGR documentatie¶
Welkom op de documentatiepagina van Publieke Dienstverlening op de Kaart (PDOK) en het Nationaal GeoRegister (NGR). Deze pagina beschrijft de geo-APIs die aangeboden worden door PDOK/NGR waarmee ontwikkelaars kaartbeelden kunnen genereren, gegevens kunnen opvragen en eenvoudige ruimtelijke analyses kunnen uitvoeren. De belangrijkste webservices zijn:
- de Web Map Service (WMS) - de zogenaamde view service genereert een statische kaartuitsnedes van geo-informatie in een raster formaat zoals PNG, GIF of JPEG.
- de Web Feature Service (WFS) - de zogenaamde download service is een protocol voor het opvragen van geografische vector data, al dan niet via een ruimtelijk filter.
Deze services worden ook aangeboden door data.overheid.nl, Atlas Leefomgeving, Geoportaal Waterschappen, Ruimtelijkeplannen.nl en internationale open data portalen zoals data.gov.uk en http://www.data.gov/.
Doel, feedback en bijdragen¶
Het doel van de documentatie is om gebruikers handvaten te geven om snel aan de slag te kunnen met Nederlandse geodata. Het geeft kort en bondig overzicht van de basisfaciliteiten- en functionaliteiten van PDOK en NGR en verwijst z.s.m. naar uitgebreidere infromatiebronnen.
Heb je feedback over de documentatie of vragen over (het gebruik van) de geo-APIs? Post een issue in de bug tracker, een bericht op het forum, stuur een email naar s punt nedkov at geonovum punt nl of een tweet naar @SimeonNedkov.
Dit is een open source project, je kan op de volgende manieren bijdragen:
- bugs en fouten melden in de issue tracker.
- voorstellen en suggesties voor verbeteringen en/of uitbreidingen indienen in de issue tracker.
- uitbreidingen aan de documentatie, voorbeelden, handleidingen, etc. insturen via GitHub pull requests.
Aan deze documentatie hebben bijgedragen:
De documentatie is ontwikkeld in opdracht van Geonovum en wordt beheerd door @SimeonNedkov.
Notitie
Deze website gebruikt Piwik om bezoekersaantallen te registreren. We anonimiseren IP adressen en respecteren uw Do Not Track instellingen.
Inhoudsopgave¶
Maak een kaart met …¶
De geo services en APIs van PDOK, NGR, data.overheid.nl, e.a. komen in een aantal smaken. De view services (WMS, WMTS en TMS) leveren statische kaarbeelden (PNG, JPG) en zijn geschikt voor het visualiseren van achtergrondkaarten en grote landsdekkende datasets zoals de Actueel Hoogtebestand Nederland. De download service (WFS) levert geografische vector data en de bijbehorende administratieve gegevens in bijv. GeoJSON.
De webservices en APIs van PDOK, NGR, e.a. zijn op verschillende manieren te bekijken en downloaden.
PDOK Kaart¶
Met PDOK Kaart kun je met een aantal klikken een eenvoudig kaartje maken met gegevens uit PDOK, NGR, de geo services van data.overheid.nl e.a. PDOK Kaart stelt je in staat om markers en lijnen te tekenen en van labels te voorzien of deze uit een kommagescheiden (CSV) of KML bestand te laden.
De gegenereerde PDOK Kaart kunt u opslaan en het bijv. mailen naar vrienden en collega’s of embedden in uw blog, website, CMS, etc.
PDOK Kaart Wizard is uitermate geschikt voor het maken van eenvoudige kaartjes voor bijv. contactpagina’s en routebeschrijving, of voor het visualiseren van basisregistraties en -datasets bijv. de Lange-afstandswandelroutes.
Zie de PDOK Kaart handleiding voor meer informatie.
Leaflet¶
De download service kunnen we gebruiken om bijv. 100 panden uit de Basisregistratie Adressen en Gebouwen (BAG) op een Leaflet kaart te tonen.
De URL van de BAG WFS API is:
http://geodata.nationaalgeoregister.nl/bag/wfs
Je vindt deze o.a. in het Nationaal GeoRegister door te zoeken naar BAG
en te filtreren op Downloadbare data
. De eerste 100 gebouwen uit de BAG halen we middels een HTTP GET request op in combinatie met de volgende query parameters:
service = WFS
request = GetFeature
typeName = bag:pand
count = 100
startIndex = 0
srsName = EPSG:4326
outputFormat = json
Het GeoJSON resultaat kun je bijv. in Leaflet visualiseren m.b.v. van de L.geoJson()
functie.
Naast het ophalen van features ondersteunt de WFS API het toepassen van (ruimtelijke) filters en het uitvoeren van eenvoudige ruimtelijke analyses, zie de WFS documentatie voor meer informatie.
QGIS¶
QGIS is een open source geografisch informatiesysteem (GIS) welk geografische gegevens kan visualiseren, bewerken en analyseren. QGIS ondersteunt de gangbare geo bestandsformaten zoals Shapefiles, KML, GML, GeoJSON, etc. en de geo services en APIs van PDOK , NGR, data.overheid.nl, e.a. Gegevens kunnen gevisualiseerd, getransformeerd en gedownload worden zodat ze te gebruiken zijn in Mapbox, CartoDB, Google Maps/Earth, e.a.

PDOK/INSPIRE plugins - achtergrondkaart¶
De PDOK en INSPIRE plugins geven snel en makkelijk toegang tot veel Nederlandse geodata.
Met de PDOK Services Plugin kun je eenvoudig door de geodata van PDOK zoeken. Installeer de plugin via het Plugins
-> Manage and Install Plugins
menu. Klik op het oranje +PDOK
knopje links van het PDOK Geocoder
veld om de beschikbare PDOK datasets te zien. Zoek op bijv. achtergrond
om een lijst van de beschikbare achtergrondkaarten te zien.

WMS / WMTS - Actueel Hoogtebestand Nederland¶
Ga als volgt te werk om de view service van de Actueel Hoogtebestand Nederland dataset aan te spreken in QGIS.
- In het hoofdmenu klik op
Layer
->Add Layer
->Add WMS / WMTS Layer
- Klik op
New
- Vul een naam in in bij
Name
- Plak de WMS URL (
http://geodata.nationaalgeoregister.nl/ahn2/wms?service=wms
) in hetURL
veld en klik opOK
- Klik op
Connect
- Kies een van de lagen en klik op
Add
Klik op View
-> Identify Features
en klik op de kaart om de hoogte op te halen.
In Geo services en APIs lees je meer over de verschillende view services. Geodata in web apps laat zien hoe je view services in Leaflet en OpenLayers kan laden.
WFS - Zeer kwetsbare gebieden¶
Ga als volgt te werk om de download service van bijv. de Zeer kwetsbare gebieden dataset aan te spreken in QGIS:
- In het hoofdmenu klik op
Layer
->Add Layer
->Add WFS Layer
- Klik op
New
- Vul een naam in in bij
Name
- Plak de WFS URL (
http://ags101.prvgld.nl/arcgis/services/INSPIRE_ov/MapServer/WFSServer
) in hetURL
veld en klik opOK
- Klik op
Connect
- Kies een van de lagen en klik op
Add
- De gekozen laag verschijnt in de
Layers
pane - Klik met de rechtermuisknop op de laag en selecteer
Zoom to layer
In Web Feature Service (WFS) lees je meer over de verschillende view services. Geodata in web apps laat zien hoe je download services in Leaflet en OpenLayers kan laden.
CartoDB (en Mapbox)¶
De Nederlandse geo services en APIs leveren, volgens de geldende standaarden, gegevens als Geography Markup Language (GML) in het Nederlandse Rijksdriehoekscoordinatenstelsel (RD). Om ze geschikt te maken voor Mapbox, CartoDB, Google Maps e.a. dienen ze getransformeerd te worden naar Shapefiles/GeoJSON en het WGS84 coordinatenstelsel.
QGIS¶
In QGIS gaat het downloaden en transformeren als volgt:
- Klik met de rechtermuisknop op de WFS dataset die je wilt downloaden en transformeren en selecteer
Save As..
- Kies ESRI Shapefile, GeoJSON of KML uit het
Format
menu - Kies
EPSG:4326 - WGS84
uit hetCRS
menu - Klik op
OK

Het nieuwe bestand kun je uploaden in CartoDB, gebruiken als databron in Mapbox Studio of visualiseren in Google Earth.
ogr2ogr¶
ogr2ogr is een command line utility waarmee gegevens uit een groot aantal bronnen gelezen en getransformeerd kunnen worden.
ogr2ogr -f GeoJSON bag.geojson WFS:"http://geodata.nationaalgeoregister.nl/bagviewer/wfs" \
-t_srs EPSG:4326 bagviewer:pand
Zie de ogr2ogr handleiding voor meer informatie.
Notitie
Deze pagina geeft een globaal overzicht van de OGC standaarden en services. Het hoofddoel is deze te demystificeren. Raadpleeg de documentatie van GeoServer voor een volledige beschrijving. Is onderstaande te beknopt opgeschreven of heb je ideeën/suggesties hoe het beter kan? Mis je cruciale informatie om aan de slag te kunnen? Laat het ons weten!
Geo services en APIs¶
De Nederlandse geo-infrastructuur ontsluit gegevens middels een aantal Open Geospatial Consortium (OGC) standaarden. De Open Geospatial Consortium (OGC) is een internationale organisatie die de leiding heeft in de ontwikkeling van interoperabele standaarden voor georuimtelijke en plaatsgebonden diensten. De belangrijkste OGC standaarden in gebruik in Nederland zijn de
- de Web Map Service (WMS) - deze zogenaamde view service genereert een statische kaartuitsnedes van geo-informatie in een raster formaat zoals PNG, GIF of JPEG.
- de Web Feature Service (WFS) - deze zogenaamde download service is een protocol voor het opvragen van geografische vector data en de daarbij behorende attributen, al dan niet via een ruimtelijk filter.
Elk W*S dienst heeft een URL die met HTTP GET en POST requests bevraagd wordt. De WMS GetMap request haalt bijv. een kaartbeeld op.

De services ondersteunen een aantal requests waarmee het mogelijk is om kaartbeelden en vector data op te vragen, filters toe te passen en ruimtelijke analyses uit te voeren.
De eigenschappen van een service zijn in de Capabilities document beschreven. De GetCapabilities
request haalt deze als volgt op:
http://mygeoserver.example.com/ogc-service?
service=WMS/WFS/WMTS/WCS
request=GetCapabilities
In de praktijk worden de services zelden direct bevraagd. Het is gebruikelijker om ze via bijv. OpenLayers, Leaflet, QGIS, ogr2ogr, Python, etc. te benaderen.
Het overgrote deel van de gegevens in het NGR is als WMS/WFS/WCS beschikbaar, evenals de landsdekkende datasets die door PDOK beheerd worden.
W*S services en APIs worden ook aangeboden door data.overheid.nl, Atlas Leefomgeving, Geoportaal Waterschappen, Ruimtelijkeplannen.nl e.a.
De GeoServer documentatie geeft een uitgebreide en gedetailleerde beschrijving van de OGC geo services en APIs.
Web Feature Service (WFS)¶
De Web Feature Service is een webservice voor het opvragen van geografische vector data en de bijbehorende administratieve gegevens. De belangrijke requests zijn:
- GetCapabilities: voor het bekijken van de mogelijkheden van de service
- DescribeFeatureType: haalt de beschrijving op van een of meerdere objecten
- GetFeature: haalt een of meerdere geometrieeen en de bijbehorende attributen op. Deze operatie kan gecombineerd worden met ruimtelijke of attribuut filters en een output-formaat keuze (afhankelijk van implementatie: bijv. GML, SHP, JSON, KML, CSV)
Zie de specificatie voor een volledige beschrijving van de WFS standaard. In de GeoServer WFS documentatie lees je in detail hoe je WFS endpoints kan bevragen.
In Geodata in web apps lees je hoe je WFS in Leaflet en OpenLayers aanspreekt. In Op de desktop: QGIS lees je hoe je WFS data kan downloaden met QGIS.
GetCapabilities¶
De functionaliteit van een WFS endpoint wordt beschreven in een Capabilities document die middels een GetCapabilities request opgehaald kan worden:
http://geodata.nationaalgeoregister.nl/bag/wfs?
service=WFS&
request=GetCapabilities
Resultaat: een XML document waarin o.a. de opgeslagen data types, lagen beschreven worden, ondersteunde coordinatenstelsels, etc.
<wfs:WFS_Capabilities version="2.0.0" xsi:schemaLocation="http://www.opengis.net/wfs/2.0 http://geodata.nationaalgeoregister.nl/schemas/wfs/2.0/wfs.xsd http://inspire.ec.europa.eu/schemas/common/1.0 http://inspire.ec.europa.eu/schemas/common/1.0/common.xsd http://inspire.ec.europa.eu/schemas/inspire_dls/1.0 http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd" updateSequence="1943">
<ows:ServiceIdentification>...</ows:ServiceIdentification>
<ows:ServiceProvider>...</ows:ServiceProvider>
<ows:OperationsMetadata>...</ows:OperationsMetadata>
<FeatureTypeList>
<FeatureType></FeatureType>
<FeatureType>
<Name>bag:pand</Name>
<Title>pand</Title>
<Abstract>pand</Abstract>
<ows:Keywords>
<ows:Keyword>pand</ows:Keyword>
<ows:Keyword>features</ows:Keyword>
</ows:Keywords>
<DefaultCRS>urn:ogc:def:crs:EPSG::28992</DefaultCRS>
<ows:WGS84BoundingBox>
<ows:LowerCorner>3.2800546964714012 50.748745396375774</ows:LowerCorner>
<ows:UpperCorner>7.224161199744223 53.48515806526503</ows:UpperCorner>
</ows:WGS84BoundingBox>
<MetadataURL xlink:href="http://www.nationaalgeoregister.nl/geonetwork/srv/dut/xml.metadata.get?uuid=aa3b5e6e-7baa-40c0-8972-3353e927ec2f"/>
</FeatureType>
<FeatureType>...</FeatureType>
<FeatureType>...</FeatureType>
<FeatureType>...</FeatureType>
</FeatureTypeList>
<fes:Filter_Capabilities>...</fes:Filter_Capabilities>
</wfs:WFS_Capabilities>
Op de GeoServer WFS GetCapabilities documentatiepagina lees je meer over de componenten van de Capabilities document.
GetFeature¶
Met de GetFeature request is het mogelijk om geometrieën en attributen op te halen. De volgende request haalt 100 gebouwen op uit de Basisregistratie Adressen en Gebouwen
http://geodata.nationaalgeoregister.nl/bag/wfs?
service=WFS&
request=GetFeature&
typeName=bag:pand&
count=100&
startIndex=0&
outputFormat=json
Resultaat: een GeoJSON document met daarin de polygonen van de voetafdruk en attributen van elk gebouw. Voor meer informatie over de count en startIndex parameters, zie onze handleiding.
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"id": "pand.7871844",
"geometry_name": "geometrie",
"properties": {
"identificatie": 856100000350209,
"bouwjaar": 1941,
"status": "Pand in gebruik",
"gebruiksdoel": "woonfunctie",
"oppervlakte_min": 147,
"oppervlakte_max": 147,
"aantal_verblijfsobjecten": 1,
"actualiteitsdatum": null
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
179753.466,
405278.319
],
[
179750.226,
405277.631
],
...
[
179753.466,
405278.319
]
]
]
}
},
{...}
]
}
Zie de GeoServer WFS GetFeature documentatie voor een volledige beschrijving van deze request.
Web Map Service (WMS)¶
De Web Map Service is een webservice voor het ophalen van kaartbeelden in een raster formaat zoals PNG, JPEG en GIF. Het is te vergelijken met de static maps APIs van Mapbox en Google Maps

WMS kent minimaal 3 operaties:
- GetCapabilities: retourneert een lijst van beschikbare kaartlagen, projecties, formaten, enz.
- GetMap: retourneert een statisch afbeelding van een kaart
- GetFeatureInfo: geeft attribuutgegevens van een object op een bepaalde plek op de kaart
Zie de WMS specificatie voor een volledige beschrijving. In de GeoServer documentatie lees je hoe je WMS concreet kan bevragen.
In Geodata in web apps lees je hoe je WMS met behulp van Leaflet en OpenLayers aanspreekt.
GetCapabilities¶
De functionaliteit van een WMS endpoint wordt beschreven in een Capabilities document die middels een GetCapabilities request opgehaald wordt:
http://geodata.nationaalgeoregister.nl/ahn2/wms?
service=WMS&
request=GetCapabilities
Resultaat: een XML document waarin o.a. de opgeslagen data types, lagen beschreven worden, ondersteunde coördinatenstelsels, etc.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | <WMS_Capabilities xmlns="http://www.opengis.net/wms" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.3.0" updateSequence="1913" xsi:schemaLocation="http://www.opengis.net/wms http://geodata.nationaalgeoregister.nl/schemas/wms/1.3.0/capabilities_1_3_0.xsd">
<Service>...</Service>
<Capability>
<Request>
<GetCapabilities>...</GetCapabilities>
<GetMap>...</GetMap>
<GetFeatureInfo>...</GetFeatureInfo>
</Request>
<Exception>...</Exception>
<Layer>
<Title>Actueel Hoogtebestand Nederland 2</Title>
<Abstract>Actueel Hoogtebestand Nederland 2</Abstract>
...
<CRS>EPSG:28992</CRS>
<CRS>EPSG:3857</CRS>
<CRS>EPSG:4326</CRS>
...
<EX_GeographicBoundingBox>...</EX_GeographicBoundingBox>
<BoundingBox CRS="EPSG:4326" minx="50.72814376700224" miny="3.2012587672031283" maxx="53.55490608251144" maxy="7.273799656562079"/>
...
<Layer queryable="1" opaque="0">...</Layer>
<Layer queryable="1" opaque="0">
<Name>ahn2_5m</Name>
<Title>ahn2_5m</Title>
<Abstract/>
<KeywordList>...</KeywordList>
<CRS>EPSG:28992</CRS>
<CRS>CRS:84</CRS>
<EX_GeographicBoundingBox>...</EX_GeographicBoundingBox>
<BoundingBox CRS="CRS:84" minx="3.2012587672391843" miny="50.72814376700224" maxx="7.273799656530975" maxy="53.554906081805136"/>
<BoundingBox CRS="EPSG:28992" minx="10000.0" miny="306250.0" maxx="280000.0" maxy="618750.0"/>
...
<MetadataURL type="TC211">...</MetadataURL>
<Style>...</Style>
</Layer>
<Layer queryable="1" opaque="0">...</Layer>
</Layer>
</Capability>
</WMS_Capabilities>
|
De GeoServer WMS GetCapabilities documentatiepagina beschrijft de verschillende componenten van de Capabilities document.
GetMap¶
De GetMap request haalt een statisch kaartbeeld op.
http://geodata.nationaalgeoregister.nl/ahn2/wms?
service=WMS&
request=GetMap&
layers=ahn2_5m&
bbox=13014,306243,286599,623492&
width=400&
height=500&
format=image/png&
srs=EPSG:28992
Dit resulteert in een PNG afbeelding.

Zie de GeoServer WMS GetMap documentatiepagina voor een volledig overzicht van deze request.
GetFeatureInfo¶
De GetFeatureInfo request haalt de attribuutgegevens op van object(en) op een bepaalde plek op de kaart. Onderstaande request haalt een hoogtewaarde uit de AHN.
http://geodata.nationaalgeoregister.nl/ahn2/wms?
service=wms&
version=1.3.0&
request=getfeatureinfo&
layers=ahn2_5m&
bbox=13014,306243,286599,623492&
width=400&
height=500&
format=image/png&
srs=EPSG:28992&
query_layers=ahn2_5m&
info_format=application/json&
x=353&
y=145
Resultaat: een JSON document met daarin de waarde van de pixel op de gespecificeerde positie. De waarde van de pixel op x = 353, y = 145
stelt in dit geval een hoogte voor en is gelijk aan 17.518 m.
{
"type": "FeatureCollection",
"totalFeatures": "unknown",
"features": [
{
"type": "Feature",
"id": "",
"geometry": null,
"properties": {
"GRAY_INDEX": 17.51810073852539
}
}
],
"crs": null
}
Lees meer over de GetFeatureInfo request op de GeoServer WMS GetFeatureInfo documentatiepagina.
Web Map Tile Services (WMTS)¶
Web Map Tile Services zijn vergelijkbaar met WMS, echter in dit geval is het kaartbeeld opgeknipt in tegels volgens een gedefinieerd grid.

Bron: http://webglearth.com
De tegels worden al dan niet gecached aan serverzijde voor hergebruik. Geonovum heeft ten behoeve van interoperabiliteit binnen Nederland een tiling richtlijn [PDF] voor vastgesteld.
De belangrijkste WMTS GET requests zijn
- GetCapabilities: retourneert de Capabilities document die de beschikbare kaartlagen en grids (per projectie) beschrijft
- GetTile: retourneert een kaarttegel als PNG/JPG
Zie de WMTS speficitatie voor meer informatie.
GetCapabilities¶
De GetCapabilities request haalt de Capabilities document van een WMTS endpoint op.
http://geodata.nationaalgeoregister.nl/tiles/service/wmts?
REQUEST=GetCapabilities
De <Contents>
element (lijn 10) beschrijft de beschikbare kaartlagen. Elk laag heeft een titel (lijn 12), is beschikbaar in een of meerdere formaten (<Format>
element op lijn 21 en 22) en in een of meerdere grids (<TileMatrixSetLink>
element op lijn 24 en 27). Een grid bestaat uit meerdere <TileMatrix>
elementen c.q. ‘zoomniveaus’, zie lijn 35.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | <?xml version="1.0" encoding="utf-8"?>
<Capabilities xmlns="http://www.opengis.net/wmts/1.0" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gml="http://www.opengis.net/gml" xsi:schemaLocation="http://www.opengis.net/wmts/1.0 http://schemas.opengis.net/wmts/1.0/wmtsGetCapabilities_response.xsd" version="1.0.0">
<ows:ServiceIdentification>...</ows:ServiceIdentification>
<ows:ServiceProvider>...</ows:ServiceProvider>
<ows:OperationsMetadata>
<ows:Operation name="GetCapabilities">...</ows:Operation>
<ows:Operation name="GetTile">...</ows:Operation>
<ows:Operation name="GetFeatureInfo">...</ows:Operation>
</ows:OperationsMetadata>
<Contents>
<Layer>
<ows:Title>brtachtergrondkaart</ows:Title>
<ows:WGS84BoundingBox>
<ows:LowerCorner>-1.65729160235431 48.0405018704265</ows:LowerCorner>
<ows:UpperCorner>11.2902578747914 55.9136415748388</ows:UpperCorner>
</ows:WGS84BoundingBox>
<ows:Identifier>brtachtergrondkaart</ows:Identifier>
<Style isDefault="true">
<ows:Identifier />
</Style>
<Format>image/png</Format>
<Format>image/png8</Format>
<TileMatrixSetLink>
<TileMatrixSet>EPSG:25831:RWS</TileMatrixSet>
</TileMatrixSetLink>
<TileMatrixSetLink>
<TileMatrixSet>EPSG:28992</TileMatrixSet>
</TileMatrixSetLink>
</Layer>
<Layer>...</Layer>
...
<TileMatrixSet>
<ows:Identifier>EPSG:28992</ows:Identifier>
<ows:SupportedCRS>urn:ogc:def:crs:EPSG::28992</ows:SupportedCRS>
<TileMatrix>
<ows:Identifier>EPSG:28992:0</ows:Identifier>
<ScaleDenominator>1.2288E7</ScaleDenominator>
<TopLeftCorner>-285401.92 903402.0</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>1</MatrixWidth>
<MatrixHeight>1</MatrixHeight>
</TileMatrix>
<TileMatrix>...</TileMatrix>
...
</TileMatrixSet>
<TileMatrixSet>...</TileMatrixSet>
...
</Contents>
<ServiceMetadataURL xlink:href="http://geodata.nationaalgeoregister.nl/tiles/service/wmts?REQUEST=getcapabilities&VERSION=1.0.0" />
</Capabilities>
|
GetTile¶
De GetTile request haalt een kaartbeeld op.
http://geodata.nationaalgeoregister.nl/wmts?
SERVICE=WMTS
&REQUEST=GetTile
&VERSION=1.0.0
&LAYER=brtachtergrondkaart
&STYLE=default
&TILEMATRIXSET=EPSG:28992
&TILEMATRIX=EPSG:28992:0
&TILEROW=0
&TILECOL=0
&FORMAT=image/png8
De TILEROW
en TILECOL
parameters specificeren welk tegel opgehaald moet worden. De TILEROW
parameter is equivalent aan het y-coördinaat en neemt in waarde af naarmate y
groter wordt. TILECOL
parameter is equivalent aan het x-coördinaat en neemt in waarde toe als x
groeit. Het laatste getal van de TILEMATRIX
parameter geeft het zoomniveau weer. Bovenstaand request haalt de bovenste tegel van de tegelpyramide op.

De kaartafbeelding op (row,col) = (4,3) op het vierde zoomniveau laat de omgeving van Dordrecht zien.
http://geodata.nationaalgeoregister.nl/wmts/?
SERVICE=WMTS
&REQUEST=GetTile
&VERSION=1.0.0
&LAYER=brtachtergrondkaart
&STYLE=default
&TILEMATRIXSET=EPSG:28992
&TILEMATRIX=EPSG:28992:3
&TILEROW=4
&TILECOL=3
&FORMAT=image/png8

WMTS wordt out-of-the-box door QGIS en OpenLayers ondersteund.
Tile Map Service (TMS)¶
Notitie
TMS is geen OGC standaard. Gebruikers worden geadviseerd om zoveel mogelijk gebruik te maken van WMTS.
De Tiled Web Service geeft toegang tot opgeknipte kaartafbeeldingen (c.q. tegels) op vaste schalen. TMS endpoints zijn RESTful: elk object beschikt over een eigen URL volgens de volgende structuur
http://geoserver.example.com/tms/<tms_versie_nummer>/<naam_van_kaart>/<coördinatenstelsel>/<bestandsformaat>/<z>/<x>/<y>.<bestandsfromaat>
waarbij z
, x
, y
de coördinaten van een kaartafbeelding zijn. Zie de OSGeo TMS specificatie voor meer informatie.
De TMS root resource is de Capabilities document die de beschikbare kaartlagen en de bijbehorende URLs beschrijft. De Capabilities document van bijv. het Nationaal GeoRegister TMS endpoint bevindt zich op https://geodata.nationaalgeoregister.nl/tiles/service/tms/1.0.0/
<TileMapService version="1.0.0" services="https://geodata.nationaalgeoregister.nl/tiles/service">
<Title>Tile Map Service</Title>
<Abstract>Tile Map Services</Abstract>
<TileMaps>
...
<TileMap title="brtachtergrondkaart" srs="EPSG:28992" profile="local" href="https://geodata.nationaalgeoregister.nl/tiles/service/tms/1.0.0/brtachtergrondkaart/EPSG:28992"/>
<TileMap title="brtachtergrondkaart" srs="EPSG:25831" profile="local" href="https://geodata.nationaalgeoregister.nl/tiles/service/tms/1.0.0/brtachtergrondkaart/EPSG:25831:RWS"/>
<TileMap title="brtachtergrondkaart" srs="OSGEO:41001" profile="global-mercator" href="https://geodata.nationaalgeoregister.nl/tiles/service/tms/1.0.0/brtachtergrondkaart/EPSG:3857"/>
<TileMap title="brtachtergrondkaartgrijs" srs="EPSG:28992" profile="local" href="https://geodata.nationaalgeoregister.nl/tiles/service/tms/1.0.0/brtachtergrondkaartgrijs/EPSG:28992"/>
...
</TileMaps>
</TileMapService>
Elke kaart wordt door een <TileMap>
element beschreven. Zo is bijv. de Capabilities document van de BRT Achtergrondkaart te vinden op https://geodata.nationaalgeoregister.nl/tiles/service/tms/1.0.0/brtachtergrondkaart/EPSG:28992. Hierin worden o.a. het bereik van de laag en de beschikbare zoomniveaus beschreven.
<TileMap version="1.0.0">
<Title>brtachtergrondkaart</Title>
<Abstract/>
<SRS>EPSG:28992</SRS>
<BoundingBox minx="-285401.92" miny="22598.08" maxx="595401.92" maxy="903401.92" />
<Origin x="-285401.92" y="22598.08" />
<TileFormat width="256" height="256" mime-type="image/png" extension="png" />
<TileSets profile="local">
<TileSet href="https://geodata.nationaalgeoregister.nl/tiles/service/tms/1.0.0/brtachtergrondkaart/EPSG%3A28992/0" units-per-pixel="3440.64" order="0" />
<TileSet href="https://geodata.nationaalgeoregister.nl/tiles/service/tms/1.0.0/brtachtergrondkaart/EPSG%3A28992/1" units-per-pixel="1720.32" order="1" />
<TileSet href="https://geodata.nationaalgeoregister.nl/tiles/service/tms/1.0.0/brtachtergrondkaart/EPSG%3A28992/2" units-per-pixel="860.16" order="2" />
...
</TileSets>
</TileMap>
De eerste afbeelding van de BRT Achtergrondkaart bevindt zich op (z,x,y) = (0,0,0). De bijbehorende URL is https://geodata.nationaalgeoregister.nl/tiles/service/tms/1.0.0/brtachtergrondkaart/EPSG:28992/0/0/0.png hetgeen een overzicht van Nederland geeft.

De kaartafbeelding op (x,y) = (3,3) van de 4de zoomlevel is te vinden op https://geodata.nationaalgeoregister.nl/tiles/service/tms/1.0.0/brtachtergrondkaart/EPSG:28992/3/3/3.png en toont Dordrecht en omgeving.

Hoewel TMS geen OGC standaard is wordt het out-of-the-box door Leaflet en OpenLayers ondersteund. Zie Geodata in web apps voor code voorbeelden.
Atom feeds¶
Een aantal landsdekkende datasets worden als downloadbare bestanden aangeboden via Atom feeds. Atom feeds zijn webfeeds die, net zoals RSS, geabonneerde gebruikers automatisch op de hoogte brengen van nieuwe releases en updates.
Open de Atom feed in een feed reader (bijv. Feedly) of Firefox om de bijgesloten ZIP bestanden te downloaden. Indien deze niet beschikbaar zijn is het bestand ook via het entry
-> link
element te downloaden, zie regels 9-10 in onderstaand voorbeeld.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?xml version='1.0' encoding='UTF-8'?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:georss="http://www.georss.org/georss">
...
<entry>
<id>inspireadressen.zip</id>
<title type="text" xml:lang="nl">inspireadressen.zip</title>
<content type="text">Downloadgrootte: 1.4 GB</content>
<updated>2015-07-07T22:00:00.000Z</updated>
<link href="http://geodata.nationaalgeoregister.nl/inspireadressen/extract/inspireadressen.zip" rel="alternate" type="application/x-compressed" hreflang="nl" length="1517044532"/>
<link href="http://geodata.nationaalgeoregister.nl/inspireadressen/extract/inspireadressen.zip" hreflang="nl"/>
<rights type="text">Copyright (c) 2012, Kadaster en Openbare Registers</rights>
<category term="http://www.opengis.net/def/crs/EPSG/0/28992" label="Amersfoort / RD New"/>
<georss:polygon>50.6 3.1 50.6 7.3 53.7 7.3 53.7 3.1 50.6 3.1</georss:polygon>
</entry>
</feed>
|
De Atom feeds van PDOK zijn te vinden op https://www.pdok.nl/en/products/pdok-downloads/atomfeeds
Atom feeds in het NGR zijn te vinden door het Online Bronnen filter Atom
te gebruiken en/of het zoekresultaat te filtreren op Downloadbare bestanden
.
Web Coverage Service (WCS)¶
Het WCS protocol kan gebruikt worden om multi dimensionale raster data over internet te ontsluiten. PDOK biedt bijvooreeld het Algemeen Hoogte bestand Nederland aan als WCS. Lees meer op http://www.opengeospatial.org/standards/wcs. Voor het ontsluiten van WCS kan bijvoorbeeld QGIS of gvSIG gebruikt worden. GDAL en Rasdaman bieden bibliotheken om analyses op CSW uit te voeren. Voor het ontsluiten van raster bestanden als WCS kan bijvoorbeeld GeoServer of Mapserver gebruikt worden.
INSPIRE werkt aan technical guidelines voor het opzetten van een download service op basis van WCS https://ies-svn.jrc.ec.europa.eu/attachments/download/947/Study_WCS_INSPIRE_v0.3.pdf
Catalogue Service for the Web (CSW)¶
Het Nationaal GeoRegister (NGR) is een catalogus met informatie over ruimtelijke datasets en services. De CSW API stelt ons in staat om door de metadata in het NGR te zoeken. Zie de OGC CSW specificatie voor meer informatie.
De CSW endpoint wordt via HTTP GET of XML over HTTP POST requests bevraagd. De belangrijkste operaties om metadata op te vragen zijn:
- GetCapabilities: voor het bekijken van de mogelijkheden van de service. Deze operatie kan handig zijn om te zien welke filters ondersteund worden bijvorrbeeld.
- GetRecords: om meerdere metadata documenten (records) op te vragen, bijvoorbeeld met een zoekfilter.
- GetRecordById: om 1 metadata document op te vragen, via het metadata ID.
GetCapabilities¶
Middels een GetCapabilities request kan opgevraagd worden wat de server kan. Door het volgende HTTP GET request te versturen, kan je zien wat de server aan functionaliteit biedt:
http://nationaalgeoregister.nl/geonetwork/srv/dut/csw?
request=GetCapabilities&
service=CSW
Resultaat: een XML document met hierin de operaties en filters die de endpoint ondersteunt en de URLs voor het versturen van de requests. Daarnaast bevat het document de beschikbare formaten om metadata op te vragen.
GetRecords¶
De GetRecords request haalt metadata records op.
http://nationaalgeoregister.nl/geonetwork/srv/dut/inspire?
service=CSW&
version=2.0.2&
request=GetRecords&
namespace=xmlns%28csw=http://www.opengis.net/cat/csw%29&
resultType=results&
outputSchema=http://www.opengis.net/cat/csw/2.0.2&outputFormat=application/xml&
maxRecords=10&
typeNames=csw:Record&
elementSetName=full&
constraintLanguage=CQL_TEXT&
constraint_language_version=1.1.0&
constraint=AnyText+LIKE+%27%25water%25%27
Resultaat: records die over “water” gaan in een standaard CSW formaat dat Dublin Core elementen bevat.
<csw:GetRecordsResponse xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd">
<csw:SearchStatus timestamp="2015-07-30T21:35:48"/>
<csw:SearchResults numberOfRecordsMatched="174" numberOfRecordsReturned="10" elementSet="full" nextRecord="11">
<csw:Record xmlns:ows="http://www.opengis.net/ows" xmlns:geonet="http://www.fao.org/geonetwork" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/">
<dc:identifier>777f41ee-8269-4bbc-b0e4-f889c62be099</dc:identifier>
<dc:date>2015-02-27</dc:date>
<dc:title>...</dc:title>
<dc:type>service</dc:type>
<dc:subject>Faciliteiten voor productie en industrie</dc:subject>
<dc:subject>Faciliteiten voor productie en industrie</dc:subject>
<dc:subject>infoMapAccessService</dc:subject>
<dct:abstract>...</dct:abstract>
<dc:description>...</dc:description>
<dc:rights>otherRestrictions</dc:rights>
<dc:URI protocol="OGC:WMS" name="inspire:facility_pollutant_transfer" description="Afgevoerde hoeveelheid afval in 2011 vanuit de industrie (WMS)">http://inspire.rivm.nl/geoserver/wms?</dc:URI>
</csw:Record>
<csw:Record xmlns:ows="http://www.opengis.net/ows" xmlns:geonet="http://www.fao.org/geonetwork" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/">...</csw:Record>
...
</csw:SearchResults>
</csw:GetRecordsResponse>
De belangrijkste aanpasbare parameters van dit request zijn:
outputSchema
– de format van de metadata. Mogelijke waardes:http://www.opengis.net/cat/csw/2.0.2
voor Dublin Core,http://www.isotc211.org/2005/gmd
voor ISOtypeNames
– Mogelijke waardes:csw:Record
voor Dublin Core metadata,gmd:MD_Metadata
voor ISO metadatamaxRecords
– het maximum aantal recordselementSetName
– Mogelijke waardes:full
,summary
constraint
– de toe te passen filter, zie Zoeken via filters.resultType
– bepaalt wat er teruggestuurd wordt: resultaten of aantal records die voldoen aan deconstraint
filter. Mogelijke waardes:results
,hits
startPosition
– bepaalt waar de resultatenlijst start. In combinatie metmaxRecords
is het mogelijk om resultaten in delen op te vragen, zie het GetRecord resultaten in delen opvragen voorbeeld.
Notitie
Het NGR ondersteunt enkel application/xml
als waarde voor outputFormat
. Zie de GetRecords request specificatie in de Capabilities document.
Zoeken via filters¶
Het NGR staat allerlei zoekopdrachten toe, ook via de CSW. De zoekopdracht wordt in de constraint
parameter gedefinieerd middels een Common Query Language (CQL). Het NGR ondersteunt een groot aantal zoekparameters die heel gericht op metadata elementen kunnen zoeken. De Capabilities document somt deze op in de lijst met Queryables (SupportedISOQueryables
en AdditionalQueryables
). Bijv. de AnyText
filter doorzoekt alle tekstvelden van een record op bijv. de term “water”
constraint=AnyText+LIKE+%27%25water%25%27
De waarde van de constraint
parameter moet URL encoded zijn. AnyText+LIKE+%27%25water%25%27
is URL gecodeerd van AnyText LIKE '%water%'
. De percentage-tekens zijn wildcards. Het online tooltje: http://meyerweb.com/eric/tools/dencoder/ kan helpen bij het coderen/decoderen van de waardes.
Een ander filterparameter is bijv. ServiceType
. Hiermee is het mogelijk om te zoeken op het type services bijv. een “view” service:
constraint=ServiceType='view'
(gecodeerd:constraint=ServiceType%3D%27view%27)
Een ander voorbeeld is het filteren op waardes in de title van een record:
constraint=Title LIKE '%dijken%'
(gecodeerd:constraint=Title LIKE '%25dijken%25')
Zie de CSW specificatie voor meer informatie.
GetRecordById¶
Het request GetRecordById kan handig zijn om naar 1 specifiek metadata record te verwijzen. Het request is korter dan GetRecords. Een voorbeeld is:
http://nationaalgeoregister.nl/geonetwork/srv/dut/csw?
SERVICE=CSW&
version=2.0.2&
REQUEST=GetRecordById&
elementSetName=full&
OutputSchema=http://www.isotc211.org/2005/gmd&
ID=85fdc4ee-05fa-455d-bf11-eb0b927e6f77
Dit request vraagt in ISO formaat de metadata op van het record met ID 85fdc4ee-05fa-455d-bf11-eb0b927e6f77
. Dit ID is te vinden door de resultaten van de GetRecords request te bestuderen.
INSPIRE metadata¶
Op zoek naar alleen INSPIRE metadata (en niet alle Nederlandse metadata)? Gebruik dan in plaats van de URL:
http://nationaalgeoregister.nl/geonetwork/srv/dut/csw
De URL van het INSPIRE endpoint:
http://nationaalgeoregister.nl/geonetwork/srv/dut/inspire
Deze laatste URL is ook van een gewone CSW, maar de inhoud betreft alleen de metadata voor INSPIRE.
Tooling met CSW ondersteuning¶
In veel gevallen is de CSW endpoint effectiever te bevragen middels een bestaande bijv.
Veel GIS pakketten bieden ondersteuning voor CSW via plug-ins.
Voorbeelden¶
Eerste 10 metadata records ophalen¶
Eerste 10 records (1 t/m 10) die over water gaan.
http://nationaalgeoregister.nl/geonetwork/srv/dut/inspire?
service=CSW&
version=2.0.2&
request=GetRecords&
namespace=xmlns%28csw=http://www.opengis.net/cat/csw%29&
resultType=results&
outputSchema=http://www.opengis.net/cat/csw/2.0.2&
outputFormat=application/xml&
maxRecords=10&
startposition=1&
typeNames=csw:Record&
elementSetName=full&
constraintLanguage=CQL_TEXT&
constraint_language_version=1.1.0&
constraint=AnyText+LIKE+%27%25water%25%27
GetRecord resultaten in delen opvragen¶
Het NGR bevat veel metadata records. Door de maxRecords
en startPosition
parameters te gebruiken kan je de metadata records in delen opvragen. Na het ophalen van de eerste 10 records (zie vorige voorbeeld) halen we de volgende 10 records binnen door startPosition
de waarde 10 toe te kennen. Derde blok van tien records halen we binnen met maxRecords=10
en startposition=21
.
http://nationaalgeoregister.nl/geonetwork/srv/dut/inspire?
service=CSW&
version=2.0.2&
request=GetRecords&
namespace=xmlns%28csw=http://www.opengis.net/cat/csw%29&
resultType=results&
outputSchema=http://www.opengis.net/cat/csw/2.0.2&
outputFormat=application/xml&
maxRecords=10&
startposition=21&
typeNames=csw:Record&
elementSetName=full&constraintLanguage=CQL_TEXT&
constraint_language_version=1.1.0&
constraint=AnyText+LIKE+%27%25water%25%27
Metadata als Dublin Core ophalen¶
Opvragen van metadata in het Dublin Core formaat gaat met de parameters:
outputSchema=http://www.opengis.net/cat/csw/2.0.2&
typeNames=csw:Record
Metadata als ISO ophalen¶
Vervang de waardes van de outputSchema
en typeNames
parameters met:
outputSchema=http://www.isotc211.org/2005/gmd&
typeNames=gmd:MD_Metadata
om metadata records in ISO formaat op te vragen.
Geodata in web apps¶
Leaflet en OpenLayers maken het mogelijk om gegevens uit de geo services en APIs te visualiseren op een interactieve kaart.
Leaflet¶
Leaflet is the leading open-source JavaScript library for mobile-friendly interactive maps.
Leaflets minimalistische insteek heeft in korte tijd veel gebruikers en ontwikkelaars aangetrokken die voor een groeiende lijst van plugins zorgen. Leaflet wordt door o.a. Mapbox en CartoDB gebruikt.
WMS¶
Leaflet kan out-of-the-box WMS endpoints lezen. Gebruik de L.tileLayer.wms()
functie als volgt
var map = L.map('map').setView([52, 5.3], 7);
var leefbaro = L.tileLayer.wms("https://services.geodan.nl/public/data/ows/MBIZ4280LEEF/org/wms/MBIZ4280LEEF/wms", {
layers: 'schaalafhankelijke_leefbaarheidskaart',
format:'image/png',
transparent: true
});
leefbaro.addTo(map);
Notitie
Dit werkt alleen als de WMS endpoint in de Pseudo-Mercator (ESPG:3857) kaartprojectie beschikbaar is, zie Coördinatentransformaties voor meer informatie. De WMS Capabilities document vermeldt welke coördinatenstelsels ondersteund worden.
WFS¶
Leaflet heeft geen out-of-the-box ondersteuning voor WFS. Een eenvoudige GetFeature request kun je als volgt zelf opbouwen. Onderstaande broncode staat ook op GitHub.
var map;
window.onload = function() {
map = L.map('map');
// load OpenStreetMap basemap
var basemap = L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png');
basemap.addTo(map);
var url = 'http://geodata.nationaalgeoregister.nl/bag/wfs?';
var params = 'request=GetFeature&';
params += 'service=WFS&';
params += 'typeName=bag:pand&';
params += 'count=100&';
params += 'outputFormat=json&';
params += 'srsName=EPSG:4326';
$.getJSON(url + params, function(data) {
loadGeometry(data);
});
};
function loadGeometry(data) {
$.each(data.features, function(index, geometry) {
L.geoJson(geometry).addTo(map);
});
var center = data.features[0].geometry.coordinates[0][0];
// setView expects lat, lng whereas GeoJSON stores coordinates as lng, lat
map.setView([center[1], center[0]], 17);
}
Je kan ook een van de WFS plugins gebruiken. De BAG met bijv. de WFST plugin lezen gaat als volgt.
var wfst = new L.WFST({
url: 'http://geodata.nationaalgeoregister.nl/bag/wfs',
typeNS: 'bag',
typeName: 'pand',
crs: L.CRS.EPSG4326,
style: {
color: 'blue',
weight: 2
}
})
.addTo(map)
.once('load', function () {
map.fitBounds(wfst);
});
TMS¶
Leaflet kan by default enkel rasterdata visualiseren die in de Pseudo-Mercator projectie opgeslagen is. De Nederlandse TMS endpoints zijn enkel in de Rijksdriehoekstelsel beschikbaar. De Proj4Leaflet plugin stelt je in staat om coördinatenstelses te transformeren. Zie onderstaande voorbeeld van @emacgillavry. In Coördinatentransformaties lees je meer over coördinatentransformaties.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | // Resoluties (pixels per meter) van de zoomniveaus:
var res = [3440.640, 1720.320, 860.160, 430.080, 215.040, 107.520, 53.760, 26.880, 13.440, 6.720, 3.360, 1.680, 0.840, 0.420];
// Juiste projectieparameters voor Rijksdriehoekstelsel (EPSG:28992):
var RD = L.CRS.proj4js('EPSG:28992', '+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +units=m +towgs84=565.2369,50.0087,465.658,-0.406857330322398,0.350732676542563,-1.8703473836068,4.0812 +no_defs', new L.Transformation(1, 285401.920, -1, 903401.920));
RD.scale = function(zoom) {
return 1 / res[zoom];
};
var map = new L.Map('map', {
continuousWorld: true,
crs: RD,
layers: [
new L.TileLayer('http://geodata.nationaalgeoregister.nl/tms/1.0.0/brtachtergrondkaart/{z}/{x}/{y}.png', {
tms: true,
minZoom: 3,
maxZoom: 13,
attribution: 'Kaartgegevens: © <a href="http://www.cbs.nl">CBS</a>, <a href="http://www.kadaster.nl">Kadaster</a>, <a href="http://openstreetmap.org">OpenStreetMap</a><span class="printhide">-auteurs (<a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>).</span>',
continuousWorld: true
})
],
center: new L.LatLng(53.219231,6.57537),
zoom: 7
});
|
OpenLayers 3¶
A high-performance, feature-packed library for all your mapping needs.
OpenLayers is een “batteries included” bibliotheek. Het heeft bijv. out-of-the-box ondersteuning voor WebGL, touch input, coordinatenstelsels e.a. OL wordt door o.a. PDOK Kaart en de Zwitserse geodata portaal gebruikt.
WMS¶
OpenLayers ondersteunt WMS out-of-the-box. De leefbaarheidskaart van de Leefbarometer bevraag je als volgt.
var leefbarheid = new ol.layer.Tile({
title: "Leefbaarheidskaart",
visible: false,
opacity: 0.7,
source: new ol.source.TileWMS({
url: "https://services.geodan.nl/public/data/ows/MBIZ4280LEEF/org/wms/MBIZ4280LEEF/wms",
params: {
"LAYERS": "schaalafhankelijke_leefbaarheidskaart",
"SRS": "EPSG:3857"
}
})
});
OpenLayers ondersteunt ook het ophalen van de achterliggende gegevens via de WMS GetFeatureInfo request, zie de OpenLayers 3 voorbeeldenpagina voor meer informatie (zoek op WMS).
WFS¶
OpenLayers heeft volwassen ondersteuning voor het lezen van WFS. Onderstaand voorbeeld haalt de BAG panden op die in de huidige extent vallen (volledige broncode ).
var vector = new ol.layer.Vector({
source: new ol.source.Vector({
format: new ol.format.GeoJSON(),
url: function(extent, resolution, projection) {
return 'https://geodata.nationaalgeoregister.nl/bag/wfs?service=WFS&' +
'version=1.1.0&request=GetFeature&typename=bag:pand&' +
'outputFormat=application/json&srsname=EPSG:3857&' +
'bbox=' + extent.join(',') + ',EPSG:3857';
},
strategy: ol.loadingstrategy.tile(ol.tilegrid.createXYZ({
maxZoom: 20
}))
})
});
var map = new ol.Map({
layers: [vector],
target: document.getElementById('map'),
view: new ol.View({
center: [5, 50],
center: ol.proj.transform([4.470, 51.9334], 'EPSG:4326', 'EPSG:3857'),
zoom: 18
})
});
TMS¶
OpenLayers heeft geen native functionaliteit om TMS te visualiseren, je dient zelf de TileImage source te configureren, zie onderstaande voorbeeld van @6artvde.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | var extent = [-285401.92,22598.08,595401.9199999999,903401.9199999999];
var resolutions = [3440.640, 1720.320, 860.160, 430.080, 215.040, 107.520, 53.760, 26.880, 13.440, 6.720, 3.360, 1.680, 0.840, 0.420];
var projection = new ol.proj.Projection({code:'EPSG:28992', units:'m', extent: extent});
var url = 'http://geodata.nationaalgeoregister.nl/tms/1.0.0/brtachtergrondkaart/';
var tileUrlFunction = function(tileCoord, pixelRatio, projection) {
var zxy = tileCoord;
if (zxy[1] < 0 || zxy[2] < 0) {
return "";
}
return url +
zxy[0].toString()+'/'+ zxy[1].toString() +'/'+
zxy[2].toString() +'.png';
};
var map = new ol.Map({
target: 'map',
layers: [
new ol.layer.Tile({
source: new ol.source.TileImage({
projection: projection,
tileGrid: new ol.tilegrid.TileGrid({
origin: [-285401.92,22598.08],
resolutions: resolutions
}),
tileUrlFunction: tileUrlFunction
})
})
],
view: new ol.View({
minZoom: 3,
maxZoom: 13,
projection: projection,
center: [150000, 450000],
zoom: 3
})
});
|
De OpenLayers documentatie geeft een volledige beschrijving van de TileImage bron.
CartoDB¶
WMS¶
CartoDB ondersteunt sinds kort het inlezen van WMS endpoints. Deze hoeven niet in Pseudo-Mercator beschikbaard te zijn, CartoDB converteert ze indien nodig. Hierbij maken zij gebruik van MapProxy.
Ga als volgt te werk om een Nederlandse WMS/WMTS kaartlaag toe te voegen
- Open een bestaande kaart of maak een nieuwe
- Klik op
Change basemap
->Yours +
- Kies
WMS/WMTS
en plak een geldige WMS/WMTS URL in het tekstveld bijv. die van de PDOK Luchtforo:https://geodata1.nationaalgeoregister.nl/luchtfoto/wms
- Klik op
Get Layers
, vindt de kaartlaag die je wilt toevoegen en klik opAdd This
Geodata downloaden¶
In Geodata in web apps lees je hoe je de geo APIs in Leaflet en OpenStreetMap kan consumeren. Vaak is het ehcter noodzakelijk om een dataset in zijn geheel te downloaden zodat je het met andere gegevens kan combineren en/of een landsdekkende analyse kan uitvoeren.
Op de desktop: QGIS¶
WFS¶
QGIS stelt je in staat om de gegevens van een WFS endpoint lokaal op te slaan.
Ga als volgt te werk om een deel van de BAG in QGIS te laden en lokaal in een ander coordinatenstelsel op te slaan.
- Klik op
Layer
->Add Layer
->Add WFS Layer
in het hoofdmenu van QGIS - Klik op
New
- Vul een makkelijk te onthouden naam in het
Name
veld - Plak de BAG WFS URL (
https://geodata.nationaalgeoregister.nl/bag/wfs
) in hetURL
veld en klik opOK
- Klik op
Connect
- Kies een van de lagen uit de lijst bijv.
pand
en klik opAdd
- De gekozen laag verschijnt in de
Layers
pane (links van de kaart) alsbag:panden
- Klik met de rechtermuisknop op
bag:panden
en selecteerSave As..
- Kies ESRI Shapefile, GeoJSON of KML uit het
Format
menu - Klik op de
Browse
knop en geef aan waar het bestand opgeslagen moet worden - Kies
EPSG:4326 - WGS84
uit hetCRS
menu om de coördinaten naarlat/lng
te transformeren. Zie Coördinatentransformaties voor meer informatie. - Klik op
OK

Het nieuwe bestand kun je in CartoDB of Mapbox Studio gebruiken. KML bestanden kun je rechtstreeks in Google Earth visualiseren.
PDOK & INSPIRE plugins¶
De PDOK Services Plugin stelt je in staat om de datasets van Publieke Dienstverlenign op de Kaart te doorzoeken en in QGIS te laden.
De INSPIRE Nederland plugin stelt je instaat om door de INSPIRE datasets te zoeken en deze in QGIS te laden.

Het is ook mogelijk om per INSPIRE thema, annex en/of organisatie te zoeken.
QGIS plugins kun je via Plugins
-> Manage and Install Plugins...
menu installeren en beheren.
In de terminal: ogr2ogr (EN)¶
The ogr2ogr utility allows for reading and writing of many different vector formats. The most basic use of ogr2ogr is constructed as:
ogr2ogr -f output_format destination source layer
Getting the footprints of the first 15000 BAG buildings from the WFS endpoint as GeoJSON is achieved as:
$ ogr2ogr -f GeoJSON footprints.geojson
WFS:"http://geodata.nationaalgeoregister.nl/bagviewer/wfs"
bagviewer:pand
You can use Investigating the data source with ogrinfo to discover which layers are contained in a WFS endpoint, see the ogr2ogr en de BAG (EN) for more information.
Notitie
Staat de handeling die je wilt verrichten er niet bij? Heb je tips, suggesties of heb je een fout ontdekt? Laat het ons weten!
Handleidingen¶
Hoe zet je adressen om naar coördinaten? Hoe maak je Nederlandse geodata geschikt om te plotten in bijv. Leaflet of CartoDB? Hoe download je grote hoeveelheden data uit een WFS endpoint?
Geocoderen - van adres naar coördinaat¶
Het omzetten van adressen naar geografische coördinaten heet geocoderen. Gebruik QGIS om eenmalig kleine datasets te geocoderen; gebruik een van de vele APIs als je grotere datasets hebt of regelmatig moet geocoderen.
Op de desktop: QGIS¶
De PDOK BAG Geocoder plugin voor QGIS is zet adressen om naar coördinaten op de kaart. De plugin leest een CSV bestand in bijv. adressen.csv en geeft je een geogerefereerd Shapefile terug (adressen.shp). De plugin spreekt de PDOK Geocoder aan.

Klein nadeeltje van de PDOK Geocoder is dat ie coördinaten in het Nederlandse coördinatenstelsel retourneert. CartoDB, Mapbox, Google Maps, etc. verwachten coördinaten in lat/lng. In Coördinatentransformaties lees je hoe je coördinaten kan transformeren in o.a. QGIS.
Via een API¶
Nederland telt een aantal Geocodeer APIs waarmee je (betaald) adressen kan geocoderen.
Op http://openaddresses.io/ vindt je geodata waarmee je je eigen geocodeer (API) kan bouwen.
Coördinatentransformaties¶
Nederlandse geodata gebruiken het Rijksdriehoekscoördinatenstelsel, ook wel bekend als Amersfoort / RD New
. RD-coördinaten worden niet (out-of-the-box) door Google Maps, Mapbox, CartoDB, e.a. ondersteund. Deze diensten gebruiken de WGS84 / Pseudo-Mercator projectie. Hoewel Pseudo-Mercator
meter [m] als eenheid heeft, gebruiken Google Maps, Mapbox, CartoDB, e.a. lengte- en breedtegraden als coördinaten voor vector features. Deze lengte- en breedtegraden duiden een plek aan op de aarde zoals benaderd door de WGS84 ellipsoïde. Om Nederlandse vector data in bijv. Mapbox te visualiseren moet je RD-coördinaten daarom naar WGS84 transformeren i.p.v. Pseudo-Mercator. Let op: dit geldt niet voor rasters.
Het transformeren van coördinaten kan in de desktop met QGIS, in de browser met proj4js en in de command line met ogr2ogr. Om deze tools te gebruiken moet je de EPSG (European Petroleum Survey Group) codes van de coördinatenstelsels weten waartussen je wilt transformeren. Deze vindt je op epsg.io:
Amersfoort / RD New
heeft EPSG code 28992Pseudo-Mercator
heeft EPSG code 3857WGS84
heeft EPSG code 4326
Op mapschool.io lees je meer over coördinatenstelsels en bolcoördinaten.
Op de desktop: QGIS¶
- Klik met de rechtermuisknop op de laag die je wilt transformeren en selecteer
Save As..
- Kies ESRI Shapefile, GeoJSON of KML uit het
Format
menu - Klik op de
Browse
knop en geef aan waar het bestand opgeslagen moet worden - Kies
EPSG:4326 - WGS84
uit hetCRS
menu om de coördinaten naarlat/lng
te transformeren - Klik op
OK

In de browser: proj4js¶
De JavaScript bibliotheek proj4js is gemaakt voor het transformeren van coördinaten.
// definitie van de Nederlandse coördinatenstelsel
var RD = "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +units=m +towgs84=565.2369,50.0087,465.658,-0.406857330322398,0.350732676542563,-1.8703473836068,4.0812 +no_defs";
// World Geodetic System, in gebruik door Google Maps, Mapbox, CartoDB, e.a.
var WGS84 = "WGS84";
var transformed = proj4(RD,WGS84,[0,0]);
// Array [ 3.3135577051498664, 47.974765849805124 ]
In de terminal: ogr2ogr¶
Het programma ogr2ogr is een command line utility die een groot aantal geodata formats kan lezen en schrijven. Omzetten van coördinaten in het Nederlandse coördinatenstelsel naar WGS84 gaat als volgt
ogr2ogr -f GeoJSON target.geojson source_RD.geojson -s_srs EPSG:28992 -t_srs EPSG:4326
WFS - pagination¶
Notitie
Dit is een bijdrage van Thijs Brentjens.
De Web Feature Services van PDOK bieden toegang tot allerlei (vector)data. De data van de BAG, natura2000, het NWB wegennet, bestuurlijke grenzen en wat dan ook kan je ophalen voor gebruik in eigen applicaties. Bijvoorbeeld in QGIS, OpenLayers of andere tooling. Voor de service URLs kan je kijken op de PDOK services pagina.
Conform de WFS specificatie gaat het ophalen met GetFeature requests. Bijvoorbeeld een HTTP Get Request om alle provincie grenzen op te halen:
http://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs?
service=WFS&
version=2.0.0&
request=GetFeature&
typename=provincies
De PDOK services kennen alleen een maximum van 1.000 objecten per request. Dat mag, bijvoorbeeld om de belasting op de servers te beperken en te voorkomen dat iemand niet (per ongeluk) alle data ophaalt in zijn browser. Voor datasets van enige omvang betekent dit alleen dat je die niet helemaal in één keer via de WFS kan ophalen. In sommige gevallen kan je je wenden tot de data dumps, te downloaden via ATOM feeds. Zie http://geodata.nationaalgeoregister.nl/atom/index.xml
Maar niet altijd. En soms wil je juist de WFS bevragen, met een filter erbij bijvoorbeeld. Dus wat doe je dan als je meer dan die 1.000 objecten wil ophalen? Dan komt een van de handige WFS 2.0.0 functies van pas: ResponsePaging.
WFS 2.0 ResponsePaging¶
Vanaf versie 2.0.0 van WFS is ResponsePaging
gespecificeerd. De PDOK WFSen ondersteunen dit. Gelukkig. Want met Response paging kan je een door jezelf opgegeven aantal objecten ophalen (bijvoorbeeld de eerste 100) en daarna de volgende set (van 100) en weer de volgende set, totdat je alles hebt. Vergelijkbaar met paginering van zoekresultaten van zoekmachines.
Dit kan je heel simpel opgeven per request met de paramaters count (die maxFeatures vervangt uit WFS 1.0.0 en WFS 1.1.0) en de startIndex. Een voorbeeld voor de eerste 100 ligplaatsen uit de BAG, dus met count=100 en startIndex=0:
https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1?
service=WFS&
version=2.0.0&
request=GetFeature&
typename=bag:ligplaats&
count=100&
startindex=0
En de volgende 100 en weer 100:
https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1?
service=WFS&
version=2.0.0&
request=GetFeature&
typename=bag:ligplaats&
count=100&
startindex=100
https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1?
service=WFS&
version=2.0.0&
request=GetFeature&
typename=bag:ligplaats&
count=100&
startindex=200
Totdat je alle data binnen hebt. Hoe je weet dat je alles hebt? Kijk eens naar het GML response als je count en startIndex hebt gebruikt. In de eerste tag staat een attribuut numberMatched, dat aangeeft hoeveel resultaten er totaal zijn. Erg handig om te gebruiken in je algoritme om alles op te halen.
Of slimmer nog, vraag voordat je daadwerkelijk data gaat ophalen met resulttype=hits hoeveel objecten je GetFeature request zou opleveren. Bijvoorbeeld (let op: zonder count parameter!)
https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1?
service=WFS&
version=2.0.0&
request=GetFeature&
typename=bag:ligplaats&
resulttype=hits
In dit geval is het antwoord 11757.
WFS - output formaat¶
GML is voor veel webontwikkelaars niet de eerste keus. JSON en GeoJSON voor geodata lijken de standaard te worden. Maar een WFS geeft standaard (keurig conform de specs) GML terug op een GetFeature request. Wederom niet getreurd. Ook het GeoJSON formaat is beschikbaar bij de WFSen die PDOK aanbiedt. Gebruik daarvoor de parameter outputformat=json bij een GetFeature request en je krijgt GeoJSON terug. Voorbeeld:
https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1?
service=WFS&
version=2.0.0&
request=GetFeature&
typename=bag:ligplaats&
count=100&
startindex=100&
outputformat=json
Tot slot: een PDOK WFS steunt nog meer formaten. Zie daarvoor het stukje XML over het outputFormat van het GetFeature-deel in uit de Capabilities van een WFS. Dit Capabilities document is op te vragen via bijvoorbeeld:
https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1
service=WFS&
request=GetCapabilities
WFS - coördinaten in lat/lng¶
Tip van Edward MacGillavry (Webmapper): voeg srsName=EPSG:4326
parameter aan je WFS request toe om de coördinaten naar lat/lng (WGS84) te transformeren.
ogr2ogr en de BAG (EN)¶
This tutorial shows how to get datasets from the Dutch national geoportal through WFS using the GDAL/OGR toolset.
The GDAL/OGR library is the Swiss army knife for handling geospatial data. GDAL provides functions to read, write and transform raster files (e.g. GeoTIFF). OGR provides the same functionality for vector data.
Installation¶
On Linux you can grab the library through your package manager. Apt-getting it on Ubuntu is as easy as:
$ sudo apt-get install libgdal
Easiest way to get it on Windows is through the OSGeo4W installer.
Basisregistratie Adressen en Gebouwen¶
The Basisregistratie Addressen en Gebouwen is a Dutch law in which it is declared and regulated that all address and building information needs to be freely available to it’s citizens. Litterally translated it means “Base registration Addresses and Buildings” and is abbreviated as BAG.
Notitie
This tutorial assumes you are familar with the Web Feature Service. Not sure what that is? Review it here.
In this tutorial we will work with the Basisregistratie Adressen en Gebouwen dataset (in Dutch). It contains, amongst others, the footprints of all the Dutch buildings. It’s the base for the CitySDK visualisation. The BAG WFS endpoint is located at:
https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1
Waarschuwing
This particular service is limited to serving a maximum of 1.000 features per request. If you need more you’ll have to obtain the whole dataset from the ATOM feed or through ExtractNL.
Notitie
Although the focus of this tutorial is on the BAG, the demonstrated worklfow and commands can be used to query any WFS endpoint. See NGR WFS for all WFS endpoints in the register.
We’ll first investigate the endpoint with the ogrinfo utility and retrieve the data with the ogr2ogr utility.
Investigating the data source with ogrinfo¶
The ogrinfo utility retrieves the metadata of a service. It tells us which layers are available in the service, how many features they contin, in which coordinate reference system is the data stored, etc.
$ ogrinfo -so WFS:"<url>"
where
- -so retrieves a summary of the statistics
- <url> points to a WFS endpoint
ogrinfo is executed from the command line. On Linux you need to find Terminal/Console app. On Windows your best bet is the OSGeo4W Shell that is installed through the OSGeo4W installer. Open either one and enter the following command to query the BAG endpoint
$ ogrinfo -so WFS:"https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1"
which results in:
INFO: Open of 'WFS:'
using driver 'WFS' successful.
1. bag:ligplaats (Polygon)
2. bag:pand (Polygon)
3. bag:standplaats (Polygon)
4. bag:verblijfpaats (Point)
5. bag:woonplaats (Multi Polygon)
where the enumerated items represent the available layers and their type. The building footprints are contained in the 2nd layer and are of type Polygon. We can use ogrinfo to investigate a specific layer by appending its name at the end of the previous command as:
$ ogrinfo -so WFS:"https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1" bag:pand
The result is the number of features contained in the layer, a listing of their attributes, the coordinate reference system of the layer and a bounding box of the features.
Notitie
Observe the afore mentioned limit: the reported number of features is 1.000. There are, of course, more than 1.000 buildings in the Netherlands.
Getting data with ogr2ogr¶
The* ogr2ogr* utility allows for reading and writing of many different vector formats. The most basic use of ogr2ogr is constructed as:
ogr2ogr -f output_format destination source layer
Getting the footprints of the first 1.000 buildings as GeoJSON is achieved as:
$ ogr2ogr -f GeoJSON footprints.geojson
WFS:"https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1"
bag:pand
Transforming - coordinates and formats¶
ogr2ogr’s primary function is to transform vector data into different formats and coordinate reference systems. We can do the same with the WFS source; transforming the data from the Dutch coordinate system to lat/lng is done as:
$ ogr2ogr -f GeoJSON footprints.geojson WFS:"https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1" -t_srs EPSG:4326 bag:pand
ogr2ogr can also transform between file formats. Transforming e.g. a shapefile into a GeoJSON file is done as:
$ ogr2ogr -f GeoJSON input.shp output.geojson
Filtering¶
ogr2ogr supports filtering of datasources through a simple -where clause as well as sophisticated SQL queries. Retrieving a single column from the footprints dataset through SQL is done as:
$ ogr2ogr -f GeoJSON gemeenten_2011_84.geojson
WFS:"https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1"
-sql "SELECT CAST('bouwjaar') AS integer
FROM 'bag:pand'"
-t_srs EPSG:4326
bounding box query:
$ ogr2ogr -f GeoJSON footprints.geojson WFS:”https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1?bbox=232425,583269,234365,584240” bag:pand
Next steps: visualising and publishing data¶
You can now load the vector file in a popular GIS pacakge for furhter analysis, load it in a PostGIS database, publish it to Mapbox or CartoDB, etc.
TODO examples
Databronnen en datasets¶
Nederland kent een rijk aanbod aan georegisters- en dataportalen. Op deze pagina lees je welke data zijn, waar ze staan en hoe je evt. de beschikbare vector data kan aanspreken.
Nationaal GeoRegister¶
Het Nationaal Georegister (NGR) is dé centrale voorziening voor het beschrijven en ontsluiten van geo-informatie van Nederland. Het NGR bevat het overzicht van beschikbare datasets en services. Deze datasets kunt u in veel gevallen direct downloaden en de services kunt u bekijken of in uw eigen toepassing gebruiken.
URL: http://nationaalgeoregister.nl/geonetwork/srv/dut/search
Toegang tot vector data: filtreer Brontype op: dataset
of service
. Filtreer Online Bronnen op: OGC:WFS
, ATOM
.
Publieke Dienstverlening op de Kaart¶
Publieke Dienstverlening Op de Kaart (PDOK) is een centrale voorziening voor het ontsluiten van geodatasets van nationaal belang. Dit zijn actuele en betrouwbare gegevens voor zowel de publieke als private sector. PDOK stelt digitale geo-informatie als dataservices en bestanden beschikbaar. De meeste PDOK diensten zijn gebaseerd op open data en daarom voor iedereen vrij beschikbaar.
URL: https://www.pdok.nl
Toegang tot data: https://www.pdok.nl/nl/producten/pdok-services/overzicht-urls geeft een overzicht van alle PDOK datasets en webservices. Je kan ook gebruik maken van de PDOK plugin voor QGIS.
data.overheid.nl¶
URL: https://data.overheid.nl/
Toegang tot vector data: filtreer op download
, ogc:wfs
, ogc:kml
, ogc:gml
, inspire atom
, SHAPE
Provinciaal GeoRegister¶
Het Provinciaal GeoRegister (PGR) is een digitaal register, waarin provincies hun provinciale geo-informatie op een duidelijke en gestructureerde wijze vindbaar maken.
URL: http://www.provinciaalgeoregister.nl/georegister/
Toegang tot vector data: Het PGR biedt enkel downloadbare GML
en SHAPE
bestanden die per email gestuurd worden. Deze bestanden kun je m.b.v. QGIS transformeren naar bijv. GeoJSON.
Atlas Leefomgeving¶
In de Atlas Leefomgeving staat veel basisinformatie over uw leefomgeving, het overheidsbeleid en de invloed van factoren zoals lucht of natuur op de gezondheid.
URL: https://www.atlasleefomgeving.nl/
Toegang tot vector data:
- ga naar http://www.atlasleefomgeving.nl/kijken
- open een kaart bijv.
Cultureel Erfgoed
->Rijksmonumenten
- open de
Bijsluiter
- klik op
Over de Kaart
- klik op
Distributie
- copy/paste de URL onder
Locatie dataset
en vervangwms
doorwfs
. Eindigt de URL opows
? Je kan het direct als een WFS endpoint aanspreken.
Atlas Natuurlijk Kapitaal¶
ANK is het platform voor informatie over ons natuurlijk kapitaal. Denk daarbij aan alle diensten die de natuur ons levert. U treft op ANK informatie over de staat van het natuurlijk kapitaal in Nederland voor ons dagelijks leven en over de wijze waarop het natuurlijk kapitaal beter en duurzamer benut kan worden. Het doel: dat we duurzaam gebruik kunnen maken van de waarden die onze omgeving ons biedt.
URL: http://www.atlasnatuurlijkkapitaal.nl/
Toegang tot vector data:
- ga naar http://www.atlasnatuurlijkkapitaal.nl/kaarten
- open een kaart bijv.
Voedsel
->Mosselzaadinvanginstallaties
- open de Bijsluiter
- klik op
Over de Kaart
- klik op
Distributie
- copy/paste de URL onder
Locatie dataset
en vervangwms
doorwfs
indien aanwezig. Eindigt de URL opows
? Je kan het direct als een WFS endpoint aanspreken.