x

Overpass: Postleitzahlengebiete einer Stadt


  1. Overpass: Postleitzahlengebiete einer Stadt · wuschba (Gast) · 21.02.2013 15:11 · [flux]

    Hallo,

    ich würde gerne die Postleitzahlengebiete einer Stadt erfragen. Eine Abfrage nach "Ingolstadt" in Bayern bringt mir z.B.:
    <tag k="postal_code" v="85049,85051,85053,85055,85057"/>
    und eine area-id von 3600062381.

    Frage ich damit nun die boundarys mit postal_code ab:

    node(area:3600062381);
    <;
    relation._["boundary"="postal_code"];
    out;
    

    erhalte ich neben diesen Postleitzahlen auch noch alle umliegenden Postleitzahlen. Wie bekomme ich aber nur die Postleitzahlen, die auch im Node der Stadt stehen? Ich brauche von diesen die Relationen, um damit weiterarbeiten zu können. Ich könnte diese natürlich auch per Hand filtern, würde aber gerne wissen, wo das Problem liegt.

    In Österreich funktioniert die Abfrage nach den Postleitzahlen irgendwie gar nicht:

    node(area:3600105619);
    <;
    relation._["boundary"="postal_code"];
    out;
    

    Hier müssten die Postcodes 7132,7143,7161 sein, aber das Ergebnis ist leer.


    • Re: Overpass: Postleitzahlengebiete einer Stadt · wuschba (Gast) · 21.02.2013 15:29 · [flux]

      Okay, mit Österreich hab ich es hinbekommen:

      node(area:3600105619);
      <;
      relation._["boundary"="administrative"]["postal_code"];
      out;
      

      Aber auch hier das Problem, dass ich mehr PLZ bekomme, als die Stadt an sich hat...


    • Re: Overpass: Postleitzahlengebiete einer Stadt · tunnelbauer (Gast) · 21.02.2013 15:35 · [flux]

      In A kann eine Stadt mehrere PLZs haben... Das ist schon richtig...


    • Re: Overpass: Postleitzahlengebiete einer Stadt · wuschba (Gast) · 21.02.2013 15:40 · [flux]

      tunnelbauer wrote:

      In A kann eine Stadt mehrere PLZs haben... Das ist schon richtig...

      Ja, aber der node der Stadt hat:
      85049,85051,85053,85055,85057

      und wenn ich über das Area abfrage, kriege ich viel mehr:
      85077,85053,85101,85051,85092,85057,85098,85049,85114,85128,85080,85139,85055,85116,85123,86706,86673

      Ich würde gerne verstehen, warum 😉 Es sieht ja so aus, als ob die angrenzenden Gebiete auch mit als Ergebnis ausgeliefert werden, nur wie kann ich das abstellen?


    • Re: Overpass: Postleitzahlengebiete einer Stadt · tunnelbauer (Gast) · 21.02.2013 15:45 · [flux]

      Weil der Node der Stadt sich eventuell aus den inneren Bezirken zusammensetzt und die Area die äußeren Bezirke inkludiert....


    • Re: Overpass: Postleitzahlengebiete einer Stadt · stephan75 (Gast) · 21.02.2013 17:29 · [flux]

      wuschba:
      Kannst du uns mal konkrete Beispiele anhand des PLZ-Layers vom OSM-Inspector liefern? Nutze dort mal die Permalink-Funktion.

      In dem PLZ-Layer kann man genau die Lage und den Ortsnamen zu den einzelnen PLZ-Gebieten sehen.


    • Re: Overpass: Postleitzahlengebiete einer Stadt · Roland Olbricht (Gast) · 22.02.2013 08:07 · [flux]

      wuschba wrote:

      Ich würde gerne verstehen, warum 😉 Es sieht ja so aus, als ob die angrenzenden Gebiete auch mit als Ergebnis ausgeliefert werden, nur wie kann ich das abstellen?

      Ich habe die Semantik für "ist in Area" unglücklich gestaltet. Es gilt zur Zeit:
      - Nodes werden zurückgeliefert, wenn sie im Inneren oder auf dem Rand der Area liegen.
      - Ways werden zurückgeliefert, wenn sie einen Punkt im Inneren der Area besitzen oder ein Segment vollständig auf dem Rand liegt. Einzelne Punkte reichen nicht.
      - Relations werden zurückgeliefert, wenn mindestens eines ihrer Member zurückgeliefert werden würde.

      Das ist für Nodes und Ways auch die am Meisten gebraucht Semantik: für Ways schließt das genau die Wege ein, die in einer Straßenliste auch auftauchen sollten. Bei den Relations ist die Definition zwar einleuchtend, aber führt zu dem beobachteten Problem: grenzen zwei Postleitzahlenbezirke an der Stadtgrenze aneinander, werden beide aufgenommen, da ihre Grenzlinie ja sogar mit mehreren Segmenten auf dem Rand der Area liegt. Es sind also auch alle angrenzenden Postleitzahlenbezirke enthalten.

      Ich denke, dass ich schnellstmöglich eine Version der Overpass API herausbringe, in der die Relationenregel wie folgt geändert ist:
      - Relations werden zurückgeliefert, wenn mindestens eines ihrer Member im Inneren der Area liegt. Auch komplette Segmente von Member-Ways reichen nicht.
      Aber das kann ein paar Wochen dauern, bis diese Version fertig ist.

      Entschuldigung für die derzeit etwas unbefriedigende Situation und viele Grüße,

      Roland