Starten met AHN WCS service

Hallo,

ik probeer mijn weg te vinden in de AHN WCS service. Ik heb al wat rondgesnuffeld in andere topics, om te voorkomen dat ik vragen stel die al vaak gesteld zijn, maar ik blijf toch met vragen zitten (deze bijv. Optimale manier om hoogte data op te halen? )

• is er documentatie?
• als ik het goed begrijp zijn de maten in Rijksdriehoek (ik kende dit nog niet). Is dit de enige geaccepteerde maatvoering of kun je ook werken met gps coordinaten? Ik heb begrepen dat het zelf omzetten van de een in de ander heel moeilijk is.
• een van de properties is de BBOX en andere zijn de WIDHT en HEIGHT. Als ik het goed begrijp zijn de width en height slechts voor de export van de data. Maar hoe zit het als de ratio van de bbox afwijkt van de ratio width/height? Is er een manier om de ratio van de width/height die van de bbox automatisch te laten volgen? Ik kan dat natuurlij zelf vantevoren uitrekenen, zou ik dan de maatvoering van de Rijksdriehoekmaten kunnen gebruiken of is die x/y verhouding niet natuurgetrouw?

Veel dank alvast.

TLDR;

http://geodata.nationaalgeoregister.nl/ahn1/wcs?request=GetCoverage&service=WCS&version=1.0.0&coverage=ahn1_100m&crs=EPSG:4326&response_crs=EPSG:4326&bbox=4.2929383,51.986261,4.4177553,52.04231&width=500&height=500&FORMAT=image/tiff

We nemen bijvoorbeeld de GPS coordinaten van de omgeving van Delft.
Deze plaatsen we in de bbox parameter (het CRS is long (Lentegraad) lat (Breedtegraad), dus deze coordinaten even omdraaien in het request).
51.986261,4.2929383 (links onder Delft)
52.04231,4.4177553 (rechts boven Delft)

Hoe je de WIDTH en HEIGHT moet uitrekenen zou ik zo snel niet weten.
Het handigste is om een ‘vierkante’ boundingbox te nemen, zodat de afbeelding in verhouding is.


WCS, de Web Coverage Service standaard staat gedocumenteerd op de site van opengeospatial.
Pagina met alle specificatie documenten: Web Coverage Service - Open Geospatial Consortium
De meest gebruikte versie van de standaard is de 1.0.0 variant.
PDF: https://portal.opengeospatial.org/files/05-076

Je zou in principe ook GPS coordinaten kunnen gebruiken.
De meeste GPS ontvangers gebruiken het WGS84 coordinaten systeem.
Dit systeem is ook bekend onder de noemer EPSG:4326.
https://spatialreference.org/ref/epsg/4326/

Hieronder een tutorial over het gebruik van een WCS:

Stap 1 is een GetCapabilities verzoek doen:
http://geodata.nationaalgeoregister.nl/ahn1/wcs?request=getcapabilities&service=WCS

Parameters:

  • request=GetCapabilities (Operation)
  • service=WCS (op de service WCS)

In dit document zien we welk service type en welke versies deze service ondersteund:

<ows:ServiceType codeSpace="OGC">OGC WCS</ows:ServiceType>
<ows:ServiceTypeVersion>2.0.1</ows:ServiceTypeVersion>
<ows:ServiceTypeVersion>1.1.1</ows:ServiceTypeVersion>
<ows:ServiceTypeVersion>1.0.0</ows:ServiceTypeVersion>

Welke operations er gebruikt kunnen worden:

<ows:OperationsMetadata>
 <ows:Operation name="GetCapabilities">
 ...
 </ows:Operation>
 <ows:Operation name="DescribeCoverage">
 ...
 </ows:Operation>
 <ows:Operation name="GetCoverage">
 ...
 </ows:Operation>
</ows:OperationsMetadata>

En welke coverages er worden aangeboden:

<wcs:Contents>
 <wcs:CoverageSummary>
  <wcs:CoverageId>ahn1_100m</wcs:CoverageId>
  <wcs:CoverageSubtype>RectifiedGridCoverage</wcs:CoverageSubtype>
 </wcs:CoverageSummary>
 <wcs:CoverageSummary>
  <wcs:CoverageId>ahn1_25m</wcs:CoverageId>
  <wcs:CoverageSubtype>RectifiedGridCoverage</wcs:CoverageSubtype>
 </wcs:CoverageSummary>
 <wcs:CoverageSummary>
  <wcs:CoverageId>ahn1_5m</wcs:CoverageId>
  <wcs:CoverageSubtype>RectifiedGridCoverage</wcs:CoverageSubtype>
 </wcs:CoverageSummary>
