x

Overpass: Area (relation) von node erhalten


  1. Overpass: Area (relation) von node erhalten · wuschba (Gast) · 15.02.2013 19:08 · [flux]

    Hallo,

    in Nominatim kann ich relativ einfach eine Relation von einer Stadt sehen, z.B.:
    http://nominatim.openstreetmap.org/deta … 3676853724
    => Relation 62381

    oder:
    http://nominatim.openstreetmap.org/deta … d=97345357
    => Relation 62428

    Wie würde so etwas in Overpass funktionieren?

    Hintergrund ist:

    Ich habe Notes (z.B. Ortschaften) mittels Overpass erfragt, z.B.:

    node
    ["place"~"village|city|town|metropolis"]
    ["name"~"^I"]
    (area:3602145268);
    out␣body;
    

    Nun möchte ich mir einige Nodes rauspicken und dort z.B. alle Postleitzahlgebiete oder alle Strassen einer Ortschaft mit Overpass erfragen. Nur dafür benötige ich die Id der Relation, die ich in der eben erhaltenen Nodeliste nicht bekomme, z.B.:

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

    Wie komme ich also von einem der Nodes zu der id der Relation, um sie in weiteren Abfragen nutzen zu können?


    • Re: Overpass: Area (relation) von node erhalten · stephan75 (Gast) · 17.02.2013 19:16 · [flux]

      Eine Lösung wäre vielleicht, gar nicht von einzelnen Nodes für Orte auszugehen, sondern gleich von vorne herein nur Relationen abzufragen welche Grenzen für Orte darstellen.

      Du brauchtest also eine Abfrage wie "suche mir alle Relationen mit boundary=administrative", und dann ja nach Bedarf "mit admin_level=6 bis 8" oder "de:amtlicher_gemeindeschluessel=[beliebige Zahl mit 8 Stellen]"


    • Re: Overpass: Area (relation) von node erhalten · wuschba (Gast) · 21.02.2013 10:57 · [flux]

      Vielen Dank für Deine Antwort.

      Ich wollte es gerade versuchen, da habe ich gesehen, dass Roland Olbricht eine coole Lösung auf help.openstreetmap.org veröffentlich hat, die im Prinzip das macht, aber gleichzeitig auch noch die nodes liefert. Ich erlaube mir mal, diese auch hier zu posten:

      [timeout:900];
      area[name="Bayern"];
      node(area)[place~"^(town|city)$"][name~"^A"];
      foreach(
      out;
      is_in;
      area._[admin_level~"6|8"]["de:place"!="county"];
      out;
      );