logo       
Google Custom Search
    AddThis Social Bookmark Button
-->

Re: Verwaltungshierarchie mit Inkonsistenzen?: msg#00028

Subject: Re: Verwaltungshierarchie mit Inkonsistenzen?
Ich danke für die Hinweise. Erstmal muss ich mich genauer damit beschäftigen, 
wie mit den Postleitzahlen umgegangen wird (loc_type 100800000, text_type 
50010000 und 500300000).

Wenn ich meine bisherigen Erkenntnisse und die Hinweise zusammenfasse, ist eine 
Gemeinde wie folgt definiert (habe zunächst nur mit den Daten aus Deutschland 
experimentiert):

1. Das Objekt ist auf Level 6.
2. Es handelt sich um den loc_type 10070000.
3. Es gibt einen Eintrag in geo_textdata mit text_type = 500600000 (AGS).

Stimmt das?

Es gibt auf Level 6 noch Postleitzahlbereiche (loc_type 100800000). Was aber 
sind die Objekte auf Level 6, die eine Ortschaft darstellen, aber keinen 
Eintrag in geo_textdata mit text_type = 500600000 (AGS) haben, z. B. mit loc_id 
13349?

Die komplette Liste liefert das folgende Statement:

SELECT * FROM geodb_locations AS lc
INNER JOIN geodb_hierarchies AS h ON h.loc_id = lc.loc_id
        AND lc.loc_type = 100700000 -- Ortschaft
        AND h.level = 6
        AND h.id_lvl2 = 105 -- nur Deutschland
        -- AND h.valid_until >= current_date -- kann wohl durch die folgende 
Zeile ersetzt werden?
        AND h.date_type_until = 300500000 -- letzter gültiger Eintrag
INNER JOIN geodb_textdata AS td1 ON td1.loc_id = lc.loc_id
        AND td1.text_type = 500100000 -- Name
        AND td1.date_type_until = 300500000
LEFT JOIN geodb_textdata AS td2 ON td2.loc_id = lc.loc_id
        AND td2.text_type = 500600000 -- AGS
        AND td2.date_type_until = 300500000
WHERE td2.text_val IS NULL -- AGS fehlt
ORDER BY lc.loc_type, lc.loc_id, td1.text_val;

> >SELECT level, count(*) AS anzahl FROM geodb_hierarchies
> >WHERE (level = 5 AND loc_id <> id_lvl5)
> >OR    (level = 6 AND loc_id <> id_lvl6)
> >OR    (level = 7 AND loc_id <> id_lvl7)
> >OR    (level = 8 AND loc_id <> id_lvl8)
> >GROUP BY level
> >ORDER BY level;
> >
> >level;anzahl
> >5;2
> >6;22184
> >7;2178
> >8;258

> Wenn Du noch mit geodb_locations.loc_type verlinkt haettest, haettest
> Du (hoffentlich) gesehen, dass dies NUR den loc_type LOC_AREA_CODE
> betrifft.

OK, verstanden:

SELECT lc.loc_type, h.level, count(*) AS anzahl FROM geodb_locations AS lc
INNER JOIN geodb_hierarchies AS h ON h.loc_id = lc.loc_id
WHERE (h.level = 5 AND h.loc_id <> h.id_lvl5)
OR (h.level = 6 AND h.loc_id <> h.id_lvl6)
OR (h.level = 7 AND h.loc_id <> h.id_lvl7)
OR (h.level = 8 AND h.loc_id <> h.id_lvl8)
GROUP BY lc.loc_type, h.level
ORDER BY lc.loc_type, h.level;

loc_type;level;anzahl
100500000;5;2
100800000;6;22184
100800000;7;2178
100800000;8;258

Gut, NUR zwei Abweichungen, beide auf Level 5.

Das Diagramm mit dem Datenbankschema habe ich mir als erstes angesehen. Eine 
nähere Beschreibung der Eigenschaften der gespeicherten Objekte, die sich nicht 
aus dem Datenbankschema ableiten lassen, habe ich nicht gefunden.

Mit freundlichen Grüßen

Ingmar Lötzsch

ASCI Systemhaus GmbH
-- 
Mailingliste OpenGeoDB
Listenadresse: opengeodb-r1mDYR0DdAyzQB+pC5nmwQ@xxxxxxxxxxxxxxxx
Informationen: http://opengeodb.de
Mit freundlicher Unterstütztung von php::bar (http://phpbar.de)



<Prev in Thread] Current Thread [Next in Thread>