Zoeken op coordinaten url

Goedemorgen,

Het /plannen endpoint ondersteunt alleen GET en heeft geen mogelijkheid om te zoeken mbv een geometrie. Daarvoor moet je zijn bij het /plannen/_zoek endpoint waar je dit met een POST wel kan.

Een succesvol request zal de volgende onderdelen moeten hebben:

url: https://ruimte.omgevingswet.overheid.nl/ruimtelijke-plannen/api/opvragen/v3/plannen/_zoek
HTTP method: POST
headers:

  • X-Api-Key: de API key die je waarschijnlijk al hebt
  • Content-Type: het content-type van de requestbody. Op dit moment moet dat application/json zijn
  • Content-Crs: het coordinate-reference-system van de geometrie in de requestbody. epsg:28992 voor RD coordinaten, epsg:4258 voor ETRS89.

requestBody:
Hieronder een voorbeeld van een requestbody waarmee gezocht kan worden naar alle plannen die een geometrie hebben die intersect met de meegegeven polygon (met RD coordinaten).

{
    "_geo": {
        "intersects": {
            "type": "Polygon",
            "coordinates": [
                [
                    [
                        207328.296,
                        475487.121
                    ],
                    [
                        207328.885,
                        475494.933
                    ],
                    [
                        207327.962,
                        475496.243
                    ],
                    [
                        207322.995,
                        475502.031
                    ],
                    [
                        207315.089,
                        475502.423
                    ],
                    [
                        207310.717,
                        475498.747
                    ],
                    [
                        207305.554,
                        475494.313
                    ],
                    [
                        207304.487,
                        475495.558
                    ],
                    [
                        207297.729,
                        475489.507
                    ],
                    [
                        207313.713,
                        475488.252
                    ],
                    [
                        207328.296,
                        475487.121
                    ]
                ]
            ]
        }
    }
}

Zoeken met een punt kan met een requestbody als deze (nu met ETRS89 coordinaat):

{
  "_geo": {
    "intersects": {
      "type": "Point",
      "coordinates": [5.2038244820589785, 52.12233072035188]
    }
  }
}

Naast de intersects worden ook within en contains ondersteund.
Met within zou je plannen vinden die een geometrie hebben die volledig binnen de zoek-geometrie valt.
Met contains zou je plannen vinden waarvan de geometrie de zoek-geometrie volledig bevat.

Laat het me weten al je er niet uit komt of nog andere vragen hebt

Hi Robin,

Dank voor je antwoord!

Misschien was ik erbij vergeten te vertellen dat ik mijn request via Excel uitvoer. De BAG API heb ik momenteel werkzaam, waar ik mijn eerste query op postcode en huisnummer zoek. Voor deze API is het echter noodzakelijk om op coördinaten te zoeken. Als ik jou goed begrijp moet ik in dit geval via de URL: https://ruimte.omgevingswet.overheid.nl/ruimtelijke-plannen/api/opvragen/v3/plannen/_zoek uitvoeren.

Het probleem waarmee ik nu echter mee stoei, hetgeen waarschijnlijk vrij gemakkelijk is op te lossen, is het plaatsen van de coördinaten in de URL zodat ik mijn begin JSON Output heb en verder kan gaan. Bij de BAG API ziet het er als volgt uit:

URL: https://bag.basisregistraties.overheid.nl/api/v1/nummeraanduidingen
Query: ?postcode=" & Postcode + “&huisnummer=” & Huisnummer

API Key wordt dan via de header meegestuurd.

Maar hoe voer ik hetzelfde principe uit maar dan op basis van de coördinaten?

Bedankt!

Het request dat je hebt voor de BAG API maakt alleen gebruik van query-parameters die je inderdaad eenvoudig in de URL toe kan voegen.
Voor het zoeken op geometrie in de ruimtelijke plannen API (en de BAG API) heb je niet genoeg aan query-parameters. Je zal een POST request moeten doen met een JSON string als requestbody.

Een korte Google actie liet zien dat er meerdere manieren zijn om HTTP requests uit te voeren vanuit Excel (bijvoorbeeld: Send API POST Requests in Excel with Power Query - YouTube). Als je aan kan geven welke manier je gebruikt, is er vast wel iemand hier op het forum te vinden die je verder kan helpen.

Bedankt Robin! De POST Request via Excel is gelukt.

Ik heb gebruik gemaakt van de Point coördinaten + intersects. Ook is het gelukt om het onherroepelijk bestemmingsplan te vinden van het specifieke object, inclusief het ID. Op basis van dit ID wil ik graag de fungerende Enkelbestemming zoeken via:

