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
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)
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;
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?
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;
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.
Ich muss nochmal Salz in die Wunde streuen. Auch OSM vermag nicht, die absolut richtige Antwort zu liefern. Das liegt natürlich einerseits an Spezialfällen, die nicht richtig in den postal boundaries abgebildet sind. Andererseits gibt es Probleme mit unbewohnten Gemeindeexklaven, die aber nicht als PLZ-Exklaven gemappt sind, was eigentlich auch keinen Sinn macht, weil es dort ja keine Adressen gibt.
Zweite schlechte Nachricht: Ob es in einer Gemeindeexklave wirklich keine Adressen gibt, kann OSM auch (noch) nicht sicher sagen.
Super, danke für eure Hilfe! Ich habe nun nicht nur die gesuchten Daten (so gut sie OSM liefern kann) bekommen sondern mich nebenbei auch in die Datenbankabfrage eingearbeitet