</wcs:Contents>

Daarnaast is er ook te vinden welke projecties er beschikbaar zijn:

<crs:CrsMetadata>
 <crs:crsSupported>http://www.opengis.net/def/crs/EPSG/0/28992</crs:crsSupported>
 <crs:crsSupported>http://www.opengis.net/def/crs/EPSG/0/25831</crs:crsSupported>
 <crs:crsSupported>http://www.opengis.net/def/crs/EPSG/0/25832</crs:crsSupported>
 <crs:crsSupported>http://www.opengis.net/def/crs/EPSG/0/3034</crs:crsSupported>
 <crs:crsSupported>http://www.opengis.net/def/crs/EPSG/0/3035</crs:crsSupported>
 <crs:crsSupported>http://www.opengis.net/def/crs/EPSG/0/3857</crs:crsSupported>
 <crs:crsSupported>http://www.opengis.net/def/crs/EPSG/0/4258</crs:crsSupported>
 <crs:crsSupported>http://www.opengis.net/def/crs/EPSG/0/4326</crs:crsSupported>
</crs:CrsMetadata>

Hierin zien we dus dat de EPSG:4326 ook ondersteund word:

<crs:crsSupported>http://www.opengis.net/def/crs/EPSG/0/4326</crs:crsSupported>

Stap 2 (optioneel) is een DescribeCoverage verzoek doen:
Hiermee kan je een omschrijving opvragen van een coverage die aangeboden word in de service.
http://geodata.nationaalgeoregister.nl/ahn1/wcs?request=describecoverage&service=WCS&version=1.0.0&coverageid=ahn1_100m

Parameters:

  • request=DescribeCoverage (Operation)
  • service=WCS (op de service WCS)
  • version=1.0.0 (met versie 1.0.0, ondersteunde versies in Capabilities)
  • coverageid=ahn1_100m (op coverage ahn1_100m, een van de Coverage Summaries in Capabilities)

Hierin zie je bijvoorbeeld in welk gebied er data te vinden is:
Coordinaten in CRS84

<lonLatEnvelope srsName="urn:ogc:def:crs:OGC:1.3:CRS84">
  <gml:pos>3.19986718092473 50.6726082021021</gml:pos>
  <gml:pos>7.27382008181814 53.5644946394505</gml:pos>
</lonLatEnvelope>

of in andere coordinaten systemen o.a. RD (EPSG:28992)

<gml:Envelope srsName="EPSG:28992">
 <gml:pos>10000 300000</gml:pos>
 <gml:pos>280000 619700</gml:pos>
</gml:Envelope>

En de specifieke formaten die je kan bevragen:

<supportedFormats nativeFormat="GEOTIFF_BYTE">
 <formats>GEOTIFF_BYTE</formats>
 <formats>GEOTIFF_INT16</formats>
 <formats>GEOTIFF_RGB</formats>
 <formats>GEOTIFF_FLOAT32</formats>
</supportedFormats>

En in welke band er data te lezen is:
(Waardes gaan van -3.4028e+38 tot 3.4028e+38)

<gmlcov:rangeType>
 <swe:DataRecord>
  <swe:field name="band1">
   <swe:Quantity>
    <swe:nilValues/>
    <swe:uom code="W.m-2.Sr-1"/>
    <swe:constraint>
     <swe:AllowedValues>
      <swe:interval>-3.4028e+38 3.4028e+38</swe:interval>
      <swe:significantFigures>12</swe:significantFigures>
     </swe:AllowedValues>
    </swe:constraint>
   </swe:Quantity>
  </swe:field>
 </swe:DataRecord>
</gmlcov:rangeType>

Stap 3 is een GetCoverage verzoek doen:
http://geodata.nationaalgeoregister.nl/ahn1/wcs?request=GetCoverage&service=WCS&version=1.0.0&coverage=ahn1_100m&crs=EPSG:4326&response_crs=EPSG:4326&bbox=4.2929383,51.986261,4.4177553,52.04231&width=500&height=500&FORMAT=image/tiff

We nemen bijvoorbeeld de GPS coordinaten van de omgeving van Delft.
Deze plaatsen we in de bbox parameter (het CRS is long (Lentegraad) lat (Breedtegraad), dus deze coordinaten even omdraaien in het request).
51.986261,4.2929383 (links onder Delft)
52.04231,4.4177553 (rechts boven Delft)

Hoe je de WIDTH en HEIGHT moet uitrekenen zou ik zo snel niet weten.
Het handigste is om een ‘vierkante’ boundingbox te nemen, zodat de afbeelding in verhouding is.

