x

Overpass Abfrage: Multipolygone mit anderen Rollen als inner / router


  1. Overpass Abfrage: Multipolygone mit anderen Rollen als inner / router · Klumbumbus (Gast) · 07.05.2017 17:31 · [flux]

    Ich möchte innerhalb einer bbox alle Multipolygon-Relation finden, die Member haben, deren Rollen entweder leer, oder etwas anderes als inner oder outer sind.
    Hat dazu schonmal jemand eine Overpass-turbo-Abfrage erstellt? Ich habs selbst versucht, bin aber gescheitert 🤔


    • Re: Overpass Abfrage: Multipolygone mit anderen Rollen als inner / router · mmd (Gast) · 07.05.2017 18:07 · [flux]

      Relationen mit Member, die alle die Rolle "leer" haben, würde so funktionieren:

      rel({{bbox}})->.relations;
      
      foreach␣.relations␣->␣.relation␣(
      
      (
      node(r.relation);
      way(r.relation);
      rel(r.relation);
      )->.elem_all;
      
      (
      node(r.relation:"");
      way(r.relation:"");
      rel(r.relation:"");
      )->.elem_blank;
      
      rel.relation(␣if:elem_all.count(nodes)␣␣␣␣␣==␣elem_blank.count(nodes)␣&&
      elem_all.count(ways)␣␣␣␣␣␣==␣elem_blank.count(ways)␣␣&&
      elem_all.count(relations)␣==␣elem_blank.count(relations));
      
      out;
      );
      

      Ansonsten ist mir die Bedingung mit dem inner/outer so wie sie formuliert ist nicht ganz klar, aber vom Prinzip her läuft das analog.


    • Re: Overpass Abfrage: Multipolygone mit anderen Rollen als inner / router · Klumbumbus (Gast) · 07.05.2017 18:23 · [flux]

      mmd wrote:

      Relationen mit Member, die alle die Rolle "leer" haben, würde so funktionieren:

      ...
      

      Für leere Rollen konnte ich dies hier nutzen:

      [out:xml][timeout:95];
      relation["type"="multipolygon"]({{bbox}})␣->␣.mps;
      way(r.mps:"");
      rel(bw:"");
      (._;>;);
      out␣meta␣qt;
      

      mmd wrote:

      Ansonsten ist mir die Bedingung mit dem inner/outer so wie sie formuliert ist nicht ganz klar, aber vom Prinzip her läuft das analog.

      Gültige Rollen in Multipolygonen sind nur "inner" und "outer". Ich möchte also alles andere finden, d.h. leere Rollen oder anderes wie bspw. "oputer" (Tippfehler).


    • Re: Overpass Abfrage: Multipolygone mit anderen Rollen als inner / router · mmd (Gast) · 07.05.2017 18:28 · [flux]

      Klumbumbus wrote:

      Gültige Rollen in Multipolygonen sind nur "inner" und "outer". Ich möchte also alles andere finden, d.h. leere Rollen oder anderes wie bspw. "oputer" (Tippfehler).

      Ah, ok, das war wichtig. Lösung kommt gleich.

      rel({{bbox}})[type=multipolygon]->.relations;
      
      foreach␣.relations␣->␣.relation␣(
      
      (
      node(r.relation);
      way(r.relation);
      rel(r.relation);
      )->.elem_all;
      
      (
      node(r.relation:"inner");
      way(r.relation:"inner");
      rel(r.relation:"inner");
      )->.elem_inner;
      
      (
      node(r.relation:"outer");
      way(r.relation:"outer");
      rel(r.relation:"outer");
      )->.elem_outer;
      
      rel.relation(␣if:elem_all.count(nodes)␣␣␣␣␣>␣elem_inner.count(nodes)␣+
      elem_outer.count(nodes)␣||
      elem_all.count(ways)␣␣␣␣␣␣>␣elem_inner.count(ways)␣␣+
      elem_outer.count(ways)␣␣||
      elem_all.count(relations)␣>␣elem_inner.count(relations)␣+
      elem_outer.count(relations));
      
      out;
      );
      

    • Re: Overpass Abfrage: Multipolygone mit anderen Rollen als inner / router · Klumbumbus (Gast) · 07.05.2017 19:00 · [flux]

      Die query findet bei mir leider nichts. 🙁
      Bsp. zum testen:
      - http://www.openstreetmap.org/relation/5405247 (version 2) - alle Mitglieder ohne Rolle
      - http://www.openstreetmap.org/relation/4661637 (version 2) - ein Mitglied ohne Rolle
      - konkretes Bsp. für andere Rollen habe ich noch keins gefunden, aber es gibt einige: https://taginfo.openstreetmap.org/relat … ygon#roles


    • Re: Overpass Abfrage: Multipolygone mit anderen Rollen als inner / router · mmd (Gast) · 07.05.2017 19:05 · [flux]

      Speziell für Relation 5405247 sieht das hier so aus:


      Wichtig: in overpass turbo auf den "Daten" Tabreiter wechseln!!

      .. oder aus dem "out;" ein " out center;" machen...


    • Re: Overpass Abfrage: Multipolygone mit anderen Rollen als inner / router · Klumbumbus (Gast) · 07.05.2017 19:10 · [flux]

      Ah, jetzt funktionierts. Ich hatte übersehen, dass da ein Scollbalken in post #4 ist und nur die halbe query kopiert... 😄

      Danke.