[opengeodb] SQL-Script für hierarchies

Peter Wendorff wendorff at uni-paderborn.de
Die Apr 1 09:34:52 CEST 2008


Martin Trautmann schrieb:
> Stephan S wrote:
>   
>> Hallo Peter,
>>
>> Da ich keinen Fehler in deinen Überlegungen finden konnte, habe ich mal
>> einen aktuellen Stand eingespielt um deine Vorgehensweise durchzuspielen.
>> Dabei habe ich DE.sql, CH.sql und LI.sql, extra.sql importiert und auch
>> die von Martin zur Verfügung gestellte geodb_hierarchies (für DE als
>> geodb_hierarchies_orig) zum Vergleich.
>>
>>     
>>> [...]
>>> UPDATE geodb_hierarchies SET id_lvl9 = loc_id WHERE `level`= 9;
>>>       
>> Hier ergibt sich ein erster Unterschied: in der geodb_hierarchies_orig
>> gibt es für diesen level keinen Eintrag, bei mir aber nach dem UPDATE 11
>>     
>
> Das kann an einem Fehler meinerseits liegen, weil ich die PLZ mit type 
> 100800000 verpasst hatte und daher level 8 auf 100800000 und level 9 auf 
> 100900000 habe.
>
>   
>>> Hiermit wird jeweils die ID in dem level gesetzt, in der der Eintrag
>>> selbst zu finden ist - denn die ist ja klar.
>>>
>>> ...und ab hier kriege ich Probleme...
>>> Meine Idee für das weitere Vorgehen:
>>> Nach und nach fülle ich jetzt Ebene e = 8, 7, 6, ..... über einzelne
>>> Queries auf.
>>>       
>
> Eigentlich musst du in umgekehrter Richtung arbeiten - zumindest muss 
> ich das mit meinem eigenen Ansatz.
>   
Bei deinem Ansatz gehst Du die Teil-Von-Beziehungen runter und musst 
dabei die Einträge hinterher zigfach kopieren.
Mein Ansatz bringt aber in der ersten Abfrage jeden Datensatz in die 
Tabelle, und von da an wird aufgefüllt, was fehlt.
Im Gegenteil würde dein Ansatz loc_ids, die keine Vorfahren bis Level 1 
haben, aussen vor lassen.
>
>   
>> liefert dann 86 Datensätze ohne Eintrag für level 4, ich füge die hier
>> einfach mal ein:
>>
>> loc_id;name;typ
>> 466;Flensburg;Stadt
>> 469;Kiel;Landeshauptstadt
>> 472;Hansestadt Lübeck;Hansestadt
>> Nehme ich die loc_id 472 (Lübeck) und prüfe die parent.loc_id (119) dann
>> ist dieses direkt Schleswig-Holstein auf level 3 und die Verknüpfung
>> über lvl.text_val = 4 passt nicht auf diese loc_id.
>>     
>
>
> Hier mal alle hierarchies mit Lübeck
>
> INSERT INTO geodb_hierarchies VALUES
>   (20437,6,104,105,119,null,472,20437,null,null,null); /* DE */
>   (106047,7,104,105,119,null,472,20437,106047,null,null); /* DE */
>   (106048,8,104,105,119,null,472,20437,106047,106048,null); /* DE */
>   (106049,8,104,105,119,null,472,20437,106047,106049,null); /* DE */
>   (106046,8,104,105,119,null,472,20437,null,106046,null); /* DE */
>   (106050,8,104,105,119,null,472,20437,null,106050,null); /* DE */
>   (106051,8,104,105,119,null,472,20437,null,106051,null); /* DE */
>   (106052,8,104,105,119,null,472,20437,null,106052,null); /* DE */
>   (106053,8,104,105,119,null,472,20437,null,106053,null); /* DE */
>   (106054,8,104,105,119,null,472,20437,null,106054,null); /* DE */
>   (106055,8,104,105,119,null,472,20437,null,106055,null); /* DE */
>   (106056,8,104,105,119,null,472,20437,null,106056,null); /* DE */
>   (106057,8,104,105,119,null,472,20437,null,106057,null); /* DE */
>   (106058,8,104,105,119,null,472,20437,null,106058,null); /* DE */
>   (106059,8,104,105,119,null,472,20437,null,106059,null); /* DE */
>   (106060,8,104,105,119,null,472,20437,null,106060,null); /* DE */
>   (106061,8,104,105,119,null,472,20437,null,106061,null); /* DE */
>   (106062,8,104,105,119,null,472,20437,null,106062,null); /* DE */
>   (106063,8,104,105,119,null,472,20437,null,106063,null); /* DE */
>   (106064,8,104,105,119,null,472,20437,null,106064,null); /* DE */
>
> level 4 muss hier leer sein, weil es in Schleswig-Holstein keine 
> Regierungsbezirke gibt.
> #104: Europa
> #105: Deutschland
> #119: Schleswig-Holstein
> -: Regierungsbezirk
> #472: Lübeck (Hansestadt, Kreisebene)
> #20437: Lübeck (Gemeindeebene)
> #106047: Klein Grönau
> #106048: Gothmund
> ...
>
>   
>> Was das genau bedeutet, ist mir noch nicht klar und es ist jetzt doch
>> schon spät. Wir sollten da dranbleiben ;-)
>>     
>
>   
Die leer gebliebenen Ebenen (wie hier die Ebene 4) sind noch nicht dabei 
bis dahin, das ist mir klar, aber das kommt noch.

Gruß
Peter
> Ja, unbedingt...
>
> Übrigens würde ich vorschlagen, s.o., das begin/end-Datum aus den 
> hierarchies zu entfernen. Da diese Daten abgeleitet sind und da sich das 
> Datum eher aus den 400-Typen ergibt, brauchen wir es hier nicht mehr.
>   
gerne; aber für das Script sind die egal, insofern lasse ich die erstmal 
drin, bis die aus deinen offiziellen Dumps auch raus sind.
> Schönen Gruß
> Martin
>