nlextract/NLExtract

BAG Adressen - welke pandstatus-en wel/niet meenemen?

Closed this issue · 18 comments

Sommige adressen verschijnen niet in de adres-basis of adres-full tabellen.
Als voorbeeld hier Lageweg 6, Noordwijk. In BAGViewer te zien. Pand id='0575100000173874' .

Een Pand in BAG heeft een van deze statussen:
​('Bouwvergunning verleend', 'Niet gerealiseerd pand', 'Bouw gestart', 'Pand in gebruik (niet ingemeten)', 'Pand in gebruik', 'Sloopvergunning verleend', 'Pand gesloopt', 'Pand buiten gebruik')

Het betreffende Pand met identificatie 0575100000173874 heeft als status Bouwvergunning verleend.

Op dit moment generereert NLExtract "Adressen Basis" en "Adressen Full" voor Panden die niet deze status hebben:
'Niet gerealiseerd pand' , 'Pand gesloopt', 'Bouwvergunning verleend', dwz uit de VIEW pandactueelbestaand.

Weet niet waarom dit ooit zo bedacht is. Wel zie ik bijv in PDOK dat dit adres niet in de WMS "BAG Adressen" Laag zit, te zien in plaatje:

image

We hebben ooit zoiets met VerblijfsObject gehad voor VIEW verblijfsobjectactueelbestaand:
JvdB removed AND verblijfsobject.verblijfsobjectstatus <> 'Verblijfsobject gevormd', see issue #173
#173 op 23.03.16

Vraag is dus:

  • <> 'Bouwvergunning verleend' verwijderen uit de VIEW pandactueelbestaand?
  • of misschien adressen gewoon genereren uit de *actueel VIEWs ipv *actueelbestaand?

Zie ook dergelijke discussie in afgesloten issue #173.

De keuze met de pandstatussen is denk ik gemaakt op basis van "is er iets zichtbaar in werkelijkheid?". Bij bouwvergunning verleend, pand gesloopt en niet gerealiseerd pandis er niets te zien op de plek waar het pand moe(s)t komen of ooit stond. Daar valt iets voor te zeggen als je een topografische kaart maakt, maar in sommige gevallen heb je ze toch nodig.

Adressen zijn sowieso virtueel, maar wel heel wezenlijk. Nadat je bouwvergunning is verleend wil je bijvoorbeeld het adres al gebruiken in de communicatie met aannemers of nuts-bedrijven. Nummeraanduidingen hebben trouwens ook een status (uit mijn hoofd uitgegeven en ingetrokken), misschien moet die gebruikt worden voor de adressentabel?

Ik denk dat de voornaamste reden van het ontbreken van dit adres is dat het geen postcode heeft. De adressentabel bevat alleen records met een postcode. Dat was samen met het gegeven dat sommige adressen meer dan 1x voorkomen was destijds voor mij de reden om een eigen script te maken. Postcode 1432EB huisnummer 383 komt momenteel 18x voor wegens verbonden aan 18 panden. In mijn optiek is het nog steeds 1 adres en dan vind ik het vreemd dat ik toch 18 records zie. Dat script staat momenteel ook in github en genereert de tabel adres_plus. Afhankelijk van wat de opzet is van adres_full zou die tabel ook gegenereerd kunnen worden door een select op adres_plus omdat zo te zien alle gewenste gegevens daar beschikbaar zijn. Als dan nog steeds alleen adressen met postcode gewenst is kan daar op geselecteerd worden. Zo niet dan komt ook het ontbrekende adres van Lageweg 6, Noordwijk mee in het resultaat.

@PeeWeeOSM had ik volledig over hoofd gezien! er zijn inderdaad 182040 adressen zonder Postcode in BAG AdresPlus jan 2021. Wel idee, om de andere adres-tabellen van AdresPlus af te leiden. Kan mij wel iets (issue) herinneren dat adressen zonder Postcode juist weer niet in die tabellen moesten...

Leuk voorbeeld: "PEN Huisje",Dorpsstraat 21 N01 Oud-Alblas (VBO id 1978200000090700):

image

@justb4 Bovenaan in het script van adres_plus staat de definitie van een adres die ik gebruikt heb. Als dat past voor andere tabellen dan is adres_plus als basis voor de andere tabellen waarschijnlijk wel te gebruiken. Ik zag in de download van geotoko dat bij adres_plus nu ook buurt en wijk informatie is toegevoegd. Hele mooie toevoeging.. Is dat specifiek Geotoko of ook NL-Extract?

@PeeWeeOSM ja laten we dan adres_plus als uitgangspunt nemen. Ben ik ook van de discussie af waarom het aantal adressen in "uitgebreid" en "basis" verschillen.

