Geometrie ontwerp gebiedsaanwijzingen omgevingswet ontsluiten

Hoi allen,

Ik ben nog niet zo bekend met de omgevingswet en probeer daarom al sinds een tijdje uit te vogelen hoe ik geometrieën gelinkt aan activiteiten uit de omgevingswet kan ontsluiten via een van de beschikbare APIs om deze in ons eigen GIS systeem in te kunnen laden.

Nu weet ik dat je via de presenteren API kan zoeken naar locaties op basis van een meegegeven geometrie (punt) om zo alle codes op te halen van geometrien die een intersect relatie hebben tot de meegestuurde geometrie. Zo kwam ik via de documentatie onder andere op de volgende 2 end points uit.

  1. https://service.pre.omgevingswet.overheid.nl/publiek/omgevingsdocumenten/api/presenteren/v7/locatieidentificaties/_zoek

  2. https://service.pre.omgevingswet.overheid.nl/publiek/omgevingsdocumenten/api/presenteren/v7/ontwerplocaties/technischids/_zoek

Ook weet ik van het bestaan van de downloaden API af waar je een locatie identificatie code zoals nl.imow-ws0654.ambtsgebied.84c897edf10245f7bf402e234e073f2b (verkregen via presenteren API) kan meegeven in de request body om een download verzoek betreft een .gpkg package te maken. Volgens de andere end points kun je dan de status ophalen en deze uiteindelijk downloaden.

Het is me op deze manier gelukt om een aantal willekeurige .gpkg bestanden te downloaden en te openen in QGIS. Tot nu toe is het me echter enkel gelukt om een geometrie ter grote van de gemeente of provincie terug te krijgen.

Als ik echter bij het omgevingsloket bij regels op de kaart kijk bij de gemeente someren dan zie ik dat ze een ontwerp omgevingsplan hebben waarin een aantal activiteiten zijn meegenomen, waaronder ‘bouwactiveiten’. Wanneer ik in de viewer met mijn muis hierop ga staan dan zie ik dat er op de kaart oranje vlakken tevoorschijn komen. Hoe kan ik deze via een van de API’s ontsluiten zodat ik deze in QGIS kan inladen?

Kan iemand mij hiermee helpen aan de hand van een voorbeeld (al die APIs zijn best een doolhof voor mij :wink:)?
Alvast bedankt :slight_smile:

2 likes

In mijn beleving is er nog steeds geen API die geometrie behorende bij een bepaald object (bijvoorbeeld een activiteitaanduiding) uitserveert.

Er zijn bij mijn weten 2 workarounds beschikbaar:

  • uit de API halen bij welk omgevingdsdocument het betreffende object behoort; dan dit omgevingsdocument asynchroon downloaden via de downloadservice. Dan het object daarin opzoeken en dan de verwijzing naar de bijbehorende geometrie volgen.
  • de vectortiles gebruiken die worden uitgeserveerd voor de viewer regelsopdekaart. Daarin de juiste geometrie opzoeken, deze ontdubbelen en dan de coordinaten extraheren en omvormen tot een correcte geometrie (deze methode is van horen-zeggen dus kan ik niet netjes voor je beschrijven)

Ik hoop dat mijn antwoord strakjes wordt gecorrigeerd want van geen van beide opties worden we blij.

3 likes

@valentin de ‘oranje vlakken’ die je in de viewer ziet zijn vector tiles; bedoeld voor het verbeelden van geometrieën in een viewer. Maar niet bedoeld voor het uitvoeren van geografische analyses. Om die reden zou ik je workaround 2 van @marco_duiker ontraden.
De vraag is nu: waarvoor wil je de geometrieën in QGis gebruiken: om te verbeelden op een kaart, of om geografische analyses mee te doen?

1 like

Een GIS als QGIS wordt gebruikt voor het maken van kaarten en voor het doen van analyses.

Ik denk niet dat we een gebruikersonderzoek nodig hebben om te bedenken dat gebruikers beide willen (ikzelf in ieder geval wel).

Zou je daarvoor een werkwijze kunnen aanraden?

3 likes

Zoals @marco_duiker aangeeft zouden we in principe de geometrieën voor zowel het verrichten van analyses als voor het maken van enkel kaartjes willen gebruiken. Als ik het goed begrijp zijn de geometrien op de vector tiles versimpeld en daarmee niet te gebruiken voor analyses. Ik vroeg me af of iemand een voorbeeld heeft betreft de uitwerking van de eerste manier.

Gebasseerd op jullie informatie is me tot nu toe het volgende gelukt:

  1. Via de website van regels op de kaart een plek aan te klikken (RD: 176573, 379146) en dan het ontwerp omgevingsplan te selecteren (in dit geval van de gemeente someren). Dan de vermelde identificatie code ‘/akn/nl/act/gm0847/2020/omgevingsplan’ te kopieren en deze gebruiken in de downloaden API. Eerste vervolg vraag: Is het ook mogelijk om via een API via RD coordinaten deze ‘/akn/nl/act/gm0847/2020/omgevingsplan’ code te vinden?

  2. Vervolgens heb ik in Python de volgende requests gebruikt om het hele omgevingsplan asynchroon te downloaden:

url = 'https://service.pre.omgevingswet.overheid.nl/publiek/omgevingsdocumenten/api/downloaden/v1/aanvraag'

headers = {

    'x-api-key': APIKEY,

    'accept': 'application/json',

    'Content-Type': 'application/json'

}

data = {'regelingId': '/akn/nl/act/gm0847/2020/omgevingsplan'}

response = requests.post(url, headers=headers, json=data)

if response.status_code == 200:

  verzoekIdentificatie = response.json()['verzoekIdentificatie']


