Hoi! Ik zie dat NlExtract echt een miljoen keer meer kan dan mijn projectje! Ik zag niet 1 2 3 hoe ik met de huidige XML aan de slag kan (wel de oude versie).
Over relationele conversie, misschien zie ik het te simpel, maar met wat koppeltabellen zijn de N:M relaties prima te vangen lijkt het.
Mijn oude werkplek bijvoorbeeld, Binnenhof 19 in Den Haag:
sqlite> select * from vbos,vbo_num,nums where vbos.id='0518010000692261' and vbo_num.num = nums.id and vbo_num.vbo=vbos.id;
| id | gebruiksdoel | x | y | status | oppervlakte | type | vbo | num | hoofdadres | id | ligtAanRef | woonplaats | postcode | huisnummer | huisletter | huistoevoeging | status | ligtInRef |
|------------------|----------------|-----------|------------|----------------------------|-------------|------|------------------|------------------|------------|------------------|------------------|---------------|----------|------------|------------|----------------|-----------------------|-----------|
| 0518010000692261 | kantoorfunctie | 81431.756 | 455218.921 | Verblijfsobject in gebruik | 7726 | vbo | 0518010000692261 | 0518200000692257 | 1 | 0518200000692257 | 0518300000201432 | 's-Gravenhage | 2513AA | 17 | | | Naamgeving uitgegeven | |
| 0518010000692261 | kantoorfunctie | 81431.756 | 455218.921 | Verblijfsobject in gebruik | 7726 | vbo | 0518010000692261 | 0518200000692258 | 0 | 0518200000692258 | 0518300000201432 | 's-Gravenhage | 2513AA | 18 | | | Naamgeving uitgegeven | |
| 0518010000692261 | kantoorfunctie | 81431.756 | 455218.921 | Verblijfsobject in gebruik | 7726 | vbo | 0518010000692261 | 0518200000692259 | 0 | 0518200000692259 | 0518300000201432 | 's-Gravenhage | 2513AA | 19 | | | Naamgeving uitgegeven | |
| 0518010000692261 | kantoorfunctie | 81431.756 | 455218.921 | Verblijfsobject in gebruik | 7726 | vbo | 0518010000692261 | 0518200000692260 | 0 | 0518200000692260 | 0518300000201432 | 's-Gravenhage | 2513AA | 20 | | | Naamgeving uitgegeven | |
Dit is een verblijfsobject met meerdere nummeraanduidingen. Via de vbo_num koppeltabel zijn N:M relaties mogelijk tussen VBO en NUM.
Vergelijkbaar is er een pnd_vbo tabel, met bijvoorbeeld dit appartement in Scheveningen dat samen in 1 pand zit samen met 48 andere verblijfsobjecten:
sqlite> select * from alllabel where straat='Scheveningseslag' and huisnummer='3';
| straat | huisnummer | huisletter | huistoevoeging | woonplaats | postcode | x | y | oppervlakte | gebruiksdoel | bouwjaar | num_status | vbo_status | vbo_type | num_id | vbo_id | opr_id | pnd_id |
|------------------|------------|------------|----------------|---------------|----------|-----------|------------|-------------|--------------|----------|-----------------------|----------------------------|----------|------------------|------------------|------------------|------------------|
| Scheveningseslag | 3 | | | 's-Gravenhage | 2586CJ | 79044.847 | 458691.553 | 133 | woonfunctie | 1991 | Naamgeving uitgegeven | Verblijfsobject in gebruik | vbo | 0518200000445262 | 0518010000445263 | 0518300000200659 | 0518100000272162 |
Alle andere VBO’s zijn te vinden met:
sqlite> select * from vbo_pnd,vbos,vbo_num,nums,oprs where pnd='0518100000272162' and vbos.id=vbo_pnd.vbo and vbo_num.vbo = vbos.id and nums.id = vbo_num.num and oprs.id = nums.ligtAanRef order by huisnummer;
| vbo | pnd | id | gebruiksdoel | x | y | status | oppervlakte | type | vbo | num | hoofdadres | id | ligtAanRef | woonplaats | postcode | huisnummer | huisletter | huistoevoeging | status | ligtInRef | id | naam | type | ligtInRef | verkorteNaam |
|------------------|------------------|------------------|-------------------------|-----------|------------|----------------------------|-------------|------|------------------|------------------|------------|------------------|------------------|---------------|----------|------------|------------|----------------|-----------------------|-----------|------------------|------------------|------|-----------|--------------|
| 0518010000445263 | 0518100000272162 | 0518010000445263 | woonfunctie | 79044.847 | 458691.553 | Verblijfsobject in gebruik | 133 | vbo | 0518010000445263 | 0518200000445262 | 1 | 0518200000445262 | 0518300000200659 | 's-Gravenhage | 2586CJ | 3 | | | Naamgeving uitgegeven | | 0518300000200659 | Scheveningseslag | Weg | 1245 | |
| 0518010000378332 | 0518100000272162 | 0518010000378332 | woonfunctie | 79052.043 | 458698.676 | Verblijfsobject in gebruik | 120 | vbo | 0518010000378332 | 0518200000378331 | 1 | 0518200000378331 | 0518300000200659 | 's-Gravenhage | 2586CJ | 5 | | | Naamgeving uitgegeven | | 0518300000200659 | Scheveningseslag | Weg | 1245 | |
| 0518010000679480 | 0518100000272162 | 0518010000679480 | overige gebruiksfunctie | 79052.966 | 458679.956 | Verblijfsobject in gebruik | 993 | vbo | 0518010000679480 | 0518200000679479 | 1 | 0518200000679479 | 0518300000200283 | 's-Gravenhage | 2586EL | 6 | | | Naamgeving uitgegeven | | 0518300000200283 | Harteveltstraat | Weg | 1245 | |
...
Ook omgekeerde relaties, VBO’s met meerdere panden zijn zo goed te vangen.
Over de actuele bestanden, ik filter nu op eindDatum, en als die er is beschouw ik het record als oud.
Ook verwerk ik het ligtIn veld in nummeraanduidingen, zijn toch 3000 nummeraanduidingen die in een andere woonplaats liggen.
Ik focus me op een beperkte functionaliteit, maar die wil ik wel goed houden, dus dank voor de tips!