nlextract / NLExtract

Convert (ETL) and visualize free Dutch geo-datasets.
https://nlextract.nl
GNU General Public License v3.0
153 stars 83 forks source link

BAG Adres Plus Tabel #288

Closed justb4 closed 3 years ago

justb4 commented 4 years ago

Dit issue is om een externe bijdrage van PeeWee te volgen.

Het gaat om

image

Zie PeeWee's tekst hieronder.


Dit script is gemaakt door Peter van Wee (github: PeeWeeOSM)

Het resultaat van dit script zijn de volgende 3 tabellen/views

 1 Tabel "adres_plus":
 De "actuele adressen" met een groot aantal eigenschappen waaronder gerelateerd pand inclusief woningtype (Vrijstaand, 2onder1kap etc.)

 2 View "adres_compleet_PCHN_Uniek"
 Dit is een subset (zowel rijen als kolommen) van  "adres_plus" waarbij per postcode-huisnummer combinatie slechts 1 record bestaat.
 Dit om makkelijker te koppelen met externe adressen die de BAG conventie niet volgen (huisletter, huisnummertoevoeging)

 3 Tabel "pandactueelbestaand_plus_woningtype"
 De "actuele" panden van NL waarbij ook de status 'Bouwvergunning verleend' wordt meegenomen (want in de praktijk vaak al gerealiseerd) en waarin ook het woningtype (Vrijstaand, 2onder1kap etc.) is opgenomen. :

Conventies: Indien het "adres" toe te wijzen is aan 1 pand met een woonfunctie dan wordt het woontype aangegeven (Hoekhuis, 2onder1kap, vrijstaande woning etc. )
1   Het betreft adressen met en zonder postcode.
2   Doel is dat een adres uniek is volgens de volgende definitie. :
        De combinatie van openbareruimte_id, postcode, huisnummer, huisletter, huisnummertoevoeging is uniek.
        In eerste instantie zijn deze niet uniek. Door een aantal sequentiele statements wordt er ontdubbeld waardoor de adres tabel alleen unieke records heeft.
3   Omdat BAG historisch is en we eigenlijk alleen de "actuele" gegevens willen zien moeten we besluiten onder welke condities een adres als "actueel" wordt gezien.
    De hier gehanteerde definitie is dat een adresrecord actueel is als er een gerelateerd record is in de "actueelbestaand" view van de volgende 2 combinaties van tabellen:

Woonplaats EN Openbareruimte EN  Nummeraanduiding EN (Verblijfsobject OF Standplaats OF Ligplaats )
Woonplaats EN Openbareruimte EN  Nummeraanduiding EN adresseerbaarobjectnevenadres EN (Verblijfsobject OF Standplaats OF Ligplaats )

De adres tabel vertoont veel gelijkenis met de adres_full van NL extract. De voornaamste verschillen zijn:
1   Er zitten adressen is zonder postcode
2   Een nummeraanduiding id komt slechts 1x voor  (vermoedelijk was dat bij adres_full ook bedoeling)
3   De combinatie van  postcode, huisnummer, huisletter, huisnummertoevoeging ,openbareruimte_id is uniek. (uniq_key) (NB de openbare ruimte_id is nodig voor adressen zonder postcode maar ook een aantal adressen met Postcode maakt het nog niet uniek.
    voorbeeld: 7572BP 8.  komt voor met OBR_id "173300000124785"  en  "173300000125027")
4   Van ieder adres is aangegeven of de combinatie van Postcode/huisnummer uniek is.
5   Van ieder adres is aangegeven of de combinatie van Postcode/huisnummer/huisletter/huisnummertoevoegin uniek is.
6   Voor iedere gebruiksdoel is een kolom met een waarde 1 of null die aangeeft  of het van toepassing is.
7   Indien het "adres" toe te wijzen is aan 1 pand met een woonfunctie dan wordt het woningtype aangegeven (Hoekhuis, 2onder1kap, vrijstaande woning etc. )
7b  Indien het "adres" toe te wijzen is aan meer dan 1 pand met een woonfunctie en al die panden hebben  het zelfde woningtype dan wordt dat getoond. (Hoekhuis, 2onder1kap, vrijstaande woning etc. )
8   Per openbareruimte ID, postcode en huisnummer wordt een rangorde bepaald. Deze is nodig om een view te kunnen maken waarbij per postcode/huisnummer combinatie het "belangrijkste" adres vast te stellen is.
    Dit laatste is weer nodig om te koppelen met externe adrestabellen die geen BAG conventie aanhouden (postcode, huisnummer, huisletter, huisnummertoevoeging) en veelal wel te koppelen zijn op alleen postcode/huisnummer.
    Mijn ervaring is dat externe adrestabellen vaak wel een huisnummertoeving hebben maar dat deze van dermate slechte kwaliteit is dat ook dat niet te gebruiken is.

Om het script te kunnen draaien heb je de NL_Extract postgis DB dump nodig die na restore een DB oplevert.
Daarnaast is het van belang dat je de tablefunct extentie hebt ge activeert. (CREATE extension tablefunc;)
justb4 commented 3 years ago

Zie ook #300 - nog kleine aanpassingen nodig.

justb4 commented 3 years ago

Nog aandachtspunt: de kolom geopunt is van type geometry en staat ook niet correct in public.geometry_columns :

"bag" "bagactueel" "adres_plus" "geopunt" 2 0 "GEOMETRY"

(o.a. is SRID 0). Denk dat met deze cast() bij aanmaken adres_plus tabel rond regel 1393 dit opgelost is:

cast(adres.geopunt AS geometry(PointZ, 28992)),

justb4 commented 3 years ago

Sluiten: open aparte issues voor bugs en uitbreidingen.