regio-delft

Parameters:

  • request=GetCoverage (Operation)
  • service=WCS (op de service WCS)
  • version=1.0.0 (met versie 1.0.0, ondersteunde versies in Capabilities)
  • coverage=ahn1_100m (op coverage ahn1_100m, een van de Coverage Summaries in Capabilities)
  • crs=EPSG:4326 (de CRS van de coordinaten, CRS staat voor Coordinate Reference System)
  • bbox=4.2929383,51.986261,4.4177553,52.04231 (de boundingbox van het verzoek met de coordinaten minx, miny, maxx, maxy)
  • width=500 (breedte van het plaatje in pixels)
  • height=500 (hoogte van het plaatje in pixels)
  • format=image/tiff (image/tiff gerenderd uit GEOTIFF_BYTE formaat, je kan ook andere formaten (png, etc) laten renderen op het native format zoals ze benoemd zijn in de Capabilies. Daarnaast kan je ook een ander type pakken zoals benoemd in de DescribeCoverage, bijv GEOTIFF_FLOAT32, etc.)

Hoop dat dit je verder helpt.

4 likes

Hey @daneng

dank voor je uitgebreide en zo te zien vrij volledig antwoord!

1 like

@daneng
Bedankt voor de uitgebreide uitleg. Ik heb er veel aan gehad.
Ik loop nu echter tegen het volgende probleem op.
Ik wil de data uit de BAG database (WFS) combineren met data uit de AHN3 database (WCS).
Via een aanvraag op basis van coördinaten in latitude, longitude heb ik deze informatie binnen kunnen krijgen.
Zie onderstaande koppelingen:

https://geodata.nationaalgeoregister.nl/bag/wfs?request=GetFeature&typeName=bag:pand&outputFormat=json&srsName=urn:ogc:def:crs:EPSG::28992&version=2.0.0&bbox=51.531439,5.974162,51.535177,5.980156,urn:ogc:def:crs:EPSG::4326

https://geodata.nationaalgeoregister.nl/ahn3/wcs?SERVICE=WCS&VERSION=1.0.0&REQUEST=GetCoverage&FORMAT=GEOTIFF_FLOAT32&COVERAGE=ahn3_05m_dsm&crs=EPSG:4326&response_crs=EPSG:4326&BBOX=5.974162,51.531439,5.980156,51.535177&WIDTH=801&HEIGHT=801

Als ik deze twee over elkaar leg vallen een aantal dingen op.

  1. De opgevraagde Geotiff betreft wel de juiste locatie maar is 90 graden gedraaid.
  2. De afmetingen van de Geotiff wijken af van de afmetingen uit het BAG bestand.

In Qgis vallen deze bestanden wel keurig over elkaar heen dus doe ik ergens vast iets niet goed.
Wellicht dat dit met het gebruik van het coördinaten systeem te maken heeft.
Mijn vraag is nu hoe ik ervoor kan zorgen dat beide datasets wel goed op elkaar aansluiten.

Je vraagt de BAG op in Rijksdriehoekstelsel. QGIS herkent dat en zal on the fly het herprojecteren zodat ze passen. Het is het makkelijkst om beide datasets in dezelfde projectie op te vragen, oftewel je BAG request aanpassen zodat je srsName niet 28992 (RD) maar 436 (WGS84) wordt:

https://geodata.nationaalgeoregister.nl/bag/wfs?request=GetFeature&typeName=bag:pand&outputFormat=json&srsName=urn:ogc:def:crs:EPSG::4326&version=2.0.0&bbox=51.531439,5.974162,51.535177,5.980156,urn:ogc:def:crs:EPSG::4326

Dat je data een kwartslag gedraaid is kan zijn omdat je viewer latitude/longitude omdraait, welke viewer gebruik je?

3 likes

@stvno
Dank je wel! Nu komen ze inderdaad keurig over elkaar heen te liggen.

2 likes

Hallo,
Ik heb een vergelijkbare vraag: Wil via WCS service AHN data raadplegen, echter geen 3D modellen.
Eigenlijk wil ik alleen van een serie XY coördinaten het Z coördinaat van de DTM maaiveld hoogte ophalen, bij voorkeur in een .csv bestand.
Het gaat om serie’s van slechts 40 tot 400 coördinaten, bij uitzondering misschien een keer 1000 stuks.
Kan iemand mij laten zien hoe dit kan; zover ik tot nu toe begrijp moet het mogelijk zijn.
Indien niet rechtstreeks mogelijk, heb ik ook QGIS ter beschikking, maar ben daar nog niet erg in thuis.
Bij voorbaat dank!