De integratie van "adres_plus" in NLExtract is nog niet volledig. Staat nog in 1.4.0 branch. Die loopt zo ver uit de pas met master (moet nu main gaan heten) dat een nieuwe branch beter lijkt.

Wijken en Buurten: was een 5 min post-proces hack. Kan ik ook wel toevoegen, is erg triviaal. One-liner SQL na import CBS Wijken&Buurten GeoPackage:

UPDATE adres_plus set buurtcode = buurten.buurtcode, buurtnaam = buurten.buurtnaam, 
wijkcode = buurten.wijkcode, wijknaam = buurten.wijknaam 
FROM cbs_buurten as buurten 
WHERE st_within(ST_SetSRID(ST_MakePoint(x, y),28992), buurten.geom);

Eerst natuurlijk een alter table adres_plus add buurtnaam varchar(60); alter table adres_plus add buurtcode varchar(10); etc.

@PeeWeeOSM Weer nieuwe inzichten, mogelijk toch een gevolg van definitie pandactueelbestaand. Er zijn namelijk adressen die wel in adres staan maar niet in adres_plus! Voorbeelden:

Adresseerbaarobject_id | Adres | Postcode
0024010000159054 | Coendersweg 50 | 9991 CD
0059010001000341 | Miedwei 74 | 9283 XZ
0080010011084891 | Euterpestraat 28 1 | 8915 BB
0080010011084891 | Euterpestraat 28 1 | 8915 BB
0114010000409811 | Zwarteweg 18 | 7833 BJ
0177010010097031 | Zwolseweg 76 | 8055 PB
0246010000009268 | Nachtegaalweg 48 | 8191 XT
0246010000009268 | Nachtegaalweg 48 | 8191 XT
0310010000729675 | Verhulstlaan 7 | 3723 JP
0344010000192560 | Cicerolaan 19 | 3584 AJ
0361010000203148 | Percivalstraat 3 | 1813 LT
0363010012128045 | Hugo de Grootkade 30 H | 1052 LT
0363010012140062 | Slotermeerlaan 160 | 1063 JW
0363010012140062 | Slotermeerlaan 160 | 1063 JW
0400010000042820 | Spoorstraat 81 | 1781 JD
0400010000042820 | Spoorstraat 81 | 1781 JD
0518010001771445 | Jacob de Graefflaan 10 | 2517 JM

E.e.a. is historisch ontstaan, m.i.

  • adres (en adres_full) bevatten geen adressen zonder Postcode
  • adres (en adres_full) selecteren niet op Pand status (alleen VBO status)
  • adres_plus bevat adressen zonder Postcode maar selecteert WEL op Pandstatus

    Voorzover ik kan nagaan zijn adressen die: "NIET vindbaar zijn in adres_plus, maar wel voorkomen in adres, adressen waarbij gerelateerd Pand o.a. een "niet bestaande status heeft" vooral: Bouwvergunning verleend
    Het lijkt erop dat deze dezelfde selectie-status tbv adres_plus heeft als Niet gerealiseerd pand,Pand gesloopt.
    Zie voorbeeld in BAGViewer.

Voor mij lastig te volgen in adres_plus SQL script, maar zou bijv kunnen dat omdat de VIEW pandactueelbestaand 'Bouwvergunning verleend' uitsluit, deze ook niet in adres_plus terechtkomt.

Vraag is nu of adres_plus uberhaupt op Pand status moet selecteren, of alles behalve 'Niet gerealiseerd pand','Pand gesloopt'. Het gaat tenslotte om soort "ground truth", adressen ter plekke.

@justb4 Bedankt voor de terugkoppeling. Ik ben al aan het zoeken en heb al wel een verklaring voor het ontbreken van een groot aantal adressen maar of het ze allemaal zijn moet ik nog uitzoeken. Het grootste probleem zit in de statements waarin ik adressen die meer dan 1x voorkomen probeer te ontdubbelen. Daar zit een stap die iets te rigoureus is. Het lijkt er ook op dat de adressen die jij vind veelal meer dan 1x staan in de adres tabel.

Het heeft denk ik niets te maken met de status van het pand want ik gebruik niet pandactueelbestaand maar alleen pandactueel. To be continued dus.

Ok, denk dat we even terug naar de hamvragen van dit issue:

  • adres en adres-full: adressen zonder postcode meenemen? (ik zeg ja) Pandstatus is hier niet van invloed.
  • pandactueelbestaand VIEW: alleen <> 'Niet gerealiseerd pand' , 'Pand gesloopt' status? Dus 'Bouwvergunning verleend' weghalen uit NOT-conditie?