https://ruimte.omgevingswet.overheid.nl/ruimtelijke-plannen/api/opvragen/v3/plannen/{planId}/bestemmingsvlakken

Dit levert mij echter alle bestemmingsvlakken binnen het bestemmingsplan op, ondanks dat in de request dezelfde coördinaten weer worden gebruikt via een POST. Hoe kom ik er nu achter welke Enkelbestemming voor de coördinaten van toepassing is?

Als voorbeeld gebruik ik
Locatie: Paul Krugerlaan 2, 2571HK 's-Gravenhage → enkelbestemming Gemengd-2 volgens ruimtelijke plannen viewer.
Coordinaten: 4.28537, 52.07069

Tnx!

Het POST endpoint /plannen/{id}/bestemmingsvlakken ondersteunt het zoeken op geometrie niet.

Voor het zoeken naar planobjecten mbv een geometrie is momenteel alleen het /_zoek endpoint beschikbaar (let op: niet /plannen/_zoek !). Daar kan je een request doen met een planId parameter. Voor jouw specifieke geval zou het dit zijn:

https://ruimte.omgevingswet.overheid.nl/ruimtelijke-plannen/api/opvragen/v3/_zoek?planId=NL.IMRO.0518.BP0156ETransvaal-50VA

Waar je de volgende respons krijgt met de gezochte enkelbestemming:

{
  "_embedded": {
    "resultaten": [
      {
        "_links": {
          "self": {
            "href": "https://ruimte.omgevingswet.overheid.nl/ruimtelijke-plannen/api/opvragen/v3/plannen/NL.IMRO.0518.BP0156ETransvaal-50VA/bouwvlakken/NL.IMRO.0518.BP121950608-00"
          }
        },
        "planId": "NL.IMRO.0518.BP0156ETransvaal-50VA",
        "id": "NL.IMRO.0518.BP121950608-00",
        "type": "bouwvlak"
      },
      {
        "_links": {
          "self": {
            "href": "https://ruimte.omgevingswet.overheid.nl/ruimtelijke-plannen/api/opvragen/v3/plannen/NL.IMRO.0518.BP0156ETransvaal-50VA/maatvoeringen/NL.IMRO.0518.MP121974883-00"
          }
        },
        "planId": "NL.IMRO.0518.BP0156ETransvaal-50VA",
        "id": "NL.IMRO.0518.MP121974883-00",
        "type": "maatvoering"
      },
      {
        "_links": {
          "self": {
            "href": "https://ruimte.omgevingswet.overheid.nl/ruimtelijke-plannen/api/opvragen/v3/plannen/NL.IMRO.0518.BP0156ETransvaal-50VA/bestemmingsvlakken/NL.IMRO.0518.EP121876942-00"
          }
        },
        "planId": "NL.IMRO.0518.BP0156ETransvaal-50VA",
        "id": "NL.IMRO.0518.EP121876942-00",
        "type": "enkelbestemming"
      }
    ]
  },
  "_links": {
    "next": {
      "href": "https://ruimte.omgevingswet.overheid.nl/ruimtelijke-plannen/api/opvragen/v3/_zoek?planId=NL.IMRO.0518.BP0156ETransvaal-50VA&page=2"
    },
    "prev": {
      "href": null
    },
    "self": {
      "href": "https://ruimte.omgevingswet.overheid.nl/ruimtelijke-plannen/api/opvragen/v3/_zoek?planId=NL.IMRO.0518.BP0156ETransvaal-50VA"
    }
  }
}

Zou misschien handig zijn om filteren op type te ondersteunen op dit endpoint. Zal de wijziging daarvoor op ons backlog zetten.

Heb dit vandaag even tussen het andere werk door opgepakt. Er is nu een planobjectType parameter beschikbaar op het /_zoek endpoint waarmee je de resultaten kan filteren op een specifiek planobject type.

Voor je enkelbestemming doe je dan het volgende request:
https://ruimte.omgevingswet.overheid.nl/ruimtelijke-plannen/api/opvragen/v3/_zoek?planId=NL.IMRO.0518.BP0156ETransvaal-50VA&planobjectType=enkelbestemming

Geweldig! Het is gelukt.

Bedankt voor je hulp :slight_smile:

1 like

Hallo Robin,

Heb sinds november 2020 niet meer de Ruimtelijke Plannen geraadpleegd. Maar ik zie nu dat mijn searches bij planobjectType parameter op enkelbestemming, dubbelbestemming of beiden een leeg resultaat [ ] terug krijgen. Dat was voorheen niet zo. Search software is ongewijzigd.

Kan jij hier even naar kijken? Alvast bedankt.

