From geo
OGC API services en kaartdiensten. Gebruik deze skill wanneer de gebruiker vraagt over 'OGC API', 'WMS', 'WFS', 'WCS', 'WMTS', 'OGC API Features', 'kaartdienst', 'map service', 'ogc-checker', 'geo API', 'GetCapabilities', 'GetMap', 'GetFeature', 'PDOK service', 'geo webservice', 'spatial web service'.
npx claudepluginhub developer-overheid-nl/skills-marketplace --plugin geoThis skill is limited to using the following tools:
> **CONCEPT — Let op:** Deze skill is geen officieel product van Geonovum. De beschrijvingen zijn informatieve samenvattingen — niet de officiële standaarden zelf. De definities op [forumstandaardisatie.nl](https://www.forumstandaardisatie.nl/open-standaarden) en [Geonovum](https://www.geonovum.nl) zijn altijd leidend. Overheidsorganisaties die generatieve AI inzetten dienen te voldoen aan het ...
Guides selection of Mapbox geospatial tools: Turf.js for geometric ops like straight-line distance vs Routing APIs for navigation, travel time, and road networks based on problem type.
Performs geospatial vector analysis with GeoPandas: reads/writes Shapefile, GeoJSON, GeoPackage, Parquet, PostGIS; spatial joins, overlays, dissolve, clipping; CRS transforms, buffers, choropleth/interactive maps.
Downloads Overture Maps data (buildings, places, roads, land use, water) for a bounding box using geoai library. Saves GeoDataFrame as GeoJSON or GeoPackage.
Share bugs, ideas, or general feedback.
CONCEPT — Let op: Deze skill is geen officieel product van Geonovum. De beschrijvingen zijn informatieve samenvattingen — niet de officiële standaarden zelf. De definities op forumstandaardisatie.nl en Geonovum zijn altijd leidend. Overheidsorganisaties die generatieve AI inzetten dienen te voldoen aan het Overheidsbreed standpunt voor de inzet van generatieve AI. Zie DISCLAIMER.md en onze verantwoording.
Agent-instructie: Deze skill helpt bij het implementeren en gebruiken van OGC geo-webservices. Gebruik curl-voorbeelden voor PDOK-services en de ogc-checker voor validatie. OGC API Features en OGC API Tiles zijn verplicht onder 'pas-toe-of-leg-uit'; WMS en WFS zijn aanbevolen (sinds september 2024).
OGC-services zijn de standaard manier om geodata beschikbaar te stellen via het web. Nederland gebruikt deze standaarden intensief via PDOK — het nationale portaal voor geo-webservices. Geonovum beheert de Nederlandse profielen en de ogc-checker validatietool.
| Standaard | Type | Doel | Forum status |
|---|---|---|---|
| OGC API Features | REST API | REST-gebaseerde opvolger van WFS (JSON/GeoJSON) | Verplicht |
| OGC API Tiles | Tiles | Opvolger van WMTS (voorgerenderde kaarttegels) | Verplicht |
| WMS 1.3.0 | View | Kaartafbeeldingen (PNG/JPEG) opvragen | Aanbevolen |
| WFS 2.0 | Download | Vector features (GML/GeoJSON) opvragen | Aanbevolen |
| WCS 2.0 | Coverage | Rasterdata (gridded data) ophalen | Geen Forum status |
| GeoPackage 1.3.1 | Bestandsformaat | Lokale opslag van vector- en rasterdata (SQLite) | Verplicht |
| Repository | Beschrijving | Licentie |
|---|---|---|
| Geonovum/ogc-checker | Validatietool voor OGC services (v1.0.1) | EUPL-1.2 |
| Geonovum/ogc-checker Tags | Versies van ogc-checker | EUPL-1.2 |
WMS levert kaartafbeeldingen (rasterformaat). Drie operaties:
# WMS GetCapabilities — Luchtfoto RGB
curl -s "https://service.pdok.nl/hwh/luchtfotorgb/wms/v1_0?service=WMS&request=GetCapabilities" \
| head -50
# WMS GetMap — kaartafbeelding ophalen (PNG)
curl -s "https://service.pdok.nl/hwh/luchtfotorgb/wms/v1_0?\
service=WMS&version=1.3.0&request=GetMap&\
layers=Actueel_orthoHR&crs=EPSG:28992&\
bbox=120000,480000,130000,490000&\
width=800&height=800&format=image/png" -o /tmp/kaart.png
# WMS GetFeatureInfo — attribuutinfo op een punt
curl -s "https://service.pdok.nl/hwh/luchtfotorgb/wms/v1_0?\
service=WMS&version=1.3.0&request=GetFeatureInfo&\
layers=Actueel_orthoHR&query_layers=Actueel_orthoHR&\
crs=EPSG:28992&bbox=120000,480000,130000,490000&\
width=800&height=800&i=400&j=400&\
info_format=application/json"
WFS levert vectordata als features (GML of GeoJSON). Belangrijke operaties:
# WFS GetCapabilities — BAG (Basisregistratie Adressen en Gebouwen)
curl -s "https://service.pdok.nl/lv/bag/wfs/v2_0?\
service=WFS&request=GetCapabilities" | head -80
# WFS GetFeature — eerste 10 panden als GeoJSON
curl -s "https://service.pdok.nl/lv/bag/wfs/v2_0?\
service=WFS&version=2.0.0&request=GetFeature&\
typeName=bag:pand&count=10&\
outputFormat=application/json"
# WFS met ruimtelijk filter (BBOX)
curl -s "https://service.pdok.nl/lv/bag/wfs/v2_0?\
service=WFS&version=2.0.0&request=GetFeature&\
typeName=bag:pand&count=10&\
outputFormat=application/json&\
bbox=52.37,4.89,52.38,4.91,urn:ogc:def:crs:EPSG::4326"
# WFS DescribeFeatureType
curl -s "https://service.pdok.nl/lv/bag/wfs/v2_0?\
service=WFS&version=2.0.0&request=DescribeFeatureType&\
typeName=bag:pand"
WMTS levert voorgerenderde kaarttegels. Veel sneller dan WMS voor basemaps.
# WMTS GetCapabilities — BRT Achtergrondkaart
curl -s "https://service.pdok.nl/brt/achtergrondkaart/wmts/v2_0?\
service=WMTS&request=GetCapabilities" | head -80
# WMTS GetTile — enkele tegel ophalen
curl -s "https://service.pdok.nl/brt/achtergrondkaart/wmts/v2_0?\
service=WMTS&version=1.0.0&request=GetTile&\
layer=standaard&style=default&\
tilematrixset=EPSG:28992&tilematrix=10&\
tilerow=300&tilecol=350&format=image/png" -o /tmp/tile.png
WCS levert rasterdata (gridded coverages) zoals hoogtemodellen.
# WCS GetCapabilities — AHN (Actueel Hoogtebestand Nederland)
curl -s "https://service.pdok.nl/rws/ahn/wcs/v1_0?\
service=WCS&request=GetCapabilities" | head -50
REST-gebaseerde opvolger van WFS. Gebruikt JSON/GeoJSON, OpenAPI-specificatie, en standaard HTTP-methoden.
# Beschikbare collecties ophalen (Bestuurlijke Gebieden)
curl -s "https://api.pdok.nl/kadaster/brk-bestuurlijke-gebieden/ogc/v1/collections?f=json" \
| python3 -m json.tool
# Specifieke collectie bekijken
curl -s "https://api.pdok.nl/kadaster/brk-bestuurlijke-gebieden/ogc/v1/collections/gemeentegebied?f=json" \
| python3 -m json.tool
# Features ophalen (eerste 10 gemeenten)
curl -s "https://api.pdok.nl/kadaster/brk-bestuurlijke-gebieden/ogc/v1/collections/gemeentegebied/items?limit=10&f=json" \
| python3 -m json.tool
# Feature op basis van ID
curl -s "https://api.pdok.nl/kadaster/brk-bestuurlijke-gebieden/ogc/v1/collections/gemeentegebied/items/{id}?f=json" \
| python3 -m json.tool
# Ruimtelijke filter met bbox
curl -s "https://api.pdok.nl/kadaster/brk-bestuurlijke-gebieden/ogc/v1/collections/gemeentegebied/items?\
bbox=4.89,52.37,4.91,52.38&limit=10&f=json" | python3 -m json.tool
# OpenAPI spec van de service
curl -s "https://api.pdok.nl/kadaster/brk-bestuurlijke-gebieden/ogc/v1/api?f=json" \
| python3 -m json.tool | head -50
import requests
# OGC API Features — bestuurlijke gebieden ophalen
base_url = "https://api.pdok.nl/kadaster/brk-bestuurlijke-gebieden/ogc/v1"
# Collecties ophalen
collecties = requests.get(f"{base_url}/collections", params={"f": "json"}).json()
for c in collecties["collections"]:
print(f" {c['id']}: {c.get('title', '')}")
# Features met bbox-filter
params = {
"bbox": "4.89,52.37,4.91,52.38",
"limit": 50,
"f": "json",
}
response = requests.get(f"{base_url}/collections/gemeentegebied/items", params=params)
features = response.json()
print(f"Gevonden: {features.get('numberMatched', len(features.get('features', [])))} gemeenten")
for feature in features["features"]:
print(f" ID: {feature['id']}, Naam: {feature['properties'].get('naam')}")
from owslib.wms import WebMapService
from owslib.wfs import WebFeatureService
# WMS — kaartafbeelding ophalen
wms = WebMapService("https://service.pdok.nl/hwh/luchtfotorgb/wms/v1_0")
print("Lagen:", list(wms.contents))
img = wms.getmap(
layers=["Actueel_orthoHR"],
srs="EPSG:28992",
bbox=(120000, 480000, 130000, 490000),
size=(800, 800),
format="image/png",
)
with open("/tmp/kaart.png", "wb") as f:
f.write(img.read())
# WFS — features ophalen
wfs = WebFeatureService(
"https://service.pdok.nl/lv/bag/wfs/v2_0", version="2.0.0"
)
print("Feature types:", list(wfs.contents))
response = wfs.getfeature(
typename=["bag:pand"],
maxfeatures=10,
outputFormat="application/json",
)
import json
data = json.loads(response.read())
print(f"Gevonden: {len(data['features'])} panden")
De ogc-checker (v1.0.1) is een validatietool van Geonovum om OGC-services te controleren op conformiteit.
# Repo-informatie ophalen
gh api repos/Geonovum/ogc-checker --jq '{name, description, language, updated_at}'
# Laatste releases bekijken
gh api repos/Geonovum/ogc-checker/tags --jq '.[].name'
# Issues bekijken
gh issue list --repo Geonovum/ogc-checker
# Broncode verkennen
gh api repos/Geonovum/ogc-checker/contents --jq '.[].name'
# WFS-service testen met ogrinfo
ogrinfo "WFS:https://service.pdok.nl/lv/bag/wfs/v2_0" -summary
# Features downloaden naar GeoJSON
ogr2ogr -f "GeoJSON" /tmp/panden.geojson \
"WFS:https://service.pdok.nl/lv/bag/wfs/v2_0" bag:pand \
-where "1=1" -limit 10
# CRS-transformatie bij download
ogr2ogr -f "GeoJSON" /tmp/panden_wgs84.geojson \
"WFS:https://service.pdok.nl/lv/bag/wfs/v2_0" bag:pand \
-t_srs EPSG:4326 -limit 10
| Probleem | Oorzaak | Oplossing |
|---|---|---|
InvalidParameterValue bij WMS/WFS | Verkeerde CRS of lagen-naam | Controleer GetCapabilities voor juiste waarden |
| Lege response bij bbox-filter | Verkeerde coördinaatvolgorde | WMS 1.3.0 respecteert CRS-asvolgorde: voor EPSG:4326 is dat lat/lon; voor EPSG:28992 is het x/y |
| Timeout bij grote WFS-requests | Te veel features opgevraagd | Gebruik count/maxFeatures parameter of bbox-filter |
text/xml in plaats van GeoJSON | outputFormat niet ondersteund | Controleer GetCapabilities voor beschikbare formaten |
| 403 bij PDOK-service | Rate limiting of IP-blokkade | Gebruik API-key voor intensief gebruik (via PDOK) |
| OGC API Features geeft HTML | Geen Accept-header meegegeven | Voeg Accept: application/geo+json header toe |
/ls-api (uit skills-standaarden) voor de ADR geo-module — richtlijnen voor GeoJSON, CRS-negotiatie en bbox in REST APIs./geo-meta voor metadata van services (ISO 19115, CSW)./geo-inspire voor INSPIRE-conforme view en download services.Zie reference.md voor uitgebreide OGC-protocoldetails, CRS-handling (EPSG:28992/RD New), en de volledige PDOK-servicecatalogus.