adres-plus: het lijkt er m.i. op deze SQL regel L330 dat weliswaar pandactueelbestaand niet wordt gebruikt, maar wel de conditie met 'Bouwvergunning verleend' (hetgeen de status is van bovenstaande adressen) waardoor record niet meekomt (?).

NB ik zal de adres-plus SQL naar de master branch brengen via nieuwe PR. Is niet handig dat dit verborgen is in branch.

@justb4 Ik zie ook geen reden waarom adressen zonder postcode niet meegenomen zouden kunnen/moeten worden voor adres en adres-full. Ik denkt niet dat een afnemer daar problemen mee zal hebben.
Ik vind het niet logisch dat "bouwvergunning verleend " onder pandactueelbestaand zou vallen want met een bouwvergunning zal het pand nog niet meteen bestaan. Dat het voor het script voor het maken van adres en adres-full wel handig zou zijn kan m.i. niet de reden zijn.
Wat mij betreft is een andere hamvraag of het voor adres en adres-full het logisch/zinvol is dat een combinatie van postcode, huisnummer, huisletter en huisnummertoevoeging meer dan 1x mag voorkomen. Zie 1432EB huisnummer 383 die 18x voorkomt. Wellicht is het logisch hoor maar ik weet niets van de achtergrond van deze 2 tabellen. In adres_plus komt dit adres 1x voor. De kolom aantal_pand_relaties_dit_vbo heeft dan de waarde 18 en de rest van de pand gegevens zijn dan leeg. Als adres en adres_full afgeleid gaan worden dan adres_plus dan krijg je in dit geval dus 1 record ipv 18.

In het script van adres_plus wordt weliswaar gekeken naar 'Bouwvergunning verleend' maar niet om deze uit te sluiten. Dat is alleen nodig om adressen te ontdubbelen indien ze meer dan 1x voorkomen. Dus als een adres 2 voorkomens heeft waarvan 1 ‘Pand in gebruik’ en het ander 'Bouwvergunning verleend' dan krijgt het record met ‘pand in gebruik’ de voorkeur. Dat ontdubbelen is gewoon een vervelend klusje want als je er in duikt zie je best veel gekke dingen.
Zie deze eens en zoek de verschillen ;)

SELECT * FROM bagactueel.adres_full where nummeraanduiding = '0269200000012106';

Ik ben inmiddels weer een stap verder met het oplossen van de ontbrekende adressen en verwacht snel het script te kunnen leveren.

