PLZ von Gemeinden - Datenbankabfrage?

Ich würde auf keinen Fall davon ausgehen, dass die Wikipedia-Angaben richtig/vollständig sind. Auch eine Abfrage bei der DPAG liefert nicht alle PLZ einer Gemeinde.

kommen wir mal von der Theorie zur Praxis:


select -plz.osm_id, plz.note,-boundary.osm_id,boundary.name 
  from planet_osm_polygon plz,
       planet_osm_polygon boundary
 where boundary.boundary='administrative'
   and plz.boundary = 'postal_code'
   and length(boundary.tags->'de:amtlicher_gemeindeschluessel') >5
   and st_intersects (boundary.way,  plz.way)
 order by boundary.name, plz.note;

ergibt http://osm.wno-edv-service.de:82/images/osm/postcodes/plz_pro_gemeinde.txt

Gruss
walter

ps: um die Umlaute und andere Feinheiten kümmere ich mich später mal.

Gut, dann fangen wir mal bei den eigentlichen Daten an: :sunglasses:


    3346971 | 66265 Heusweiler                                                                     | 1187149 | Eppelborn
    1184805 | 66557 Illingen                                                                       | 1187149 | Eppelborn
    1184803 | 66571 Eppelborn                                                                      | 1187149 | Eppelborn
    3348207 | 66636 Tholey                                                                         | 1187149 | Eppelborn
    3348209 | 66646 Marpingen                                                                      | 1187149 | Eppelborn
    3348204 | 66822 Lebach                                                                         | 1187149 | Eppelborn

Dat kann so nicht stimmen… da dürften maximal 66571 und 66822 rauskommen (siehe vorheriger Post).

Hast du ein Beispiel hierzu?

Jo, ist logisch. Wieder mal das blöde st_intersects, was den Rand mit nimmt. Nun denn, dann buffern wir halt.
Die 2-3, die ich überprüft hatte, waren natürlich sauber :frowning:

Gruss
walter

23701 Süsel. Es gibt in Süsel auch Adressen in PLZ 23684. Das ist aber nur eins von zig oder hunderten Beispielen.

ST_Relate

ach du grüne neune, da muß ich mich mal reinknien.

Danke für den Tip
walter

uii, wenn ich eine Testauswertung mit Eppelborn und Umgebung füttere, kommt tatsächlich das Richtige raus:


select -b.osm_id border,b.name,-p.osm_id pcborder,p.note 
  from planet_osm_polygon b,
       planet_osm_polygon p
 where b.osm_id in (-1187149)
   and p.osm_id in (-3346971,-1184805,-1184803,-3348207,-3348209,-3348204)
   and b.way && p.way
   and ST_Relate(b.way,p.way,'T********')
 order by b.name,b.osm_id desc, p.note
;

 border  |   name    | pcborder |      note       
---------+-----------+----------+-----------------
 1187149 | Eppelborn |  1184803 | 66571 Eppelborn
 1187149 | Eppelborn |  3348204 | 66822 Lebach
(2 rows)

Woran machst du fest, dass sie dort wirklich (noch) gültig ist?

An den Straßennamen dort, die für Pönitz gelistet sind.

so, 2. und hoffentlich erfolgreicher Versuch:


select -b.osm_id,b.name,p.note 
  from planet_osm_polygon b,
       planet_osm_polygon p
 where b.boundary='administrative'
   and p.boundary = 'postal_code'
   and length(b.tags->'de:amtlicher_gemeindeschluessel') >5
   and b.way && p.way
   and ST_Relate(b.way,p.way,'T********')
 order by b.name,b.osm_id desc, p.note;

http://osm.wno-edv-service.de:82/images/osm/postcodes/plz_pro_gemeinde_mit_st_relate.txt

Gruss
walter

Jau! Würde noch die ungefähre Fläche mit einbauen, damit man mini-fatzen besser sehen kann:
ceil(st_area(st_intersection(b.way,p.way))) as area

Ok die Daten sehen gar nicht so schlecht aus, wenn man die rechte Spalte als Gemeindename heranzieht. Diesmal habe ich aber k.A. wie sie zustande kommen… Kannst du noch die Gemeindeschlüssel dazu ausgeben?

Wieso tun alle hier immer so geheimnisvoll? Sag’ doch einfach mal welche…

fatzen? http://www.enzyklo.de/Begriff/Fatzen

oder meintest du Fetzen?

Ja genau, das war moselfränkisch. LOL.

ok, mach ich halt Fatzen - und die AGS kommen auch. Dauert nur, da die Abfrage nicht gerade flott geht.

Super, danke!

feddich: http://osm.wno-edv-service.de:82/images/osm/postcodes/plz_pro_gemeinde_mit_ags_und_area.txt

Musste den Job nochmals laufen lassen, da die Formel von couchmapper nicht ganz passte.


select -b.osm_id osm_id,b.name,
       b.tags->'de:amtlicher_gemeindeschluessel' ags, 
       p.note,
       st_area(geography(st_intersection(b.way,p.way))) / 1000000 area
  from planet_osm_polygon b,
       planet_osm_polygon p
 where b.boundary='administrative'
   and p.boundary = 'postal_code'
   and length(b.tags->'de:amtlicher_gemeindeschluessel') >5
   and b.way && p.way
   and ST_Relate(b.way,p.way,'T********')
 order by b.name,b.osm_id desc, p.note;

Area ist in Km²

Gruss
walter

Ich habe das nicht alles im Kopf, sondern muss es erst nachschlagen. Außerdem habe ich anderes zu tun.

Messenkamp ist eine Straße, die in Süsel liegt und bei Pönitz gelistet ist. Die Siedlung heißt Broderdammskamp.
Ist aber auch ohne Geheimwissen herauszufinden, wenn man sich in OSM die PLZ-Relation 23684 anschaut.