QC Postleitzahlen in Deutschland an admin Relationen

Hallo zusammen,

nachdem die Geofabrik gestern ihren OSM PLZ Inspektor vergestellt hat, ist mir aufgefallen, dass es in Deutschland noch ein paar Gebiete gibt, in denen die PLZ zusätzlich an admin Relationen getaggt ist. Daher würde ich gerne einen kleinen Aufruf starten, das gemeinsam zu korrigieren.

Da das Geofabrik Tool keine Live-Daten hat, hier eine einfache Vorlage für Overpass (ggf. Punkte durch den gewünschten PLZ (Teil-)Bereich ersetzen):

[out:json][timeout:50];
relation["postal_code"~"^.....$"]["boundary"!="postal_code"]({{bbox}});
out geom;

Ich hab mal den Anfang gemacht und das in Südhessen für die 64xxx und 68xxx Bereiche gamacht.

VG

Mit der abfrage seh ich doch allerhand false-positives (die vermutlich auch wert sind angesehen zu werden).

Kann es sein, dass du hier auf boundary-relationen beschränken willst?

 [out:json][timeout:50];
~
 relation["postal_code"~"^.....$"]["boundary"!="postal_code"]
+["boundary"]
 ({{bbox}});
~
 out geom;
~

(--word-diff-regex="." plus --word-diff=porcelain wegen The syntax highlighter doesn't support `--word-diff`s - Support - Discourse Meta)

Die Daten des OSM Inspectors werden zweimal täglich aktualisiert.

Wer eine Live-Analyse möchte (wenige Minuten Replikationsversatz), kann mit Postpass dasselbe in einem kleinen Gebiet tun, was der OSM-Inspector selber auch berechnet. Die folgende Abfrage kann man direkt im Overpass-Turbo einfügen. Die Ausführung erfolgt auf postpass.geofabrik.de.

Die Anfrage sucht nach Relationen im aktuellen Kartenausschnitt, die mit boundary=* und postal_code=* getaggt sind und sich mit anderen Relationen dieser Art überschneiden, sich aber nicht nur berühren.

{{data:sql,server=https://postpass.geofabrik.de/api/0.2/}}
SELECT
    a.osm_id AS id1,
    b.osm_id AS id2,
    a.tags->>'boundary' AS boundary1,
    b.tags->>'boundary' AS boundary2,
    a.tags->>'postal_code' AS postal_code1,
    b.tags->>'postal_code' AS postal_code2,
    ST_Intersection(a.geom, b.geom) AS geom
FROM postpass_polygon AS a
JOIN postpass_polygon AS b
  ON
    a.geom && {{bbox}}
    AND a.geom && b.geom
    -- jedes Paar nur einmal ausgeben
    AND a.osm_id < b.osm_id
    -- nur Relationen
    AND a.osm_type = 'R' AND b.osm_type = 'R'
    -- ST_Intersects ist schneller als ST_Relate
    AND ST_Intersects(a.geom, b.geom)
    AND ST_Relate(a.geom, b.geom, 'T********')
    AND a.tags ?& ARRAY['boundary', 'postal_code']
    AND b.tags ?& ARRAY['boundary', 'postal_code']

EDIT: SQL angepasst

1 Like

Ja, dass da auch false-positive dabei sind, war so semi gewollt. @Nakaner hat ja eine entsprechend detailierte Abfrage eingefügt, die das genauer auswertet.