Reverse call geeft woonplaats Vlissingen ipv verwachte Domburg

Ik gebruik de locatieserver voor reverse geo coding van zwemwater locaties. Nu valt het me op dat als ik coordinaten voor een specifieke zwemplek invoer ik andere data terug krijg dan verwacht (ik verwacht Domburg als woonplaats, maar ik krijg Vlissingen in het eerst resultaat):

De call:
https://api.pdok.nl/bzk/locatieserver/search/v3_1/reverse?rows=5&type=woonplaats&fq=bron:BAG&lon=3.4623361391581&lat=51.553505544455

Resultaat:

{
  "response" : {
    "numFound" : 4,
    "start" : 0,
    "maxScore" : 12.268398,
    "numFoundExact" : true,
    "docs" : [ {
      "type" : "woonplaats",
      "weergavenaam" : "Vlissingen, Vlissingen, Zeeland",
      "id" : "wpl-e41b0226821f0bed6c162e3779eb4d94",
      "score" : 12.268398,
      "afstand" : 0.0
    }, {
      "type" : "woonplaats",
      "weergavenaam" : "Domburg, Veere, Zeeland",
      "id" : "wpl-9d6c3292a0752c8ceb5ac6c137480bcb",
      "score" : 12.268398,
      "afstand" : 79.28
    }, {
      "type" : "woonplaats",
      "weergavenaam" : "Westkapelle, Veere, Zeeland",
      "id" : "wpl-501e7e0f2bcc9e70fbbbd48e71057743",
      "score" : 12.268398,
      "afstand" : 370.27
    }, {
      "type" : "woonplaats",
      "weergavenaam" : "Aagtekerke, Veere, Zeeland",
      "id" : "wpl-494c8d6ffd1b15acf301296a41cf0a75",
      "score" : 12.268398,
      "afstand" : 1479.9
    } ]
  }
}

Als ik niet op type=woonplaats filter (call) krijg ik dit:

{
  "response" : {
    "numFound" : 4,
    "start" : 0,
    "maxScore" : 7.288357,
    "numFoundExact" : true,
    "docs" : [ {
      "type" : "adres",
      "weergavenaam" : "Schelpweg 17A, 4357RG Domburg",
      "id" : "adr-3c9098846ce0f8d803a92389f08571ca",
      "score" : 7.288357,
      "afstand" : 416.18
    }, {
      "type" : "adres",
      "weergavenaam" : "Schelpweg 17, 4357RG Domburg",
      "id" : "adr-a0ee80424a2a937eb5be4931b13cd0ce",
      "score" : 7.288357,
      "afstand" : 416.97
    }, {
      "type" : "adres",
      "weergavenaam" : "Schelpweg 17C, 4357RG Domburg",
      "id" : "adr-037ae787c4834e9d976f0f5daa7056fc",
      "score" : 7.288357,
      "afstand" : 420.04
    }, {
      "type" : "adres",
      "weergavenaam" : "Schelpweg 17B, 4357RG Domburg",
      "id" : "adr-46ef0b6361645097df9f7bce24f39e16",
      "score" : 7.288357,
      "afstand" : 445.13
    } ]
  }
}

Nu kan ik hier ook wel de woonplaats uit halen door de weergavenaam te parsen, maar toch vraag ik me af waar Vlissingen vandaan komt. Ook omdat die een afstand heeft van 0.0, terwijl het centrum van Vlissingen toch zeker 15 kilometer van deze plek vandaan is.

Hoe kan ik de juiste (bag woonplaats) terug krijgen?

Kijk eens goed naar de grens van de woonplaats Vlissingen. Locatieserver geeft een correct antwoord, alleen is de woonplaatsgrens van Vlissingen ietwat contra-intuitief, om het zacht uit te drukken:

Je zult bij nogal wat andere woonplaatsen daar hetzelfde probleem aantreffen, als je net iets te ver van de kust zit.

1 like

Dank helder (leuke edge case weer :slight_smile: ).

Wat raad je aan, gewoon adres pakken en daar woonplaats uithalen? Of kan ik daar ook verrassingen krijgen. Heeft weergave naam van een adres altijd de structuur: weergavenaam" : "Schelpweg 17A, 4357RG Domburg

Of kan ik met die call nog extra velden krijgen waar de woonplaats inzit door anders te filteren?

Hmmm
 voor dit specifieke geval zou ik kiezen voor het dichtstbijzijnde adres, denk ik. Maar dat kan op andere plekken weer tricky worden. Verrassingen zul je altijd houden (bv woonplaatsgrenzen op 't Marker- en IJsselmeer
).

Opmaak van weergavenaam is altijd hetzelfde idd. Maar je kunt uiteraard ook een 2e call doen met het id, om zo alle details te krijgen. Dan hoef je niet te parsen op spaties (die ook voorkomen in woonplaatsnamen).

1 like

Of je knipt de water delen (uit bgt) af van de woonplaatsen (uit bag) en maakt een grid van bijvoorbeeld 1x1 meter op die water delen. Vervolgens met een ‘nearest neighbour’ analyse laat je berekenen welke woonplaats het dichtst bij elke gridcel ligt?

En vervolgens aan elkaar grenzende cellen weer aan elkaar aggregeren.

1 like

@sbjager Een 2e call lijkt niet nodig met fl=woonplaatsnaam krijg ik ook de woonplaats terug.

https://api.pdok.nl/bzk/locatieserver/search/v3_1/reverse?rows=4&fq=bron:BAG&lon=3.4623361391581&lat=51.553505544455&fl=woonplaatsnaam&fl=weergavenaam

@ThomasHaarlem Dank. Ik heb zelf al bebouwde kommen (weer wat anders dan bag woonplaatsen) in mongodb zitten. Kortom dit zou ik ook kunnen gebruiken.

Niettemin als ik dan even Het Rutbeek pak, dat is een recreatieplas bij Enschede. Die zou in zo’n geval dan het dichtst bij Boekelo liggen. Ik heb dan toch liever (gevoel was logisch voelt?) de woonplaats in het postadres.

Helaas is Boekelo geen woonplaats, en die zul je dus ook nooit terug krijgen. Het officiele adres van de vbo’s daar is Enschede.
Er zijn meerdere gemeentes geweest die dat deden, zo hebben de adressen in Julianadorp heel lang officieel als woonplaats ‘Den Helder’ gehad. Is inmiddels daar wel aangepast, bij Enschede blijkbaar niet. En dus zul je bij Rutbeek nooit Boekelo terug krijgen uit de BAG. Je zou een melding kunnen doen overigens, en hopen dat de gemeente het aanpast.

Nee ik weet dat Boekelo geen BAG woonplaats is, net zoals Usselo, Lonneker etc.

Het is voor “gewone mensen” echter wel een woonplaats. Je rijdt binnen en ziet een blauw bebouwde kom bord :slight_smile:

Daarom heb ik destijds m’n eigen BRT lookup gemaakt: