Alle Städte und/oder Landkreise in einem Bundesland?

View: New views
15 Messages — Rating Filter:   Alert me  

Alle Städte und/oder Landkreise in einem Bundesland?

by Jan-Simon Winkelmann-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hallo Liste,

ich stehe (nach meinem inzwischen gelösten Kartenproblem) mal wieder vor
einer Problematik. Diesmal mit der opengeodb selbst.
Und zwar möchte ich gerne (ohne die geoclassphp, sofern die das denn
überhaupt kann) eine Liste von allen Städten in einem Bundesland oder
allen Landkreisen in einem Bundesland haben. Geht das irgendwie oder
fehlt da die Zuordnung?

gruß
Jan
--
Mailingliste OpenGeoDB
Listenadresse: opengeodb@...
Informationen: http://opengeodb.de
Mit freundlicher Unterstütztung von php::bar (http://phpbar.de)

Re: Alle Städte und/oder Landkreise in einem Bundesland?

by Stephan Schuster :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hallo Jan,

> Und zwar möchte ich gerne (ohne die geoclassphp, sofern die das denn
> überhaupt kann) eine Liste von allen Städten in einem Bundesland oder
> allen Landkreisen in einem Bundesland haben. Geht das irgendwie oder
> fehlt da die Zuordnung?

machbar ist das Ganze sicher, der Schlüssel dazu sind die Datensätze vom
Typ 400100000 (= Teil von) in der Tabelle geodb_textdata. Diese ordnen
der jeweiligen loc_id die übergeordnet Location zu. Hier müsstest Du
dann die jeweiligen Ebenen durchlaufen.

Alle Ortschaften zum Landkreis Pinneberg (loc_id 485) erhälst Du
beispielsweise mit folgender Abfrage:

    SELECT gtv.loc_id, name.text_val AS name, typ.text_val AS typ
    FROM geodb_textdata gtv
    LEFT JOIN geodb_textdata name ON gtv.loc_id = name.loc_id
    LEFT JOIN geodb_textdata typ ON gtv.loc_id = typ.loc_id
    WHERE name.text_type = 500100000 /* Name */
    AND typ.text_type = 400300000 /* Typ */
    AND gtv.text_type = 400100000 /* Teil von */
    AND gtv.text_val = '485' /* loc_id des Landkreis Pinneberg */;

Analog dazu müsstest Du deine Abfragen gestalten. Möglicherweise kannst
du auch http://fa-technik.adfc.de/code/opengeodb/dump/Dhier.sql
für die gewünschte Hierarchie-Struktur verwenden, aber ich glaube es hat sich
noch niemand die Mühe gemacht diese zu prüfen.

BTW: Ich glaube nicht, dass die geoclass.php noch mit dem aktuellen
Schema zusammenarbeitet...

Gruß
Stephan

--
Mailingliste OpenGeoDB
Listenadresse: opengeodb@...
Informationen: http://opengeodb.de
Mit freundlicher Unterstütztung von php::bar (http://phpbar.de)

Re: Alle Städte und/oder Landkreise in einem Bundesland?

by Peter Wendorff :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

???
400100000 steht in geodb_textdata?
Wenn das Teil-Von-Beziehungen sind, sind das locid-Werte, damit gehören
die doch wohl eindeutig in geodb_intdata, oder?
Ist jetzt kein Einwand zu Stefan oder Jan-Simon, eher eine generelle
Frage, ob hier nicht dann ein Fehler in der Verwendung der Struktur
vorliegt.

Gruß
Peter Wendorff

Stephan Schuster schrieb:

> Hallo Jan,
>
>  
>> Und zwar möchte ich gerne (ohne die geoclassphp, sofern die das denn
>> überhaupt kann) eine Liste von allen Städten in einem Bundesland oder
>> allen Landkreisen in einem Bundesland haben. Geht das irgendwie oder
>> fehlt da die Zuordnung?
>>    
>
> machbar ist das Ganze sicher, der Schlüssel dazu sind die Datensätze vom
> Typ 400100000 (= Teil von) in der Tabelle geodb_textdata. Diese ordnen
> der jeweiligen loc_id die übergeordnet Location zu. Hier müsstest Du
> dann die jeweiligen Ebenen durchlaufen.
>
> Alle Ortschaften zum Landkreis Pinneberg (loc_id 485) erhälst Du
> beispielsweise mit folgender Abfrage:
>
>     SELECT gtv.loc_id, name.text_val AS name, typ.text_val AS typ
>     FROM geodb_textdata gtv
>     LEFT JOIN geodb_textdata name ON gtv.loc_id = name.loc_id
>     LEFT JOIN geodb_textdata typ ON gtv.loc_id = typ.loc_id
>     WHERE name.text_type = 500100000 /* Name */
>     AND typ.text_type = 400300000 /* Typ */
>     AND gtv.text_type = 400100000 /* Teil von */
>     AND gtv.text_val = '485' /* loc_id des Landkreis Pinneberg */;
>
> Analog dazu müsstest Du deine Abfragen gestalten. Möglicherweise kannst
> du auch http://fa-technik.adfc.de/code/opengeodb/dump/Dhier.sql
> für die gewünschte Hierarchie-Struktur verwenden, aber ich glaube es hat sich
> noch niemand die Mühe gemacht diese zu prüfen.
>
> BTW: Ich glaube nicht, dass die geoclass.php noch mit dem aktuellen
> Schema zusammenarbeitet...
>
> Gruß
> Stephan
>
>  

--
Mailingliste OpenGeoDB
Listenadresse: opengeodb@...
Informationen: http://opengeodb.de
Mit freundlicher Unterstütztung von php::bar (http://phpbar.de)

Re: Alle Städte und/oder Landkreise in einem Bundesland?

by Stephan Schuster :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hallo Peter

> 400100000 steht in geodb_textdata?

ja.

> Wenn das Teil-Von-Beziehungen sind, sind das locid-Werte, damit gehören
> die doch wohl eindeutig in geodb_intdata, oder?

Die Frage ist berechtigt, da loc_id laut Strukturdump ein Integer ist,
hast Du wohl recht.

> Ist jetzt kein Einwand zu Stefan oder Jan-Simon, eher eine generelle
> Frage, ob hier nicht dann ein Fehler in der Verwendung der Struktur
> vorliegt.

Falls niemand einen plausiblen Einwand hat, sollte dies eigentlich
geändert werden. An dieser Stelle sollte man auch überlegen, ob dies
nicht auch für type_id 400200000 (Ebene) gilt. Die Bedeutung von Ebene
ist mir auch nicht ganz klar.

Gruß
Stephan

--
Mailingliste OpenGeoDB
Listenadresse: opengeodb@...
Informationen: http://opengeodb.de
Mit freundlicher Unterstütztung von php::bar (http://phpbar.de)

Re: Alle Städte und/oder Landkreise in einem Bundesland?

by Jan-Simon Winkelmann-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


>> Ist jetzt kein Einwand zu Stefan oder Jan-Simon, eher eine generelle
>> Frage, ob hier nicht dann ein Fehler in der Verwendung der Struktur
>> vorliegt.
>>    
>
> Falls niemand einen plausiblen Einwand hat, sollte dies eigentlich
> geändert werden. An dieser Stelle sollte man auch überlegen, ob dies
> nicht auch für type_id 400200000 (Ebene) gilt. Die Bedeutung von Ebene
> ist mir auch nicht ganz klar.
>
> Gruß
> Stephan
>
>  
Wobei sich für mich allgemein die Frage stellt wo das überhaupt wirklich
vollständig dokumentiert ist?!?

gruß
Jan

--
Mailingliste OpenGeoDB
Listenadresse: opengeodb@...
Informationen: http://opengeodb.de
Mit freundlicher Unterstütztung von php::bar (http://phpbar.de)

Re: Alle Städte und/oder Landkreise in einem Bundesland?

by Robert Böck :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hallo Jan,

Jan-Simon Winkelmann wrote:

> ich stehe (nach meinem inzwischen gelösten Kartenproblem) mal wieder vor
> einer Problematik. Diesmal mit der opengeodb selbst.
> Und zwar möchte ich gerne (ohne die geoclassphp, sofern die das denn
> überhaupt kann) eine Liste von allen Städten in einem Bundesland oder
> allen Landkreisen in einem Bundesland haben. Geht das irgendwie oder
> fehlt da die Zuordnung?

Ich habe mir vor einiger Zeit mal einige Abfragen in mühevoller
Kleinarbeit zusammengebaut. Diese Abfragen beziehen sich auf Bayern,
aber du kannst sie ja auf das jeweilige Bundesland anpassen. Beachte,
dass diese Abfragen nur mit einer intakten geodb_hierarchies funktionieren.

------------------------------------------------------------------------
Regierungsbezirk:

SELECT ort.loc_id as l_ort,
       ort.text_val as t_ort
FROM geodb_hierarchies hi,
     geodb_textdata land,
     geodb_textdata ort,
     geodb_textdata bundesland
WHERE hi.id_lvl2=land.loc_id AND
      land.text_val='DE' AND
      land.text_type=500100001 AND
      hi.id_lvl3=bundesland.loc_id AND
      bundesland.text_val='BY' AND
      bundesland.text_type=500100001 AND
      ort.loc_id = hi.loc_id AND
      ort.text_type = 500100000 AND
      hi.loc_id=hi.id_lvl4
ORDER BY l_ort
------------------------------------------------------------------------
Landkreis:

SELECT ort.loc_id as l_ort,
       ort.text_val as t_ort,
       hi.id_lvl4 as rbez_id
FROM geodb_hierarchies hi,
     geodb_textdata land,
     geodb_textdata ort,
     geodb_textdata bundesland
WHERE hi.id_lvl2=land.loc_id AND
      land.text_val='DE' AND
      land.text_type=500100001 AND
      hi.id_lvl3=bundesland.loc_id AND
      bundesland.text_val='BY' AND
      bundesland.text_type=500100001 AND
      ort.loc_id = hi.loc_id AND
      ort.text_type = 500100000 AND
      hi.loc_id=hi.id_lvl5
ORDER BY l_ort
------------------------------------------------------------------------
Ort:

SELECT ort.loc_id as l_ort,
       ort.text_val as t_ort,
       coord.lon as lon,
       coord.lat as lat,
       kfz.text_val as t_kfz,
       hi.id_lvl5 as lkr_id
FROM geodb_hierarchies hi,
     geodb_textdata land,
     geodb_textdata ort,
     geodb_textdata bundesland,
     geodb_textdata kfz,
     geodb_coordinates coord,
     geodb_locations loc
WHERE hi.id_lvl2=land.loc_id AND
      land.text_val='DE' AND
      land.text_type=500100001 AND
      hi.id_lvl3=bundesland.loc_id AND
      bundesland.text_val='BY' AND
      bundesland.text_type=500100001 AND
      ort.loc_id=hi.loc_id AND
      ort.text_type=500100000 AND
      hi.loc_id=hi.id_lvl6 AND
      loc.loc_id=hi.loc_id AND
      loc.loc_type=100700000 AND
      coord.loc_id=hi.loc_id AND
      kfz.loc_id=hi.loc_id AND
      kfz.text_type=500500000
ORDER BY l_ort
------------------------------------------------------------------------
PLZ:

SELECT plz.loc_id as l_plz,
       plz.text_val as t_plz
FROM geodb_hierarchies hi,
     geodb_textdata land,
     geodb_textdata bundesland,
     geodb_textdata plz
WHERE hi.id_lvl2=land.loc_id AND
      land.text_val='DE' AND
      land.text_type=500100001 AND
      hi.id_lvl3=bundesland.loc_id AND
      bundesland.text_val='BY' AND
      bundesland.text_type=500100001 AND
      hi.loc_id=hi.id_lvl6 AND
      plz.loc_id=hi.loc_id AND
      plz.text_type=500300000
ORDER BY l_plz, t_plz
------------------------------------------------------------------------

cu, Robo :)

--
Mailingliste OpenGeoDB
Listenadresse: opengeodb@...
Informationen: http://opengeodb.de
Mit freundlicher Unterstütztung von php::bar (http://phpbar.de)

Re: Alle Städte und/oder Landkreise in einem Bundesland?

by Stephan Schuster :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hallo Jan,

> Wobei sich für mich allgemein die Frage stellt wo das überhaupt wirklich
> vollständig dokumentiert ist?!?

Das größte Problem der OpenGeoDB sehe ich tatsächlich in der
Dokumentation. Ein Ansatzpunkt ist die Doku auf Sourceforge. Unter
http://sourceforge.net/docman/?group_id=132421
findest Du die ursprünliche Dokumentation nach der Umstellung der
Datenbankstruktur  von Thomas Mack, dem früheren Hauptentwickler des
Projekts. Leider ist davon einiges bereits veraltet.

Immer noch interessant (vor allem für Einsteiger)  ist jedoch das
Datenbank-Schema (Punkt 1) und die Anmerkungen dazu (Punkt 2). Die
Angaben zur type_id stand früher in der Datei constants.txt, jetzt
finden sie sich in der Tabelle geodb_type_names.

Gruß
Stephan

--
Mailingliste OpenGeoDB
Listenadresse: opengeodb@...
Informationen: http://opengeodb.de
Mit freundlicher Unterstütztung von php::bar (http://phpbar.de)

Re: Alle Städte und/oder Landkreise in einem Bundesland?

by Jan-Simon Winkelmann-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Robert Böck schrieb:

> Hallo Jan,
>
> Jan-Simon Winkelmann wrote:
>
>  
>> ich stehe (nach meinem inzwischen gelösten Kartenproblem) mal wieder
>> vor einer Problematik. Diesmal mit der opengeodb selbst.
>> Und zwar möchte ich gerne (ohne die geoclassphp, sofern die das denn
>> überhaupt kann) eine Liste von allen Städten in einem Bundesland oder
>> allen Landkreisen in einem Bundesland haben. Geht das irgendwie oder
>> fehlt da die Zuordnung?
>>    
>
> Ich habe mir vor einiger Zeit mal einige Abfragen in mühevoller
> Kleinarbeit zusammengebaut. Diese Abfragen beziehen sich auf Bayern,
> aber du kannst sie ja auf das jeweilige Bundesland anpassen. Beachte,
> dass diese Abfragen nur mit einer intakten geodb_hierarchies
> funktionieren.
>
> ------------------------------------------------------------------------
> Regierungsbezirk:
>
> SELECT ort.loc_id as l_ort,
>        ort.text_val as t_ort
> FROM geodb_hierarchies hi,
>      geodb_textdata land,
>      geodb_textdata ort,
>      geodb_textdata bundesland
> WHERE hi.id_lvl2=land.loc_id AND
>       land.text_val='DE' AND
>       land.text_type=500100001 AND
>       hi.id_lvl3=bundesland.loc_id AND
>       bundesland.text_val='BY' AND
>       bundesland.text_type=500100001 AND
>       ort.loc_id = hi.loc_id AND
>       ort.text_type = 500100000 AND
>       hi.loc_id=hi.id_lvl4
> ORDER BY l_ort
> ------------------------------------------------------------------------
> Landkreis:
>
> SELECT ort.loc_id as l_ort,
>        ort.text_val as t_ort,
>        hi.id_lvl4 as rbez_id
> FROM geodb_hierarchies hi,
>      geodb_textdata land,
>      geodb_textdata ort,
>      geodb_textdata bundesland
> WHERE hi.id_lvl2=land.loc_id AND
>       land.text_val='DE' AND
>       land.text_type=500100001 AND
>       hi.id_lvl3=bundesland.loc_id AND
>       bundesland.text_val='BY' AND
>       bundesland.text_type=500100001 AND
>       ort.loc_id = hi.loc_id AND
>       ort.text_type = 500100000 AND
>       hi.loc_id=hi.id_lvl5
> ORDER BY l_ort
> ------------------------------------------------------------------------
> Ort:
>
> SELECT ort.loc_id as l_ort,
>        ort.text_val as t_ort,
>        coord.lon as lon,
>        coord.lat as lat,
>        kfz.text_val as t_kfz,
>        hi.id_lvl5 as lkr_id
> FROM geodb_hierarchies hi,
>      geodb_textdata land,
>      geodb_textdata ort,
>      geodb_textdata bundesland,
>      geodb_textdata kfz,
>      geodb_coordinates coord,
>      geodb_locations loc
> WHERE hi.id_lvl2=land.loc_id AND
>       land.text_val='DE' AND
>       land.text_type=500100001 AND
>       hi.id_lvl3=bundesland.loc_id AND
>       bundesland.text_val='BY' AND
>       bundesland.text_type=500100001 AND
>       ort.loc_id=hi.loc_id AND
>       ort.text_type=500100000 AND
>       hi.loc_id=hi.id_lvl6 AND
>       loc.loc_id=hi.loc_id AND
>       loc.loc_type=100700000 AND
>       coord.loc_id=hi.loc_id AND
>       kfz.loc_id=hi.loc_id AND
>       kfz.text_type=500500000
> ORDER BY l_ort
> ------------------------------------------------------------------------
> PLZ:
>
> SELECT plz.loc_id as l_plz,
>        plz.text_val as t_plz
> FROM geodb_hierarchies hi,
>      geodb_textdata land,
>      geodb_textdata bundesland,
>      geodb_textdata plz
> WHERE hi.id_lvl2=land.loc_id AND
>       land.text_val='DE' AND
>       land.text_type=500100001 AND
>       hi.id_lvl3=bundesland.loc_id AND
>       bundesland.text_val='BY' AND
>       bundesland.text_type=500100001 AND
>       hi.loc_id=hi.id_lvl6 AND
>       plz.loc_id=hi.loc_id AND
>       plz.text_type=500300000
> ORDER BY l_plz, t_plz
> ------------------------------------------------------------------------
>
> cu, Robo :)
>
>  
Hallo Robert,

leider ist bei mir die hierarchies-Tabelle leer ...

gruß
Jan

--
Mailingliste OpenGeoDB
Listenadresse: opengeodb@...
Informationen: http://opengeodb.de
Mit freundlicher Unterstütztung von php::bar (http://phpbar.de)

Re: Alle Städte und/oder Landkreise in einem Bundesland?

by Robert Böck :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Jan-Simon Winkelmann wrote:

>>> Und zwar möchte ich gerne (ohne die geoclassphp, sofern die das denn
>>> überhaupt kann) eine Liste von allen Städten in einem Bundesland oder
>>> allen Landkreisen in einem Bundesland haben.
>>
>> Ich habe mir vor einiger Zeit mal einige Abfragen in mühevoller
>> Kleinarbeit zusammengebaut. Diese Abfragen beziehen sich auf Bayern,
>> aber du kannst sie ja auf das jeweilige Bundesland anpassen. Beachte,
>> dass diese Abfragen nur mit einer intakten geodb_hierarchies
>> funktionieren.
>
> leider ist bei mir die hierarchies-Tabelle leer ...

Ich dachte, die gibt es bei Martin extra? Ich habe meine Abfragen mit
den aktuellen Daten nicht getestet, aber mit der 0.2.4d funktionieren
sie bestens.

cu, Robo :)

--
Mailingliste OpenGeoDB
Listenadresse: opengeodb@...
Informationen: http://opengeodb.de
Mit freundlicher Unterstütztung von php::bar (http://phpbar.de)

Re: Alle Städte und/oder Landkreise in einem Bundesland?

by Jan-Simon Winkelmann-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hallo,

ich hab jetzt mal folgendes gebaut:

SELECT
   tp.text_val AS t,
   n.text_val AS n, n.loc_id
FROM geodb_textdata AS gtv
INNER JOIN geodb_locations AS l ON gtv.loc_id=l.loc_id
INNER JOIN geodb_textdata AS tp ON l.loc_id=tp.loc_id
INNER JOIN geodb_textdata AS n ON l.loc_id=n.loc_id
WHERE
   (l.loc_type=100500000)
   AND (n.text_type=500100000)
   AND (gtv.text_type=400100000)
   AND (gtv.text_val=108)
   AND (n.text_locale='de')


sollte mir eigentlich alle Bundesländer in Deutschland ausgeben.
Merkwürdigerweise bekomme ich aber viele Sachen doppelt, finde aber den
Fehler nicht.
Jemand eine Ahnung?

gruß
Jan

Stephan Schuster schrieb:

> Hallo Jan,
>
>  
>> Und zwar möchte ich gerne (ohne die geoclassphp, sofern die das denn
>> überhaupt kann) eine Liste von allen Städten in einem Bundesland oder
>> allen Landkreisen in einem Bundesland haben. Geht das irgendwie oder
>> fehlt da die Zuordnung?
>>    
>
> machbar ist das Ganze sicher, der Schlüssel dazu sind die Datensätze vom
> Typ 400100000 (= Teil von) in der Tabelle geodb_textdata. Diese ordnen
> der jeweiligen loc_id die übergeordnet Location zu. Hier müsstest Du
> dann die jeweiligen Ebenen durchlaufen.
>
> Alle Ortschaften zum Landkreis Pinneberg (loc_id 485) erhälst Du
> beispielsweise mit folgender Abfrage:
>
>     SELECT gtv.loc_id, name.text_val AS name, typ.text_val AS typ
>     FROM geodb_textdata gtv
>     LEFT JOIN geodb_textdata name ON gtv.loc_id = name.loc_id
>     LEFT JOIN geodb_textdata typ ON gtv.loc_id = typ.loc_id
>     WHERE name.text_type = 500100000 /* Name */
>     AND typ.text_type = 400300000 /* Typ */
>     AND gtv.text_type = 400100000 /* Teil von */
>     AND gtv.text_val = '485' /* loc_id des Landkreis Pinneberg */;
>
> Analog dazu müsstest Du deine Abfragen gestalten. Möglicherweise kannst
> du auch http://fa-technik.adfc.de/code/opengeodb/dump/Dhier.sql
> für die gewünschte Hierarchie-Struktur verwenden, aber ich glaube es
> hat sich
> noch niemand die Mühe gemacht diese zu prüfen.
>
> BTW: Ich glaube nicht, dass die geoclass.php noch mit dem aktuellen
> Schema zusammenarbeitet...
>
> Gruß
> Stephan
>
>  


--
Mailingliste OpenGeoDB
Listenadresse: opengeodb@...
Informationen: http://opengeodb.de
Mit freundlicher Unterstütztung von php::bar (http://phpbar.de)

Re: Alle Städte und/oder Landkreise in einem Bundesland?

by Sascha Mantscheff :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Ohne genau zu wissen, worum es geht, würde ich
  SELECT DISTINCT ...
probieren - das filtert die doppelten aus.
s.m.

Jan-Simon Winkelmann schrieb:

> Hallo,
>
> ich hab jetzt mal folgendes gebaut:
>
> SELECT
>    tp.text_val AS t,
>    n.text_val AS n, n.loc_id
> FROM geodb_textdata AS gtv
> INNER JOIN geodb_locations AS l ON gtv.loc_id=l.loc_id
> INNER JOIN geodb_textdata AS tp ON l.loc_id=tp.loc_id
> INNER JOIN geodb_textdata AS n ON l.loc_id=n.loc_id
> WHERE
>    (l.loc_type=100500000)
>    AND (n.text_type=500100000)
>    AND (gtv.text_type=400100000)
>    AND (gtv.text_val=108)
>    AND (n.text_locale='de')
>
>
> sollte mir eigentlich alle Bundesländer in Deutschland ausgeben.
> Merkwürdigerweise bekomme ich aber viele Sachen doppelt, finde aber den
> Fehler nicht.
> Jemand eine Ahnung?
>
> gruß
> Jan
>
> Stephan Schuster schrieb:
>  
>> Hallo Jan,
>>
>>  
>>    
>>> Und zwar möchte ich gerne (ohne die geoclassphp, sofern die das denn
>>> überhaupt kann) eine Liste von allen Städten in einem Bundesland oder
>>> allen Landkreisen in einem Bundesland haben. Geht das irgendwie oder
>>> fehlt da die Zuordnung?
>>>    
>>>      
>> machbar ist das Ganze sicher, der Schlüssel dazu sind die Datensätze vom
>> Typ 400100000 (= Teil von) in der Tabelle geodb_textdata. Diese ordnen
>> der jeweiligen loc_id die übergeordnet Location zu. Hier müsstest Du
>> dann die jeweiligen Ebenen durchlaufen.
>>
>> Alle Ortschaften zum Landkreis Pinneberg (loc_id 485) erhälst Du
>> beispielsweise mit folgender Abfrage:
>>
>>     SELECT gtv.loc_id, name.text_val AS name, typ.text_val AS typ
>>     FROM geodb_textdata gtv
>>     LEFT JOIN geodb_textdata name ON gtv.loc_id = name.loc_id
>>     LEFT JOIN geodb_textdata typ ON gtv.loc_id = typ.loc_id
>>     WHERE name.text_type = 500100000 /* Name */
>>     AND typ.text_type = 400300000 /* Typ */
>>     AND gtv.text_type = 400100000 /* Teil von */
>>     AND gtv.text_val = '485' /* loc_id des Landkreis Pinneberg */;
>>
>> Analog dazu müsstest Du deine Abfragen gestalten. Möglicherweise kannst
>> du auch http://fa-technik.adfc.de/code/opengeodb/dump/Dhier.sql
>> für die gewünschte Hierarchie-Struktur verwenden, aber ich glaube es
>> hat sich
>> noch niemand die Mühe gemacht diese zu prüfen.
>>
>> BTW: Ich glaube nicht, dass die geoclass.php noch mit dem aktuellen
>> Schema zusammenarbeitet...
>>
>> Gruß
>> Stephan
>>
>>  
>>    
>
>
>  
--
Mailingliste OpenGeoDB
Listenadresse: opengeodb@...
Informationen: http://opengeodb.de
Mit freundlicher Unterstütztung von php::bar (http://phpbar.de)

Re: Alle Städte und/oder Landkreise in einem Bundesland?

by Stephan Schuster :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

> Hallo,
>
> ich hab jetzt mal folgendes gebaut:
>
> SELECT
>    tp.text_val AS t,
>    n.text_val AS n, n.loc_id
> FROM geodb_textdata AS gtv
> INNER JOIN geodb_locations AS l ON gtv.loc_id=l.loc_id
> INNER JOIN geodb_textdata AS tp ON l.loc_id=tp.loc_id
> INNER JOIN geodb_textdata AS n ON l.loc_id=n.loc_id
> WHERE
>    (l.loc_type=100500000)
>    AND (n.text_type=500100000)
>    AND (gtv.text_type=400100000)
>    AND (gtv.text_val=108)
>    AND (n.text_locale='de')
>
>
> sollte mir eigentlich alle Bundesländer in Deutschland ausgeben.
> Merkwürdigerweise bekomme ich aber viele Sachen doppelt, finde aber den
> Fehler nicht.
> Jemand eine Ahnung?

Du suchst hier alles was Teil von (gtv.text_type=400100000) der loc_id
108 ist (100500000 ist übrigens Landkreis, nicht Bundesland). 108 ist
die loc_id vom Bundesland Brandenburg. Um alle Bundesländer zu erhalten
fragst Du die geodb_locations nach Einträgen mit loc_type 100300000:

SELECT *
FROM geodb_locations
WHERE loc_type = 100300000

Das liefert 16 Einträge. Willst Du die Namen und die loc_id dazu:

SELECT locations.loc_id, name.text_val
FROM geodb_locations locations
LEFT JOIN geodb_textdata name ON name.loc_id = locations.loc_id
WHERE loc_type = 100300000 /* Typ für Bundesland */
  AND name.text_type = 500100000 /* Typ für Name */
 
Falls Du mehrer Staaten importiert hast: Die Einschränkung auf "Teil von"
müsste in diesem Fall dann für den Staat Deutschland gesetzt werden (loc_id
105).

Eine Anmerkung noch: für die Analyse deiner SQL-Statements ist es für
andere hilfreich, wenn die Aliase sprechend sind. Du weisst sicherlich
was Du dir bei tp gedacht hast, ich leider nicht und so muss ich erst
versuchen aus den Bedingungen zu erschließen, was Du möchtest.

Schönen Gruß
Stephan

--
Mailingliste OpenGeoDB
Listenadresse: opengeodb@...
Informationen: http://opengeodb.de
Mit freundlicher Unterstütztung von php::bar (http://phpbar.de)

Re: Alle Städte und/oder Landkreise in einem Bundesland?

by Jan-Simon Winkelmann-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hallo Stephan,

ich glaube ich habe etwas geschlafen als ich gepostet hab.
Ich meinte natürlich ich möchte alle Landkreise in einem angegebenen
Bundesland ;)
Entschuldige bitte die Verwirrung.

gruß
Jan

Stephan S schrieb:

>> Hallo,
>>
>> ich hab jetzt mal folgendes gebaut:
>>
>> SELECT
>>    tp.text_val AS t,
>>    n.text_val AS n, n.loc_id
>> FROM geodb_textdata AS gtv
>> INNER JOIN geodb_locations AS l ON gtv.loc_id=l.loc_id
>> INNER JOIN geodb_textdata AS tp ON l.loc_id=tp.loc_id
>> INNER JOIN geodb_textdata AS n ON l.loc_id=n.loc_id
>> WHERE
>>    (l.loc_type=100500000)
>>    AND (n.text_type=500100000)
>>    AND (gtv.text_type=400100000)
>>    AND (gtv.text_val=108)
>>    AND (n.text_locale='de')
>>
>>
>> sollte mir eigentlich alle Bundesländer in Deutschland ausgeben.
>> Merkwürdigerweise bekomme ich aber viele Sachen doppelt, finde aber
>> den Fehler nicht.
>> Jemand eine Ahnung?
>>    
>
> Du suchst hier alles was Teil von (gtv.text_type=400100000) der loc_id
> 108 ist (100500000 ist übrigens Landkreis, nicht Bundesland). 108 ist
> die loc_id vom Bundesland Brandenburg. Um alle Bundesländer zu erhalten
> fragst Du die geodb_locations nach Einträgen mit loc_type 100300000:
>
> SELECT *
> FROM geodb_locations
> WHERE loc_type = 100300000
>
> Das liefert 16 Einträge. Willst Du die Namen und die loc_id dazu:
>
> SELECT locations.loc_id, name.text_val
> FROM geodb_locations locations
> LEFT JOIN geodb_textdata name ON name.loc_id = locations.loc_id
> WHERE loc_type = 100300000 /* Typ für Bundesland */
>   AND name.text_type = 500100000 /* Typ für Name */
>   Falls Du mehrer Staaten importiert hast: Die Einschränkung auf "Teil
> von"
> müsste in diesem Fall dann für den Staat Deutschland gesetzt werden
> (loc_id
> 105).
>
> Eine Anmerkung noch: für die Analyse deiner SQL-Statements ist es für
> andere hilfreich, wenn die Aliase sprechend sind. Du weisst sicherlich
> was Du dir bei tp gedacht hast, ich leider nicht und so muss ich erst
> versuchen aus den Bedingungen zu erschließen, was Du möchtest.
>
> Schönen Gruß
> Stephan
>
>  

--
Mailingliste OpenGeoDB
Listenadresse: opengeodb@...
Informationen: http://opengeodb.de
Mit freundlicher Unterstütztung von php::bar (http://phpbar.de)

Re: Alle Städte und/oder Landkreise in einem Bundesland?

by Stephan Schuster :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hallo Jan,

> ich glaube ich habe etwas geschlafen als ich gepostet hab.
> Ich meinte natürlich ich möchte alle Landkreise in einem angegebenen
> Bundesland ;)
> Entschuldige bitte die Verwirrung.

kein Problem. Dann fehlt Deiner Abfrage die Einschränkung für tp auf
einen type (z.b. 500100000), dadurch liefert dir tp alle Einträge die
mit den gejointen (heisst das so? ;-) loc_ids verknüpft sind. Die runden
Klammern kannst Du bei dieser Abfrage weglassen. Also:

SELECT tp.text_val AS text, n.text_val AS name, n.loc_id
FROM geodb_locations AS l
INNER JOIN geodb_textdata AS gtv ON gtv.loc_id=l.loc_id
INNER JOIN geodb_textdata AS tp ON l.loc_id=tp.loc_id
INNER JOIN geodb_textdata AS n ON l.loc_id=n.loc_id
WHERE
   l.loc_type = 100500000
   AND tp.text_type = 500100000  /* Typ für tp auf Name beschränken */
   AND n.text_type=500100000   /* Typ für n auf Name beschränken */
   AND gtv.text_type=400100000 /* Teil von */
   AND gtv.text_val=108        /* Wert für Teil von (=LK Brandenburg) */
   AND n.text_locale='de';

Mir ist allerdings nicht ganz klar, warum Du zweimal den Namen abfragen
solltest? Ich konnte das auch nicht aus den Aliasen schliessen. Falls tp
beispielsweise für "typ" stehen sollte, müsstest Du als Bedingung für tp
statt der 500100000 die 400300000 verwenden:

SELECT tp.text_val AS text, n.text_val AS name, n.loc_id
FROM geodb_locations AS l
INNER JOIN geodb_textdata AS gtv ON gtv.loc_id=l.loc_id
INNER JOIN geodb_textdata AS tp ON l.loc_id=tp.loc_id
INNER JOIN geodb_textdata AS n ON l.loc_id=n.loc_id
WHERE
   l.loc_type = 100500000
   AND tp.text_type = 400300000  /* Typ für tp auf Typ beschränken */
   AND n.text_type=500100000   /* Typ für n auf Name beschränken */
   AND gtv.text_type=400100000 /* Teil von */
   AND gtv.text_val=108        /* Wert für Teil von (=LK Brandenburg) */
   AND n.text_locale='de';
   
Damit hast Du dann die Information ob Landkreis oder kreisfreie Stadt.

Gruß
Stephan
--
Stephan Schuster <stephan.s@...>

--
Mailingliste OpenGeoDB
Listenadresse: opengeodb@...
Informationen: http://opengeodb.de
Mit freundlicher Unterstütztung von php::bar (http://phpbar.de)

Re: Alle Städte und/oder Landkreise in einem Bundesland?

by Jan-Simon Winkelmann-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


> Mir ist allerdings nicht ganz klar, warum Du zweimal den Namen abfragen
> solltest? Ich konnte das auch nicht aus den Aliasen schliessen. Falls tp
> beispielsweise für "typ" stehen sollte, müsstest Du als Bedingung für tp
> statt der 500100000 die 400300000 verwenden:
>
>  
Ja genau da lag das Problem. Vielen Dank :) Dauert leider etwas bis man
sich in die Struktur wirklich rein denkt.

gruß
Jan
--
Mailingliste OpenGeoDB
Listenadresse: opengeodb@...
Informationen: http://opengeodb.de
Mit freundlicher Unterstütztung von php::bar (http://phpbar.de)