Een probleem met het type veld in de respons heb ik wel vrij snel kunnen vinden. Aangezien het planobjectType filter op dezelfde data probeert te filteren, zal er inderdaad een bugje in zitten.

We gaan er naar kijken.

Hallo Robin,

Is het lastiger dan gedacht? Zie het fenomeen nog steeds optreden.

John

Ja, het was lastiger dan gedacht. Het hele endpoint bleek niet naar behoren te functioneren na de wisseling van het backend van begin dit jaar (waar niemand iets van had horen te merken … :sweat:). En er kwamen andere bugs tussendoor die hogere prioriteit hadden.

De oplossing van het probleem is zojuist uitgerold. planId en planobjectType filters en paginering werken weer.

De lege waarden voor type die je nog tegen zou kunnen komen, zijn een bekend probleem waar we nog mee bezig zijn.

Mocht je nog merken dat er iets anders niet naar verwachting werkt, horen we dat graag.

Ja, samengestelde systemen met mogelijk meerdere produktie teams kunnen altijd voor verrassingen zorgen.

Is het een idee om samengestelde queries uit BRK, BAG en Ruimtelijke Plannen in een soort QA/QC acceptatie mee te nemen?

Dat heeft niet heel veel zin. In principe hebben die APIs niks met elkaar te maken behalve dat ze gebruik maken van dezelfde database en backends. Testen voor de IHR API zijn nu uitgebreid om dit probleem een volgende keer eerder op te merken.

Het probleem met de lege type waarden is ook opgelost, dus het hele endpoint zou weer naar behoren moeten werken.

Hi Robin,

Even een vraag mbt een reactie welke hierboven hebt gegeven.

Ik maak gebruik van https://ruimte.omgevingswet.overheid.nl/ruimtelijke-plannen/api/opvragen/v4/plannen/_zoek?regelBinding=burgerbindend&regelStatus=geldend om de bestemmingsplannen voor een point op te vragen. Nu komt het voor dat niet bij elke locatie (point) een bestemmingsplan wordt teruggegeven, terwijl deze er wel moet zijn. Op een andere locatie binnen hetzelfde bestemmingsplan komt deze namelijk wel naarvoren.

Voorbeeld:
plandId: NL.IMRO.0361.BP00100-0305

point 4.771854579475986, 52.63078115837533 = geen bestemmingsplan
point 4.777509570667463, 52.63738433343166 = wel bestemmingsplan

Terwijl beide locaties binnen hetzelfde bestemmingsplan vallen.

Is dit een bug of doe ik iets verkeerd?

Dank!

Ik kan dit reproduceren en we gaan kijken wat de oorzaak is. Wordt vervolgd!

https://xkcd.com/2170/

8 likes

Los van de vraag of de nauwkeurigheid wel realistisch is, feitelijk waar Jochem op doelt, hebben we de oorzaak achterhaald. Deze zit in het platform waarvan wij gebruik maken. Op dit moment zitten we echter middenin een migratie naar een nieuw platform. Daarmee zal dit automatisch verholpen moeten zijn. Deze migratie zal begin januari afgerond zijn.

1 like

Ja hoor, daar is de coördinatenpolitie weer! :wink:

Leuke strip, en helemaal waar natuurlijk. Maar we werken hier met digitale systemen, die gewoon veel decimalen opslaan en weergeven. En als je die copy-paste komen ze in je bericht te staan. Deze handmatig gaan verwijderen (en uitzoeken hoeveel je er wel mag laten staan) is extra werk en zonde van de tijd. En er is niemand die denkt dat je buiten met een microscoop hebt staan landmeten en echt super precies wil weten waar een bestemmingsplan ligt. Dus, “please stop”!

1 like

Haha :slight_smile: je hebt ongetwijfeld gelijk maar ik ben zelf toch wel van mening dat het niet vaak genoeg herhaald kan worden wat decimalen voor werkelijke waarde hebben. Zie het bij een aantal van onze klanten ook terug dat ze lat en lon beschouwen als een soort x,y en niet weten of 4 decimalen wel/niet genoeg is, 6 lijkt al teveel te zijn in hun ogen. Dit in tegenstelling tot RD, waar ze in AutoCAD het aantal units op minimaal 4 zetten en zonder blikken of blozen maten ophangen aan een kadastrale grens of leiding uit de Klic.

Al meerdere keren gehad dat landmeetkundige bureaus grenzen rechtstreeks uit de DKK uitzetten bij grensgeschillen want je kunt coördinaten toch tot op de mm uit die kaart halen.

Dus wat mij betreft, kom maar op met die plaatjes :stuck_out_tongue:

4 likes