url = f'https://service.pre.omgevingswet.overheid.nl/publiek/omgevingsdocumenten/api/downloaden/v1/status/{verzoekIdentificatie}'

headers = {

    'x-api-key': APIKEY,

    'accept': 'application/json'

}

response = requests.get(url, headers=headers)

if response.status_code == 200:

  status = response.json()['status']


url = f'https://service.pre.omgevingswet.overheid.nl/publiek/omgevingsdocumenten/api/downloaden/v1/teruglevering/{verzoekIdentificatie}'

headers = {

    'x-api-key': APIKEY,

    'accept': 'application/json'

}

response = requests.get(url, headers=headers)

if response.status_code == 200:

  url = response.json()['url'])


url = 'https://service.pre.omgevingswet.overheid.nl/publiek/omgevingsdocumenten/api/downloaden/v1/teruglevering/3e183908-190f-42a4-bc6d-a729c0c9a0f2_20241016-1609214.zip'

headers = {

    'x-api-key': APIKEY

}

response = requests.get(url, headers=headers)

if response.status_code == 200:

    filepath = r'test.zip'

    with open(filepath, 'wb') as f:

        f.write(response.content)

Ik zie dan wanneer ik het zip bestand unzip een hele hoop mappen en bestanden.
image

Ik zie eerst een heel aantal mappen die beginnen met IO- gevolgd door een hele code (bv: IO-9386805462745451025). In elk van deze mappen zie ik dan een gml bestand (bv: GIO-6bf66559.gml). Deze zijn alleen niet direct in te laden via QGIS of FME. Wanneer ik het open met kladblok zie ik wel dat er wel objecten met een geometrie inzitten zoals in dit specifieke geval betreft ‘locaties beperkingen veehouderij’. Vervolg vraag 2: Hoe kan ik deze wel geopent krijgen in een GIS software of moet ik hiervoor een python script schrijven? Daarnaast lijken dit weer andere geometrien te zijn dan de oranje die ik zie op de website. Als ik verder kijk in de map OW-bestanden zie ik een gebieden.xml bestand met daarin elementen met de volgende xml structuur:

    <sl:stand>
        <ow-dc:owObject>
            <l:Gebied>
                <l:identificatie>nl.imow-gm0847.gebied.00108b5d2d5f4e03b84d74f258c6cc03</l:identificatie>
                <l:noemer>agrarisch grondgebruik #9</l:noemer>
                <l:geometrie>
                    <l:GeometrieRef xlink:href="4f8ae57a606046b395ac1e630e4e3da7"/>
                </l:geometrie>
            </l:Gebied>
        </ow-dc:owObject>
    </sl:stand>

ik zie hier een xlink bij
vraag 3: kan ik dan via een of andere API de geometrie ophalen door deze code mee te geven, of werkt het zo niet?

Kortom zoals je kunt zien vind ik het lastig om wegwijs te worden in het gros aan API end points omtrent de omgevingswet. @barthuijbers mocht je weten hoe ik verder kan komen dan hoor ik het graag :wink:

Je bent niet de enige…

Dat is niet helemaal waar. In deze toepassing is de vector tyling zo ingericht dat de geometrie op het diepste niveau niet versimpeld is.

Met behulp van de GIO import plugin (direct te installeren vanuit QGIS vanuit de QGIS plugin repository) kun je deze bestanden wel direct inlezen.

op basis van deze id kun je de geometrie terugvinden in een van de geometriebestanden (GIO-gml).

Naar deze identificatie wordt verwezen vanuit een van de andere objecten zoals bijvoorbeeld een juridischeRegel, een activiteitaanduiding of een gebiedsaanwijzing.

Dit is niet waar. Zelfs op het diepste niveau kijk je niet naar de originele geometrieen.

1 like

Zeker, maar niet met één request.
Je kan op het /locatieidentificaties/_zoek endpoint een geoquery doen om een lijst met locatie identificaties te verkrijgen. Deze kan je vervolgens in de requestbody van /regelingen/regels/_zoek en/of /regelingen/tekstdelen/_zoek stoppen.
Requestbody wordt dan zoiets:

{
  "zoekParameters": [
    {
      "parameter": "locatie.identificatie",
      "zoekWaarden": [
        "locatie identificatie 1",
        ....
        "locatie identificatie n"
      ]
    },
   .... andere filters kunnen hier .... 
  ]
}

Nog niet. Er is een API in ontwikkeling waarmee obv geometrie identificatie de geometrie als GeoJSON opgevraagd kan worden in RD en ETRS89. Ik verwacht dat we die in de komende weken in productie zetten.

De DSO Viewer gebruikt voor het tonen van de vlakken op de kaart een versie van de Omgevingsdocumenten Vectortiles API die nog niet publiek beschikbaar is. Verwachting is dat deze ook in de komende paar weken gepubliceerd wordt. De vectortiles in die API bevatten alle geometrieën met alleen de identificatie als attribuut. Als je uit de Presenteren API een object opvraagt en de geometrie identificatie(s) van de bijbehorende locatie(s), kan je de juiste geometrie uit de vector tiles selecteren en inkleuren.

Maar, zoals al eerder opgemerkt, vector tiles zijn alleen bedoeld voor kaartweergave doeleinden. Op geen enkel zoomniveau krijg je daar de originele geometrie terug zoals die door de bronhouder is aangeleverd aan het DSO.

Voor downloads van de originele geometrieën zijn de huidige opties:

  • Downloaden van de hele regeling met daarin de GIOs
  • Downloaden van een gpkg obv locatie identificatie

In mijn beleving gaat dan de implementatie in tegen eerder gemaakte afspraken.