@@ -71,32 +71,40 @@ def save_openbare_ruimte(self, data):
71
71
def save_nummer (self , data ):
72
72
# Note: Use replace, because BAG does not always contain unique id's
73
73
self .connection .execute (
74
- """REPLACE INTO nummers (id, postcode, huisnummer, huisletter, toevoeging, woonplaats_id, openbareruimte_id,
75
- status) VALUES(?, ?, ?, ?, ?, ?, ?, ?);
74
+ """REPLACE INTO nummers (id, postcode, huisnummer, huisletter, toevoeging, woonplaats_id,
75
+ openbare_ruimte_id, status) VALUES(?, ?, ?, ?, ?, ?, ?, ?);
76
76
""" ,
77
77
(data ["id" ], data ["postcode" ], data ["huisnummer" ], data ["huisletter" ], data ["toevoeging" ],
78
- data ["woonplaats_id" ], data ["openbareruimte_id " ], data ["status" ])
78
+ data ["woonplaats_id" ], data ["openbare_ruimte_id " ], data ["status" ])
79
79
)
80
80
81
-
82
81
def save_pand (self , data ):
83
82
# Note: Use replace, because BAG does not always contain unique id's
84
83
self .connection .execute (
85
84
"""REPLACE INTO panden (id, bouwjaar, status, geometry)
86
85
VALUES(?, ?, ?, ?)
87
86
""" ,
88
- (data ["id" ], data ["bouwjaar" ], data ["status" ], data ["geometry" ]))
87
+ (data ["id" ], data ["bouwjaar" ], data ["status" ], data ["geometry" ])
88
+ )
89
89
90
90
def save_verblijfsobject (self , data ):
91
91
# Note: Use replace, because BAG does not always contain unique id's
92
92
self .connection .execute (
93
93
"""REPLACE INTO verblijfsobjecten (id, nummer_id, pand_id, oppervlakte, rd_x, rd_y, latitude, longitude,
94
- gebruiksdoel, status) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
94
+ gebruiksdoel, status) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
95
95
""" ,
96
96
(data ["id" ], data ["nummer_id" ], data ["pand_id" ], data ["oppervlakte" ], data ["rd_x" ], data ["rd_y" ],
97
97
data ["latitude" ], data ["longitude" ], data ["gebruiksdoel" ], data ["status" ])
98
98
)
99
99
100
+ if data ["nevenadressen" ]:
101
+ nevenadressen = data ["nevenadressen" ].split ("," )
102
+ for neven_nummer_id in nevenadressen :
103
+ self .connection .execute ("""
104
+ INSERT INTO nevenadressen (verblijfsobject_id, neven_nummer_id, hoofd_nummer_id) VALUES (?, ?, ?);
105
+ """ , (data ["id" ], neven_nummer_id , data ["nummer_id" ])
106
+ )
107
+
100
108
def save_ligplaats (self , data ):
101
109
# Note: Use replace, because BAG does not always contain unique id's
102
110
self .connection .execute (
@@ -130,27 +138,35 @@ def create_bag_tables(self):
130
138
131
139
DROP TABLE IF EXISTS openbare_ruimten;
132
140
CREATE TABLE openbare_ruimten (id INTEGER PRIMARY KEY, naam TEXT, lange_naam TEXT, verkorte_naam TEXT,
133
- type TEXT, woonplaats_id INTEGER);
141
+ type TEXT, woonplaats_id INTEGER);
134
142
135
143
DROP TABLE IF EXISTS nummers;
136
144
CREATE TABLE nummers (id TEXT PRIMARY KEY, postcode TEXT, huisnummer INTEGER, huisletter TEXT,
137
- toevoeging TEXT, woonplaats_id TEXT, openbareruimte_id TEXT, status TEXT);
145
+ toevoeging TEXT, woonplaats_id TEXT, openbare_ruimte_id TEXT, status TEXT);
138
146
139
147
DROP TABLE IF EXISTS panden;
140
148
CREATE TABLE panden (id TEXT PRIMARY KEY, bouwjaar INTEGER, status TEXT, geometry TEXT);
141
149
142
150
DROP TABLE IF EXISTS verblijfsobjecten;
143
151
CREATE TABLE verblijfsobjecten (id TEXT PRIMARY KEY, nummer_id TEXT, pand_id TEXT,
144
- oppervlakte FLOAT, rd_x FLOAT, rd_y FLOAT, latitude FLOAT, longitude FLOAT, gebruiksdoel TEXT,
145
- status TEXT);
152
+ oppervlakte FLOAT, rd_x FLOAT, rd_y FLOAT, latitude FLOAT, longitude FLOAT, gebruiksdoel TEXT,
153
+ status TEXT);
154
+
155
+ DROP TABLE IF EXISTS nevenadressen;
156
+ CREATE TABLE nevenadressen (
157
+ verblijfsobject_id TEXT,
158
+ neven_nummer_id TEXT,
159
+ hoofd_nummer_id TEXT,
160
+ PRIMARY KEY (verblijfsobject_id, neven_nummer_id)
161
+ );
146
162
147
163
DROP TABLE IF EXISTS ligplaatsen;
148
164
CREATE TABLE ligplaatsen (id TEXT PRIMARY KEY, nummer_id TEXT, rd_x FLOAT, rd_y FLOAT, latitude FLOAT,
149
- longitude FLOAT, status TEXT, geometry TEXT);
165
+ longitude FLOAT, status TEXT, geometry TEXT);
150
166
151
167
DROP TABLE IF EXISTS standplaatsen;
152
168
CREATE TABLE standplaatsen (id TEXT PRIMARY KEY, nummer_id TEXT, rd_x FLOAT, rd_y FLOAT, latitude FLOAT,
153
- longitude FLOAT, status TEXT, geometry TEXT);
169
+ longitude FLOAT, status TEXT, geometry TEXT);
154
170
""" )
155
171
self .connection .commit ()
156
172
@@ -173,48 +189,60 @@ def create_indices_adressen(self):
173
189
174
190
def create_adressen_from_bag (self ):
175
191
192
+ utils .print_log ('create adressen tabel: import adressen' )
176
193
self .connection .executescript (f"""
177
194
DROP TABLE IF EXISTS adressen;
178
195
179
196
CREATE TABLE adressen (nummer_id TEXT PRIMARY KEY, pand_id TEXT, verblijfsobject_id TEXT,
180
197
gemeente_id INTEGER, woonplaats_id INTEGER, openbare_ruimte_id INTEGER, object_type TEXT,
181
198
gebruiksdoel TEXT, postcode TEXT, huisnummer INTEGER, huisletter TEXT, toevoeging TEXT,
182
- oppervlakte FLOAT, rd_x FLOAT, rd_y FLOAT, latitude FLOAT, longitude FLOAT, bouwjaar INTEGER,
199
+ oppervlakte FLOAT, rd_x FLOAT, rd_y FLOAT, latitude FLOAT, longitude FLOAT, bouwjaar INTEGER,
200
+ hoofd_nummer_id TEXT,
183
201
geometry TEXT);
184
202
185
203
INSERT INTO adressen (nummer_id, pand_id, verblijfsobject_id, gemeente_id, woonplaats_id,
186
204
openbare_ruimte_id, object_type, gebruiksdoel, postcode, huisnummer, huisletter, toevoeging,
187
205
oppervlakte, rd_x, rd_y, longitude, latitude, bouwjaar, geometry)
188
206
SELECT
189
- n.id AS nummer_id,
190
- p.id AS pand_id,
191
- v.id AS verblijfsobject_id,
192
- w.gemeente_id,
193
- o.woonplaats_id,
194
- o.id,
195
- 'verblijfsobject',
196
- v.gebruiksdoel,
197
- n.postcode,
198
- n.huisnummer,
199
- n.huisletter,
200
- n.toevoeging,
201
- v.oppervlakte,
202
- v.rd_x,
203
- v.rd_y,
204
- v.longitude,
205
- v.latitude,
206
- p.bouwjaar,
207
- p.geometry
207
+ n.id AS nummer_id,
208
+ p.id AS pand_id,
209
+ v.id AS verblijfsobject_id,
210
+ w.gemeente_id,
211
+ o.woonplaats_id,
212
+ o.id,
213
+ 'verblijfsobject',
214
+ v.gebruiksdoel,
215
+ n.postcode,
216
+ n.huisnummer,
217
+ n.huisletter,
218
+ n.toevoeging,
219
+ v.oppervlakte,
220
+ v.rd_x,
221
+ v.rd_y,
222
+ v.longitude,
223
+ v.latitude,
224
+ p.bouwjaar,
225
+ p.geometry
208
226
FROM nummers n
209
- LEFT JOIN openbare_ruimten o ON o.id = n.openbareruimte_id
227
+ LEFT JOIN openbare_ruimten o ON o.id = n.openbare_ruimte_id
210
228
LEFT JOIN woonplaatsen w ON w.id = o.woonplaats_id
211
229
LEFT JOIN verblijfsobjecten v ON v.nummer_id = n.id
212
230
LEFT JOIN panden p ON v.pand_id = p.id;
213
231
""" )
214
232
233
+ utils .print_log ('create adressen tabel: import ligplaatsen data' )
215
234
self .adressen_import_ligplaatsen ()
235
+
236
+ utils .print_log ('create adressen tabel: import standplaatsen data' )
216
237
self .adressen_import_standplaatsen ()
238
+
239
+ utils .print_log ('create adressen tabel: import woonplaatsen from nummers' )
217
240
self .adressen_update_woonplaatsen_from_nummers ()
241
+
242
+ utils .print_log ('create adressen tabel: update nevenadressen data' )
243
+ self .adressen_update_nevenadressen ()
244
+
245
+ utils .print_log ('create adressen tabel: create indices' )
218
246
self .create_indices_adressen ()
219
247
220
248
self .connection .commit ()
@@ -245,7 +273,41 @@ def adressen_import_standplaatsen(self):
245
273
WHERE s.nummer_id = adressen.nummer_id;
246
274
""" )
247
275
248
- # woonplaats_id in nummers overruled woonplaats_id van de openbare ruimte.
276
+ def adressen_update_nevenadressen (self ):
277
+ self .connection .executescript ("""
278
+ UPDATE adressen SET
279
+ hoofd_nummer_id = n.hoofd_nummer_id,
280
+ pand_id = n.pand_id,
281
+ verblijfsobject_id = n.verblijfsobject_id,
282
+ gebruiksdoel = n.gebruiksdoel,
283
+ oppervlakte = n.oppervlakte,
284
+ rd_x = n.rd_x,
285
+ rd_y = n.rd_y,
286
+ latitude = n.latitude,
287
+ longitude = n.longitude,
288
+ bouwjaar = n.bouwjaar,
289
+ geometry = n.geometry
290
+ FROM (
291
+ SELECT
292
+ nevenadressen.hoofd_nummer_id,
293
+ nevenadressen.neven_nummer_id,
294
+ adressen.pand_id,
295
+ adressen.verblijfsobject_id,
296
+ adressen.gebruiksdoel,
297
+ adressen.oppervlakte,
298
+ adressen.rd_x,
299
+ adressen.rd_y,
300
+ adressen.latitude,
301
+ adressen.longitude,
302
+ adressen.bouwjaar,
303
+ adressen.geometry
304
+ FROM nevenadressen
305
+ LEFT JOIN adressen ON nevenadressen.hoofd_nummer_id = adressen.nummer_id
306
+ ) AS n
307
+ WHERE n.neven_nummer_id = adressen.nummer_id;
308
+ """ )
309
+
310
+ # woonplaats_id in nummers overrule woonplaats_id van de openbare ruimte.
249
311
def adressen_update_woonplaatsen_from_nummers (self ):
250
312
self .connection .executescript ("""
251
313
UPDATE adressen SET
@@ -258,6 +320,7 @@ def delete_no_longer_needed_bag_tables(self):
258
320
self .connection .executescript ("""
259
321
DROP TABLE IF EXISTS nummers;
260
322
DROP TABLE IF EXISTS panden;
323
+ DROP TABLE IF EXISTS nevenadressen;
261
324
DROP TABLE IF EXISTS verblijfsobjecten;
262
325
DROP TABLE IF EXISTS ligplaatsen;
263
326
DROP TABLE IF EXISTS standplaatsen;
@@ -344,7 +407,7 @@ def test_bag_adressen(self):
344
407
345
408
# Het is makkelijk om per ongeluk een gemeenten.csv te genereren die niet in UTF-8 is. Testen dus.
346
409
naam = self .fetchone ("SELECT naam FROM gemeenten WHERE id=1900" )
347
- utils .print_log ("test: Gemeentenamen moeten in UTF-8 zijn: " + naam , naam != 'Súdwest-Fryslân' )
410
+ utils .print_log ("test: gemeentenamen moeten in UTF-8 zijn: " + naam , naam != 'Súdwest-Fryslân' )
348
411
349
412
aantal = self .fetchone ("SELECT COUNT(*) FROM adressen WHERE adressen.latitude IS NULL AND pand_id IS NOT NULL;" )
350
413
utils .print_log ("test: panden zonder locatie: " + str (aantal ), aantal > 0 )
0 commit comments