[opengeodb] SQL-Script für hierarchies

Martin Trautmann traut at gmx.de
Die Apr 1 08:18:43 CEST 2008


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.


> 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 ;-)

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.

Schönen Gruß
Martin