Lengtegraad, Breedtegraad achterhalen obv BAG-ID

Hallo Seb,

Het klopt helemaal dat je op basis van een BAG-ID de RD-coördinaten kunt achterhalen. (Zolang het ID’s van BAG objecten met coördinaten zijn)

Gezien het relatief grote aantal ID’s waarvan je de coördinaten wilt achterhalen is het misschien wel het meest voor de hand liggend dat je zelf een database opbouwt op basis van een BAG extract:
https://zakelijk.kadaster.nl/-/bag-extract

Als alternatief zou je eventueel gefaseerd de gegevens op kunnen vragen via de WFS:

of de BAG API:
https://bag.basisregistraties.overheid.nl/restful-api/-/article/basisregistraties-adressen-en-gebouwen-bag-#

Voor het volume ID’s dat je op wilt vragen zijn deze services echter niet bedoeld.

1 like

Hallo Pieter,

Dank voor de verheldering wat er wel en niet kan met het opvragen van BAG-gegevens. Jammer dat mijn oplossingsrichting niet gaat werken, maar wellicht heb je nog een goede suggestie voor de situatie waarin ik zit.
De lijst van ruim 40.000 locaties wordt vanuit Open Data door de Overheid twee keer per week bijgewerkt en verandert dus continue. Een statische separate database opbouwen zal dus niet werken, omdat ik dan voortdurend achter de feiten aanloop.
Toch wil ik graag deze locaties (of een dynamisch te kiezen selectie zoals een bepaalde plaats of gemeente) in Power BI op een kaartje visualiseren.
In de beschikbaar gestelde lijst zitten de volgende (adres-)gegevens:

  • Straat incl. huisnummer en huisnummertoevoeging (vb: “Watergoorweg 44a “)
  • 6 cijferige postcode (vb: “6669MA”)
  • Plaats (vb: “'s-Hertogenbosch”)
  • BAG-id (vb: “279010000003768”)

Nu kan ik in Power BI op basis van deze gegevens de locaties op een kaart laten plotten, maar dat gaat nogal eens fout. Met name de huisnummertoevoegingen zorgen voor fouten in de geocodering en is er eigenlijk geen eenvoudig algoritme om de huisnummertoevoeging van het huisnummer te scheiden, aangezien het in één en hetzelfde veld zit.
De voorkeur zou hebben om van elke locatie over een juiste lengte- en breedtegraad te beschikken. Vandaar dat ik had gehoopt om via de BAG-id de juiste lengte- en breedtegraad op te vragen.
In theorie zou het aanleggen van een separate statische lijst van lengte- en breedtegraden per adres nog kunnen, aangezien ik denk dat van de 40.000 locaties maandelijks hooguit 5% wijzigt of nieuw wordt toegevoegd. Op een andere plek wordt gerefereerd aan een excel-bestand van J. Baltussen (Geocodering met PDOK - #12 door jbaltussen)

Als ik zijn excelfile goed begrijp, worden daarin o.b.v. postcode en huisnummer de BAG-RD coördinaten opgevraagd en verschijnt er een attitude en longitude (afgezien dat de links in de excelfile geactualiseerd moet worden naar de huidige PDOK-service).
Maar deze oplossing vereist wel dat elke keer eerst apart de lengte- en breedtegraden moeten worden geactualiseerd alvorens de rapportage in Power BI gestart kan worden.

Op basis van deze wat uitgebreidere schets van mijn vraagstuk, zou ik willen vragen of je nog een suggestie hebt voor mij om deze locaties eenvoudig en correct te plotten op een kaartje in Power BI?

Seb

De Excel-macro van Jeroen Baltussen maakt gebruik van PDOK LocatieServer. Misschien heb je dan iets aan deze uitleg - onderdeel van de Web API workshop van @NieneB en mij: free · FrieseWoudloper/web-api-workshop Wiki · GitHub

Ik ben wel een beetje nieuwsgierig: om welke dataset met 40.000 locaties gaat het eigenlijk?

Heb je ook overwogen om een eigen extensie voor Power BI te maken, zodat je flexibeler bent met het visualiseren van geo-informatie? Een half jaar geleden heb ik zelf de mogelijkheden voor het maken van interactieve kaarten in Power BI een beetje verkend, en dat viel nogal tegen. Jammer genoeg ben ik zelf geen ontwikkelaar, anders zou ik proberen op basis van open source JavaScript libraries als Leaflet of OpenLayers een extensie te maken.

Als je een adresseerbaarobject_id hebt, kun je met dit request het adres en de coordinaten in lat/lon opvragen:
https://geodata.nationaalgeoregister.nl/locatieserver/v3/free?q=adresseerbaarobject_id:0279010000003768&fl=centroide_ll,weergavenaam

Ik weet niet of je er wat aan hebt maar ik geocodeer in PowerBI obv een tabel die ik zelf genereer met “alle adressen” van Nederland met de lon en lat. Die tabel bevat ook de BAG ID’s (als character met evt voorloopnullen). Basis hiervoor is de NL-Extract postgis DB dump. In het volgende artikel heb ik uitgelegd hoe ik dat doe. Open data: Wat kunnen en willen we ermee?

Je zou eens kunnen kijken of de proeftabel van Utrecht (of de gehele tabel) voldoet aan je wensen/eisen. Als dat werkt zou je ook de zelfde procedure kunnen volgen.

Voor het geocoderen van adressen die niet de BAG conventie volgen ( mbt huisnummer, huisletter, huisnummer toevoeging) kun je gebruikmaken van een subset hiervan waarvan de combinatie postcode/huisnummer uniek is (zie laatste kolom Rangorde) . Hierbij worden alle adressen met dezelfde postcode/huisnummer combinatie op de zelfde locatie geplot maar dat is wellicht ook voor jouw toepassing niet erg.

Dank je Friese woudloper voor je uitgebreide antwoord.

Ik heb je workshop uitvoerig bekeken en ik merk dat ik veel basiskennis ontbeer, waaronder het werken met webservices, API’s, etc. waardoor ik er weer veel vragen bij heb gekregen.

Maar om te beginnen met jouw vraag, het betreft de open data va de overheid waar alle locaties van kinderopvang in Nederland in staan. Zie hier voor de CSV file met 43.000 regels, waarin alle locaties worden beschreven waar kinderopvang wordt aangeboden in Nederland. Download bestand

Uit jouw workshop begrip ik dat de PDOK locatieserver gebruikt kan worden om verschillende kenmerken van adres te achterhalen, waarvan voor mij binnen de free service: de provincienaam, centroide_ll, buurtnaam en wijknaam het meest relevant zijn.
Echter alle output verschijnt op basis van klassieke adresgegevens (straatnaam, huisnummer, postcode, woonplaats).
En zoals je kunt zien in de datafile met kinderopvanglocaties lijkt de kwaliteit van de adresgegevens tamelijk laag. Straatnamen lijken hier en daar naar eigen inzicht ingekort, de huisnummers zijn niet gescheiden van de huisnummer-toevoegingen en sommige locaties lijken dubbele huisnummers te hebben als het aangrenzende pand ook in gebruik is (“Hoek van Hollandstraat 3 4”). Uit jouw workshop begrijp ik dat de PDOK locatieserver ook met minder goed gespelde adres om kan gaan. Kun jij een inschatting geven hoe betrouwbaar de geocodering van deze adressen zou kunnen worden, als je een eerste blik werkt op de beschikbare data?

Ook in de excel van Jeroen Baltussen wordt huisnummer en postcode als uitgangspunt genomen voor het opvragen van gegevens. Ik begrijp dat als ik een adresseerbaarobject_id heb, dat ik dan ook gegevens op kan vragen uit PDOK, maar dat id zit niet in de dataset, enkel de BAG-id. Dus dat helpt me niet verder.

Dan is de vraag, mede naar aanleiding van de reactie van Pieter, of er wel een service is die vanuit Power BI benaderbaar is en on-the-spot voor zo’n groot aantal adressen de benodigde kenmerken kan aanleveren? Vaak zal de gebruiker naar een subset van de data kijken en niet naar alle 43.000 locaties tegelijk, maar dan nog is de vraag of dit wel online kan. Probleem is dat Power BI zelf vanaf de website van de overheid de meest actuele versie van het register met adressen ophaalt. Het is dus geen statische excelfile die lokaal op mijn computer staat. En elke keer als je het register online opvraagt kan en zal de inhoud weer (een beetje) anders zijn.
Is dan de enige oplossing om lokaal een lijst aan te leggen van geocodes (lat, lon), provincie, wijk en buurt als soort van “basislijst”, die handmatig periodiek bij te werken, in te lezen in Power BI en vervolgens voor de locaties die niet voorkomen in mijn lijst een online geocodeerservice aan te roepen? Die opzet lijkt me wat omslachtig.
Het voorstel van Peewee met een bestand met alle 9 miljoen adressen is op zich mooi, maar mijn computer verliet zich er danig in als hij voor 43.000 adressen in die 9 miljoen regels moet zoeken naar de juiste geocodes. En kinderopvang zit vaak in scholen en vaak in nieuwbouwwijken waar de school nog weleens op adresen staan die vrij ‘nieuw’ zijn. Dus dan moet ik telkens over de meest actuele lijst van 9 miljoen adressen beschikken. Dat lijkt me ook vrij omslachtig.

Verder raak ik praktisch en technisch gezien de weg even kwijt als ik probeer om de lessen uit jouw workshop, waarbij je o.b.v. een request in een URL een xml-antwoord krijgt wat in JSON formaat verschijnt in de browser, over te zetten naar Excel of Power BI. Dat zal aan mijn gebrek aan basiskennis liggen om een JSON-response goed op te vangen in excel of Power BI. De macro van Jeroen Baltussen helpt een beetje, maar zelf nadoen met de functies WEBSERVICE(url) en XMLFILTEREN(xml; xpath), lukt volstrekt niet. Laat staan dat ik het in Power BI weet te gebruiken. Heb je een goede tip waar ik online cursus of naslagmateriaal kan vinden om me dit eigen te maken?

Tot slot schrijf je iets over een eigen extensie voor Power BI maken. Afgezien van het feit dat ik ook geen ontwikkelaar ben en niets weet van JavaScript, Leaflet, etc., kan ik me ook functioneel niet eens een voorstelling maken wat zo’n extensie precies zou kunnen doen binnen mijn Power BI toepassing en waar het verschil dan ligt in de standaard kaart-visualisatie van Power BI. Kan je iets zeggen over wat jou precies tegenviel in de mogelijkheden van Power BI en wat je dan van zo’n extensie zou verwachten?

Intussen heb ik de applicatie QGIS gedownload om te onderzoeken op welke manier ik daar met bijv. de PDOK-plugins iets aan heb bij het geocoderen van de 40.000 adressen, o.b.v. adres, huissnr, postcode, plaats of ook wellicht toch via de BAG-id? En ook op welke manier de -hopelijk- te ontvangen lattitude, longitude, provincie, wijk en buurt in een apart (excel-)bestand is op te slaan of op een andere manier in Power BI ingebracht kan worden.

Wellicht stel ik teveel vragen, maar ik hoop dat je me nog even verder kunt helpen.

Alvast dank zover.

Inderdaad een hoop vragen, en ik kan ze niet allemaal (meteen) beantwoorden, maar ik heb nog wel een suggestie.

In het bestand met locaties voor kinderopvang zit inderdaad de kolom bag_id. Dat bevat het id van het verblijfsobject. Dat kun je checken met de BAG-viewer. Neem bijvoorbeeld het eerste adres in het bestand, Kasteeldreef 1 in 's-Hertogenbosch. In de BAG-viewer zie je dat het bag_id 0796010000353800 gelijk is aan het id van het verblijfsobject dat bij het adres hoort.

Via het open source project NLExtract kun je een CSV-bestand downloaden met daarin alle adressen uit de BAG, inclusief het verblijfsobject id. Het verblijfsobject id heet in het CSV-bestand object_id. Het CSV-bestand wordt volgens mij iedere maand geactualiseerd.

De kortste klap lijkt mij om het NLExtract CSV-bestand te koppelen aan het bestand met opvanglocaties. Dan heb je van iedere adres de coördinaten in lat/lon, de gemeente en de provincie.

Helaas heb je dan nog niet de buurt en de wijk. Het zou héél mooi zijn als die informatie ook wordt toegevoegd aan het CSV bestand van NLExtract. Daar is ook al een issue voor aangemaakt in de NLExtract GitHub repository. Helaas ben ik er nog niet aan toe gekomen om het verzoek om buurten en wijken toe te voegen aan NLExtract verder uit te werken. Misschien is het nu tijd om dit (samen?) op te pakken.

Ik denk nog even na over je andere vragen.

Wat mij betreft prima om dit issue samen op te pakken. Ik zie dat er verwezen wordt naar issue #64, maar dat die nu op gesloten staat. Wat zijn de stappen die gezet moeten worden om wijken en buurten toe te voegen en door wie? En wat zou ik hierin kunnen betekenen?

Ik heb dezelfde vraag gesteld in de Gitter chat kanaal van NLExtract: https://gitter.im/nlextract/NLExtract

Een andere optie is om contact op te nemen met de eigenaar van de dataset, het ministerie van Sociale Zaken en Werkgelegenheid. Aan de naamgeving te zien, is het open data bestand een export uit een bronsysteem. Hierbij zijn wellicht niet alle attributen uit het bronsysteem meegenomen. We weten dat de identificatie van het verblijfsobject geregistreerd wordt in het bronsysteem, want dat zit in het exportbestand. Misschien wordt de geometrie van het verblijfsobject dan ook wel opgeslagen en kan dat toegevoegd worden aan de export? Mijn ervaring is dat men zich soms geen raad weet met geometrie of de waarde er van niet ziet, en het daarom weg laat bij publicatie van de dataset. Als je contact op wilt nemen met de eigenaar van de gegevens, kun je dat volgens mij het beste doen via KOOP: Nieuwe dataverzoek aanmaken | Data overheid

Hallo,

Koppeling tussen adres en buurt/wijk kan best lastig zijn. Gelukkig heb ik een dataset gevonden die CBS heeft gemaakt op verzoek van DUO.
Hierin zijn alle uitgegeven combinaties van postcode6 en huisnummer gekoppeld aan buurt.
https://www.cbs.nl/nl-nl/maatwerk/2018/36/buurt-wijk-en-gemeente-2018-voor-postcode-huisnummer

Geen idee of er een meer recente versie van is.
Of is er ondertussen een andere koppeling beschikbaar waardoor het maatwerk van DUO niet meer nodig is?

Top! Eigenlijk moeten we het CBS (via KOOP/data.overheid.nl) vragen of dit maatwerkbestand structureel door het CBS als open data beschikbaar kan worden gesteld. Dan kan het bijvoorbeeld ook in ExtractNL geïntegreerd worden.

1 like

Ik ben inmiddels al aan de slag gegaan met het CSV-bestand van NLExtract. Dit is echter een ZIP-bestand. Nu zijn er wel mogelijkheden om in PowerBI online zip-bestanden uit te pakken als bewerking in Power Query, maar de omvang is dermate groot, dat Power BI erop vastloopt vanwege onvoldoende geheugen. Ik zou willen vragen of NLExtract de meest actuele versie van het bestand ook in een niet-gecomprimeerde versie op haar site kan zetten. Kun jij me vertellen waar of aan wie ik die vraag het beste kan stellen? Gaat zoiets ook via het Gitter chat kanaal?

Voor contact over NLExtract kun je denk ik het beste de mailinglijst gebruiken. Je kunt een mail sturen naar nlextract@googlegroups.com of een bericht op het Google forum (Redirecting to Google Groups) zetten. Ik denk er zelf haast nooit aan om op Gitter te kijken :blush:.

Wat de “procedure” betreft: je kunt in Git natuurlijk NLExtract forken, een patch maken en een pull request indienen. Ik ga ervan uit dat je zelf met de broncode uit de voeten kunt, of anders contact kunt opnemen met een ontwikkelaar die dat wel kan. De tijd van Just en mij is erg beperkt, dus we doen alleen het meest noodzakelijke onderhoud (bugs fixen), maar zelfs iets als de migratie naar Python 3, i.v.m. de aflopende support van Python 2 begin volgend jaar, is iets dat blijft liggen. We stellen hulp van andere ontwikkelaars, en zeker degenen die NLExtract zelf of de producten op data.nlextract.nl regelmatig gebruiken, erg op prijs!

Alleen is het toevoegen van extra informatie aan het CSV-bestand wel een “lastig” issue waar je goed over moet nadenken. Technisch is het niet een al te grote uitdaging, maar iedereen wil andere informatie hebben. Anderen willen misschien een koppeling met de DKK, of de AHN hoogte of wat dan ook. Potentieel een gebed zonder eind. Dit zorgt potentieel voor allerlei afhankelijkheden met andere datasets, wat het beheer van BAG-extract (het deel dat voor de BAG verantwoordelijk is) een stuk complexer maakt. NLExtract, en dat geldt ook voor de PostGIS dumps en CSV-bestanden, is een halffabrikaat, op basis waarvan anderen weer toepassingen ontwikkelen. NLExtract ontzorgt vooral in het inlezen en verwerken van de GML- en XML-bestanden van de Nederlandse basisregistraties.

Wat het beschikbaar stellen van een uitgepakt ZIP-bestand: dit is 2.1 GB groot. Ik weet niet hoe goed je internetverbinding is en of, en zo ja, wanneer Power BI last gaat krijgen van timeouts, maar deze omvang is wel iets waar je mogelijk rekening mee moet houden. Als Power BI vast loopt op het uitpakken van een ZIP-bestand met deze inhoud, is de kans ook groot dat dit gaat gebeuren als het CSV-bestand ongecomprimeerd wordt aangeboden. Je kunt dit zelf testen door ergens op een webserver het uitgepakte CSV-bestand zelf neer te zetten en hier naar toe te verwijzen met Power BI.

Ik ken de datasets niet inhoudelijk, maar Imergis publiceert ook kinderopvanglocaties. Zijn dat dezelfde 40.000? Zie Imergis kaarten: Geografische open-data GIS bestanden onder het kopje Objecten/punten.

Wellicht nog interessant in relatie tot dit draadje: Blog post over het verrijken van adressen met gegevens uit de BAG, bijvoorbeeld lengte- en breedtegraad: Power BI en LocatieServer | De Friese Woudloper - blog van Willy Tadema

Dank voor het delen. Erg interessant. Heb je enig idee/ervaring over de aantallen request dat nog acceptabel is om geen problemen te krijgen?

Nee, niet echt. Uit ervaring weet ik dat 10.000 prima lukt, maar ik weet niet hoe PDOK daar over denkt.

Om een betere match te krijgen bij adressen met huisnummerletters en -toevoegingen moet je het request overigens nog een beetje tweaken, bijvoorbeeld door de qf query parameter toe te voegen aan het request. Zie Waarom krijgt het juiste adres niet de hoogste score van LocatieServer? - #5 door FrieseWoudloper - LocatieServer - Geoforum

OK. Helder. Dit biedt perspectieven. Dank je wel.

Gisteren ontdekt dat je LocatieServer ook een CSV terug kunt laten sturen. Voorbeeld:

https://geodata.nationaalgeoregister.nl/locatieserver/v3/free?q=Sint Jansstraat 4 Groningen&rows=1&wt=csv

Het response bestand is dan wel iets zwaarder.

Hier staat beschreven hoe je de CSV-response laadt in Power BI: