You are not logged in.

Announcement

*** NOTICE: forum.openstreetmap.org is being retired. Please request a category for your community in the new ones as soon as possible using this process, which will allow you to propose your community moderators.
Please create new topics on the new site at community.openstreetmap.org. We expect the migration of data will take a few weeks, you can follow its progress here.***

#1 2017-05-07 17:31:21

Klumbumbus
Member
From: Erzgebirgskreis
Registered: 2014-01-12
Posts: 630
Website

Overpass Abfrage: Multipolygone mit anderen Rollen als inner / router

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 hmm

Offline

#2 2017-05-07 18:07:11

mmd
Member
Registered: 2010-11-06
Posts: 2,150

Re: Overpass Abfrage: Multipolygone mit anderen Rollen als inner / router

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.

Last edited by mmd (2017-05-07 18:12:03)

Offline

#3 2017-05-07 18:23:27

Klumbumbus
Member
From: Erzgebirgskreis
Registered: 2014-01-12
Posts: 630
Website

Re: Overpass Abfrage: Multipolygone mit anderen Rollen als inner / router

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).

Offline

#4 2017-05-07 18:28:12

mmd
Member
Registered: 2010-11-06
Posts: 2,150

Re: Overpass Abfrage: Multipolygone mit anderen Rollen als inner / router

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;
);

Last edited by mmd (2017-05-07 18:35:07)

Offline

#5 2017-05-07 19:00:45

Klumbumbus
Member
From: Erzgebirgskreis
Registered: 2014-01-12
Posts: 630
Website

Re: Overpass Abfrage: Multipolygone mit anderen Rollen als inner / router

Die query findet bei mir leider nichts. sad
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

Offline

#6 2017-05-07 19:05:41

mmd
Member
Registered: 2010-11-06
Posts: 2,150

Re: Overpass Abfrage: Multipolygone mit anderen Rollen als inner / router

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

29133650gj.jpg

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

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

Last edited by mmd (2017-05-07 19:07:26)

Offline

#7 2017-05-07 19:10:36

Klumbumbus
Member
From: Erzgebirgskreis
Registered: 2014-01-12
Posts: 630
Website

Re: Overpass Abfrage: Multipolygone mit anderen Rollen als inner / router

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

Danke.

Last edited by Klumbumbus (2017-05-07 19:10:49)

Offline

Board footer

Powered by FluxBB