Zou het niet het beste zijn als de actueelbestaandnummeraanduiding leidend en uniek is?
Ongeacht pand-status en aantal panden?

  • 1432EB huisnummer 383 (Tuincentrum Het Oosten in Aalsmeer) heeft een VBO gekoppeld aan 18 panden. In adres-uitgebreid komt deze 18x voor, waarbij alleen pand_id verschilt. Tja dat lijkt mij 1 adres (hoewel dan weer afnemers zullen klagen dat er pand_id's ontbreken...).

  • nummeraanduiding = '0269200000012106'; dubbeling in adres/adres_full kan ik niet verklaren. Een STA in Oldebroek, Veenweg 91 R39. Alle overige STAs op dat nummer komen 1x voor. Ik zie ook geen dubbelingen in gerelateerde nummeraanduiding en standplaats tabellen...In adres_plus komt deze netjes 1x voor..

@PeeWeeOSM Ik heb je nieuwe versie 20210129 van adres_plus getest met BAG jan 2021 en vergeleken met vorige:

oud:         9403417 adressen
v20210129:   9406967 adressen

Dus 3550 adressen erbij. Kan nog niet nagaan wat precies verschillen zijn, diff CSVs nodig.
Alleen deze adressen (met pandstatus "Bouwvergunning verleend" (zie boven) zitten er niet in:

    Adresseerbaarobject_id | Adres | Postcode
    0024010000159054 | Coendersweg 50 | 9991 CD
    0059010001000341 | Miedwei 74 | 9283 XZ
    0080010011084891 | Euterpestraat 28 1 | 8915 BB
    0080010011084891 | Euterpestraat 28 1 | 8915 BB
    0114010000409811 | Zwarteweg 18 | 7833 BJ
    0177010010097031 | Zwolseweg 76 | 8055 PB
    0246010000009268 | Nachtegaalweg 48 | 8191 XT
    0246010000009268 | Nachtegaalweg 48 | 8191 XT
    0310010000729675 | Verhulstlaan 7 | 3723 JP
    0344010000192560 | Cicerolaan 19 | 3584 AJ
    0361010000203148 | Percivalstraat 3 | 1813 LT
    0363010012128045 | Hugo de Grootkade 30 H | 1052 LT
    0363010012140062 | Slotermeerlaan 160 | 1063 JW
    0363010012140062 | Slotermeerlaan 160 | 1063 JW
    0400010000042820 | Spoorstraat 81 | 1781 JD
    0400010000042820 | Spoorstraat 81 | 1781 JD
    0518010001771445 | Jacob de Graefflaan 10 | 2517 JM

Weet je zeker: (zie boven) "op deze SQL regel L330 dat weliswaar pandactueelbestaand niet wordt gebruikt, maar wel de conditie met 'Bouwvergunning verleend' (hetgeen de status is van bovenstaande adressen) waardoor record niet meekomt (?)." Ik zal het anders eens proberen, zijn alleen langdurige processen...

@justb4 Deze adresseerbare objecten staan er niet in omdat ik van betreffende postcode, huisnummer,huisletter, huisnummertoevoeging al een ander adresseerbaar object heb. Ik wil er geen 2 in adres_plus. Dat was het uitgangspunt van het script. Dus als je zoekt op postcode,huisnummer van jouw lijstje vind je wel een record in adres_plus maar met een ander adresseerbaar object. Jouw lijstje zijn allen adressen die ik heb moeten ontdubbelen.

@justb4 Verklaring voor dubbelen van '0269200000012106' is dat die identificatie 2 corresponderende records heeft in de standplaatsactueelbestaand tabel. Dat is vreemd maar dit soort gekke dingen kwamen in het verleden wel eens vaker voor. Dat heb ik nu opgelost in het script waardoor er slechts 1 record meekomt.

SELECT nad.identificatie, sta.identificatie
FROM
bagactueel.nummeraanduidingactueelbestaand_compleet NAD
left outer join bagactueel.standplaatsactueelbestaand STA
on NAD.identificatie = STA.hoofdadres
where nad.identificatie = '0269200000012106'

@justb4 Het volgende script levert bij mij geen resultaat op wat betekent dat alle "adressen" in de adres ook voorkomen in adres_plus.

select A.* from
(SELECT
adres.*,
coalesce(adres.postcode,'0') ||'-'||adres.huisnummer::text||'-'|| coalesce(adres.huisletter, '0')||'-'|| coalesce(adres.huisnummertoevoeging, '0') as key
FROM
bagactueel.adres where postcode is not null
)A

left join
(

Select * , coalesce(plus.postcode,'0') ||'-'||plus.huisnummer::text||'-'|| coalesce(plus.huisletter, '0')||'-'|| coalesce(plus.huisnummertoevoeging, '0') as key

from bagactueel.adres_plus plus where postcode is not null)
B on A.key = b.key
where b.key is null;

@justb4 Deze adresseerbare objecten staan er niet in omdat ik van betreffende postcode, huisnummer,huisletter, huisnummertoevoeging al een ander adresseerbaar object heb. Ik wil er geen 2 in adres_plus. Dat was het uitgangspunt van het script. Dus als je zoekt op postcode,huisnummer van jouw lijstje vind je wel een record in adres_plus maar met een ander adresseerbaar object. Jouw lijstje zijn allen adressen die ik heb moeten ontdubbelen.

Interessant ja, bijv
image

en in adres_plus komt alleen de versie met VBO id 0024010000157348 met pand status Sloopvergunning verleend voor...Ik kreeg die lijst van een klant, dus bijv 0024010000159054 | Coendersweg 50 | 9991 CD verwijst naar nieuwe pand (Bouwvergunning verleend).

Denk dat nu zo'n beetje alles verklaard is. Eventueel kan misschien nog intelligent ontdubbeld: dat de laatste Voorkomen (begindata VBO/PND/NUM, STA/NUM, LIG/NUM) meegenomen wordt of alleen NUM, maar kan nog lastig zijn. Misschien hoogste bouwjaar Pand?

#288 en #302 is klaar (zit in master branch), dus overige adres tabellen worden nu afgeleid van adres_plus tabel.
Nu zouden in ieder geval alle adressen gelijkgeschakeld moeten zijn:

  • De combinatie van openbareruimte_id, postcode, huisnummer, huisletter, huisnummertoevoeging is uniek.
  • adressen zonder postcode ook aanwezig
  • geen dubbele adressen meer
  • adressen met half-bestaande pand status zoals "Sloopvergunning verleend" en "Bouwvergunning verleend" aanwezig

Als er toch problemen zijn heropenen of nieuwe issue openen voor specifiek probleem.