Hoe destilleer ik een huisnummer en -toevoeging uit een adres?
Ik moet een computerprogramma schrijven dat een huisnummer, en los daarvan ook de huisnummer-toevoeging herkent uit een adresregel.
Het betreft daarbij alleen nederlandse adressen.
De routine moet ook om kunnen gaan met exoten als:
"Plein 1944 1a 1e etage" (huisnummer=1, toevoeging="a 1e etage") en
"Plein 1944 1 a 1e etage" (let op de spatie tussen de '1' en de 'a')
Ozewiezewozewiezewallakristallix
3 maanden geleden
Het gaat me om een goed idee betreffende de aanpak. Het hoeft geen uitgewerkt programma te zijn.
Mocht je je daar tóch op stuk willen bijten.... het moet uiteindelijk een cobol-routine worden....
Mocht je je daar tóch op stuk willen bijten.... het moet uiteindelijk een cobol-routine worden....
LeonardN
3 maanden geleden
Mag het adres eerst weer in een API teruggevoerd worden (adressen checker)? Want ik zou zelf niet eens weten of de straat nu "Plein" of "Plein 1944" is. Door de context haal ik het er wel een soort uit, maar dat lijkt me lastig te verwoorden in code.
Of ga je wellicht gebruik maken van een lijst van alle adressen (straatnamen) in NL?
Nog een idee/vraag. Zit de postcode in de adresregel? Daarmee kan je natuurlijk ook een hoop meer zekerheid mee krijgen, ten eerste welk deel de straatnaam is, ten tweede waar de range aan huisnummers ligt.
En zijn de adressen in een standaardformaat? Of is het maar net wat iemand heeft ingevuld, of waar het adres vandaan gevist is?
Of ga je wellicht gebruik maken van een lijst van alle adressen (straatnamen) in NL?
Nog een idee/vraag. Zit de postcode in de adresregel? Daarmee kan je natuurlijk ook een hoop meer zekerheid mee krijgen, ten eerste welk deel de straatnaam is, ten tweede waar de range aan huisnummers ligt.
En zijn de adressen in een standaardformaat? Of is het maar net wat iemand heeft ingevuld, of waar het adres vandaan gevist is?
Ozewiezewozewiezewallakristallix
3 maanden geleden
De context is een programma dat een bestand verwerkt. De adressen in dat bestand zijn gevuld met handmatige invoer. Er is dus geen vast format beschikbaar. Maar zelfs al zou dat wel het geval zijn, dan zijn zelfs de officiële schrijfwijzen erg lastig te interpreteren door een computer.
Hier een aantal schrijfwijzen die ik tegengekomen ben:
- "Notenkrakerstraat 24" (huisnummer=24, geen toevoeging)
- "Stationsstraat 7a" (huisnummer=7, toev.="a")
- "Molenweg 3 hs" (huisnummer=3, toev.="hs")
- "18 Septemberplein 12" (huisnummer=12, geen toevoeging)
- "Kerkstraat 2-2" (huisnummer=2, toev.="-2")
- "Hoofdstraat 2 - 2" (huisnummer=2, toev.="- 2")
- "Plein 1944 1a 1e etage" (huisnummer=1, toev.="a 1e etage")
- "Plein 1944 1 a 1e etage" (merk de spatie op tussen de '1' en de 'a') Een oplossing zou kunnen zijn er een tabel onder te hangen met daarin alle straatnamen van Nederland. En dan daar alle adressen tegen matchen. Maar de data in zo'n tabel moet onderhouden worden en dat werkt in onze omgeving niet echt praktisch. Ik zoek daarom iets slims wat op basis van alleen het adres werkt, maar tegelijk wel altijd werkt
- "Stationsstraat 7a" (huisnummer=7, toev.="a")
- "Molenweg 3 hs" (huisnummer=3, toev.="hs")
- "18 Septemberplein 12" (huisnummer=12, geen toevoeging)
- "Kerkstraat 2-2" (huisnummer=2, toev.="-2")
- "Hoofdstraat 2 - 2" (huisnummer=2, toev.="- 2")
- "Plein 1944 1a 1e etage" (huisnummer=1, toev.="a 1e etage")
- "Plein 1944 1 a 1e etage" (merk de spatie op tussen de '1' en de 'a') Een oplossing zou kunnen zijn er een tabel onder te hangen met daarin alle straatnamen van Nederland. En dan daar alle adressen tegen matchen. Maar de data in zo'n tabel moet onderhouden worden en dat werkt in onze omgeving niet echt praktisch. Ik zoek daarom iets slims wat op basis van alleen het adres werkt, maar tegelijk wel altijd werkt
Ozewiezewozewiezewallakristallix
3 maanden geleden
"Mag het adres eerst weer in een API teruggevoerd worden ?"
Goede suggestie, maar helaas: Nee !
Om meerdere redenen niet. Op de eerste plaats draait de code op een mainframe. Die heeft geen lijntjes lopen naar willekeurige API's op het internet. Ten tweede loop je al snel tegen de AVG op wanneer je adressen van mensen het net op gaat slingeren.
Om meerdere redenen niet. Op de eerste plaats draait de code op een mainframe. Die heeft geen lijntjes lopen naar willekeurige API's op het internet. Ten tweede loop je al snel tegen de AVG op wanneer je adressen van mensen het net op gaat slingeren.
Ozewiezewozewiezewallakristallix
3 maanden geleden
Nee, het zijn voorbeelden (testgevallen) van formaten waarin ik adressen aangeleverd krijg.
Cryofiel
3 maanden geleden
Hoe erg is het als de uitkomst onjuist is?
Mag het programma een (klein) aantal adressen als "ondetermineerbaar" bestempelen, en die in een aparte lijst zetten ter handmatige verwerking?
Cryofiel
3 maanden geleden
Zoek de eerste serie niet-cijfers. Alles tot en met die serie is de straatnaam. Zo pak je "12 septemberlaan" mee.
Alles vanaf het eerste cijfer daarna is kandidaat huisnummer+toevoeging.
(a)
Zoek hierin de eerste serie cijfers. Dat is je kale huisnummer. Maar...als dit kale huisnummer een jaartal ZOU KUNNEN zijn, EN het wordt gevolgd door een serie cijfers, dan is dit alsnog géén kaal huisnummer, maar onderdeel van de straatnaam. Voeg de eerste cijferreeks dan toe aan de straatnaam en ga naar (a). Kan het kale huisnummer geen jaartal zijn, OF wordt het NIET gevolgd door een serie cijfers, dan heb je het kale huisnummer te pakken. De rest is toevoeging. Zo pak je "Plein 1944" en "Laan 1940-1945" mee (als je de '-' als spatie behandelt, zeg maar). Kom je hiermee in de buurt?
Zoek hierin de eerste serie cijfers. Dat is je kale huisnummer. Maar...als dit kale huisnummer een jaartal ZOU KUNNEN zijn, EN het wordt gevolgd door een serie cijfers, dan is dit alsnog géén kaal huisnummer, maar onderdeel van de straatnaam. Voeg de eerste cijferreeks dan toe aan de straatnaam en ga naar (a). Kan het kale huisnummer geen jaartal zijn, OF wordt het NIET gevolgd door een serie cijfers, dan heb je het kale huisnummer te pakken. De rest is toevoeging. Zo pak je "Plein 1944" en "Laan 1940-1945" mee (als je de '-' als spatie behandelt, zeg maar). Kom je hiermee in de buurt?
Cryofiel
3 maanden geleden
Overigens... de API van LeonardN is ook te koop, dus lokaal te installeren. Dan gaat er niets naar buiten en vormt de AVG geen probleem.
Ozewiezewozewiezewallakristallix
3 maanden geleden
@Cryofiel
Dank! perfectie is moeilijk/onmogelijk, maar dit komt wel een eind in de buurt. Ik ga eens kijken wat dit verderop in de organisatie betekent.
Dank! perfectie is moeilijk/onmogelijk, maar dit komt wel een eind in de buurt. Ik ga eens kijken wat dit verderop in de organisatie betekent.
Heb je meer informatie nodig om de vraag te beantwoorden? Reageer dan hier.