Multipolygone - Nein! Doch! Ohhh!

Hey ho,

ab-und-zu kommt so etwas bei mir vor (Achtung, hier zur Verdeutlichung konstruiert!): http://openstreetmap.tobwen.de/JOSM/original.osm

Ich hab’ es in der GIS-Welt so gelernt (alle Objekte einzeln) [1]: http://openstreetmap.tobwen.de/JOSM/gis.osm

In der OSM-Welt macht man es vermutlich so (tote Führungslinien) [2]: http://openstreetmap.tobwen.de/JOSM/multi_01.osm

Eine Variation von [2], die so nicht gewollt ist (böse Kombination) [3]: http://openstreetmap.tobwen.de/JOSM/multi_02.osm

Stellt man das Ganze gegenüber:
[1]: 10 Nodes, 3 Ways, 0 Relationen
[2]: 10 Nodes, 4 Ways, 3 Relationen
[3]: 10 Nodes, 5 Ways, 2 Relationen

Multipolygone sind also hierbei der klare Verlierer. Gibt’s noch eine Lösung, die ich übersehen habe?

Die Ausrede, dass es in JOSM leichter zu selektieren ist, gilt übrigens bei [1] nicht. JOSM bietet seit Langem die Möglichkeit, über die mittlere Maustaste zwischen überlappenden Wegen zu unterscheiden. Im Vergleich zu Multipolygonen ist dies jedoch äußerst benutzerunfreundlich gestaltet worden. Die Multipolygone haben ein eigenes Seitenfenster bekommen, die überlappenden Wege müssen mit einer wackeligen und flackernden Floating-Box auskommen… Jeder GIS-Anwendung, die ich kenne, löst das Problem recht simpel: Man klickt nicht - wie bei JOSM - den Rand eines Polygons an, sondern dessen Fläche. Sollte aus irgendeinem Grund eine überlappende Fläche auftauchen, könnte man das immer noch schön in einem Seitenfenster oder durch eine Box anzeigen (ArcGIS 10 hat dies schön durch ein dezent auftauchendes, kleines Icon gelöst).

Multipolgyone haben eindeutig ihre Vorteile, aber in diesem Fall sehe ich nicht unbedingt einen Sinn darin. Das Feature in JOSM ist vorhanden, aber schlecht realisiert … ich kann’s als Bug melden, aber wenn ich nicht gleich einen Patch mitliefere, wird’s eh schnell vergessen.

Just my two cents…
Tobias

moin moin tobias,

die links funzen nicht. 404 file not found.

gruss
walter

Mein Gott Walter,

interessant, hier funktioniert alles. Mein Admin meinte gestern, er sei auf einen anderen Server umgestiegen. Vielleicht gibt’s Probleme mit dem DNS?

Ich poste mal hier kurz…

original:

<?xml version='1.0' encoding='UTF-8'?>
<osm version='0.6' generator='JOSM'>
  <node id='-3377' visible='true' lat='0.48957587224387683' lon='-1.5630685943679674' />
  <node id='-3376' visible='true' lat='1.648181189426954' lon='-0.08983152841195206' />
  <node id='-3375' visible='true' lat='-0.6692296691499111' lon='-1.5630685943679674' />
  <node id='-3374' visible='true' lat='-0.6692296691499111' lon='1.3834055375440633' />
  <node id='-3373' visible='true' lat='1.6481811894269545' lon='1.383405537544063' />
  <node id='-3372' visible='true' lat='1.6481811894269545' lon='-1.5630685943679674' />
  <node id='-3364' visible='true' lat='0.48957587224388915' lon='-3.0363056603239826' />
  <node id='-3363' visible='true' lat='0.48957587224388915' lon='-0.089831528411952' />
  <node id='-3362' visible='true' lat='2.806112780880547' lon='-0.08983152841195216' />
  <node id='-3361' visible='true' lat='2.806112780880547' lon='-3.0363056603239826' />
  <way id='-3371' visible='true'>
    <nd ref='-3372' />
    <nd ref='-3376' />
    <nd ref='-3373' />
    <nd ref='-3374' />
    <nd ref='-3375' />
    <nd ref='-3377' />
    <nd ref='-3372' />
    <tag k='building' v='yes' />
  </way>
  <way id='-3365' visible='true'>
    <nd ref='-3361' />
    <nd ref='-3362' />
    <nd ref='-3376' />
    <nd ref='-3363' />
    <nd ref='-3377' />
    <nd ref='-3364' />
    <nd ref='-3361' />
    <tag k='building' v='yes' />
  </way>
</osm>

[1]:

<?xml version='1.0' encoding='UTF-8'?>
<osm version='0.6' generator='JOSM'>
  <node id='-3490' visible='true' lat='2.806112780880547' lon='-3.0363056603239826' />
  <node id='-3488' visible='true' lat='2.806112780880547' lon='-0.08983152841195216' />
  <node id='-3486' visible='true' lat='0.48957587224388915' lon='-0.089831528411952' />
  <node id='-3484' visible='true' lat='0.48957587224388915' lon='-3.0363056603239826' />
  <node id='-3482' visible='true' lat='1.6481811894269545' lon='-1.5630685943679674' />
  <node id='-3480' visible='true' lat='1.6481811894269545' lon='1.383405537544063' />
  <node id='-3478' visible='true' lat='-0.6692296691499111' lon='1.3834055375440633' />
  <node id='-3476' visible='true' lat='-0.6692296691499111' lon='-1.5630685943679674' />
  <node id='-3474' visible='true' lat='1.648181189426954' lon='-0.08983152841195206' />
  <node id='-3472' visible='true' lat='0.48957587224387683' lon='-1.5630685943679674' />
  <way id='-3497' visible='true'>
    <nd ref='-3472' />
    <nd ref='-3482' />
    <nd ref='-3474' />
    <nd ref='-3486' />
    <nd ref='-3472' />
    <tag k='building' v='yes' />
  </way>
  <way id='-3495' visible='true'>
    <nd ref='-3474' />
    <nd ref='-3480' />
    <nd ref='-3478' />
    <nd ref='-3476' />
    <nd ref='-3472' />
    <nd ref='-3486' />
    <nd ref='-3474' />
    <tag k='building' v='yes' />
  </way>
  <way id='-3494' visible='true'>
    <nd ref='-3472' />
    <nd ref='-3482' />
    <nd ref='-3474' />
    <nd ref='-3488' />
    <nd ref='-3490' />
    <nd ref='-3484' />
    <nd ref='-3472' />
    <tag k='building' v='yes' />
  </way>
</osm>

[2]:

<?xml version='1.0' encoding='UTF-8'?>
<osm version='0.6' generator='JOSM'>
  <node id='-3625' visible='true' lat='2.806112780880547' lon='-3.0363056603239826' />
  <node id='-3623' visible='true' lat='2.806112780880547' lon='-0.08983152841195216' />
  <node id='-3621' visible='true' lat='0.48957587224388915' lon='-0.089831528411952' />
  <node id='-3619' visible='true' lat='0.48957587224388915' lon='-3.0363056603239826' />
  <node id='-3617' visible='true' lat='1.6481811894269545' lon='-1.5630685943679674' />
  <node id='-3615' visible='true' lat='1.6481811894269545' lon='1.383405537544063' />
  <node id='-3613' visible='true' lat='-0.6692296691499111' lon='1.3834055375440633' />
  <node id='-3611' visible='true' lat='-0.6692296691499111' lon='-1.5630685943679674' />
  <node id='-3609' visible='true' lat='1.648181189426954' lon='-0.08983152841195206' />
  <node id='-3607' visible='true' lat='0.48957587224387683' lon='-1.5630685943679674' />
  <way id='-3633' visible='true'>
    <nd ref='-3607' />
    <nd ref='-3619' />
    <nd ref='-3625' />
    <nd ref='-3623' />
    <nd ref='-3609' />
  </way>
  <way id='-3631' visible='true'>
    <nd ref='-3607' />
    <nd ref='-3617' />
    <nd ref='-3609' />
  </way>
  <way id='-3629' visible='true'>
    <nd ref='-3609' />
    <nd ref='-3615' />
    <nd ref='-3613' />
    <nd ref='-3611' />
    <nd ref='-3607' />
  </way>
  <way id='-3627' visible='true'>
    <nd ref='-3609' />
    <nd ref='-3621' />
    <nd ref='-3607' />
  </way>
  <relation id='-3639' visible='true'>
    <member type='way' ref='-3629' role='outer' />
    <member type='way' ref='-3627' role='outer' />
    <tag k='building' v='yes' />
    <tag k='type' v='multipolygon' />
  </relation>
  <relation id='-3637' visible='true'>
    <member type='way' ref='-3633' role='outer' />
    <member type='way' ref='-3631' role='outer' />
    <tag k='building' v='yes' />
    <tag k='type' v='multipolygon' />
  </relation>
  <relation id='-3635' visible='true'>
    <member type='way' ref='-3627' role='outer' />
    <member type='way' ref='-3631' role='outer' />
    <tag k='building' v='yes' />
    <tag k='type' v='multipolygon' />
  </relation>
</osm>

[3]:

<?xml version='1.0' encoding='UTF-8'?>
<osm version='0.6' generator='JOSM'>
  <node id='-3587' visible='true' lat='0.48957587224387683' lon='-1.5630685943679674' />
  <node id='-3585' visible='true' lat='1.648181189426954' lon='-0.08983152841195206' />
  <node id='-3583' visible='true' lat='-0.6692296691499111' lon='-1.5630685943679674' />
  <node id='-3581' visible='true' lat='-0.6692296691499111' lon='1.3834055375440633' />
  <node id='-3579' visible='true' lat='1.6481811894269545' lon='1.383405537544063' />
  <node id='-3577' visible='true' lat='1.6481811894269545' lon='-1.5630685943679674' />
  <node id='-3575' visible='true' lat='0.48957587224388915' lon='-3.0363056603239826' />
  <node id='-3573' visible='true' lat='0.48957587224388915' lon='-0.089831528411952' />
  <node id='-3571' visible='true' lat='2.806112780880547' lon='-0.08983152841195216' />
  <node id='-3569' visible='true' lat='2.806112780880547' lon='-3.0363056603239826' />
  <way id='-3597' visible='true'>
    <nd ref='-3585' />
    <nd ref='-3573' />
    <nd ref='-3587' />
    <nd ref='-3577' />
    <nd ref='-3585' />
    <tag k='building' v='yes' />
  </way>
  <way id='-3595' visible='true'>
    <nd ref='-3587' />
    <nd ref='-3575' />
    <nd ref='-3569' />
    <nd ref='-3571' />
    <nd ref='-3585' />
  </way>
  <way id='-3593' visible='true'>
    <nd ref='-3585' />
    <nd ref='-3579' />
    <nd ref='-3581' />
    <nd ref='-3583' />
    <nd ref='-3587' />
  </way>
  <way id='-3591' visible='true'>
    <nd ref='-3587' />
    <nd ref='-3577' />
    <nd ref='-3585' />
  </way>
  <way id='-3589' visible='true'>
    <nd ref='-3587' />
    <nd ref='-3573' />
    <nd ref='-3585' />
  </way>
  <relation id='-3601' visible='true'>
    <member type='way' ref='-3591' role='outer' />
    <member type='way' ref='-3595' role='outer' />
    <tag k='building' v='yes' />
    <tag k='type' v='multipolygon' />
  </relation>
  <relation id='-3599' visible='true'>
    <member type='way' ref='-3589' role='outer' />
    <member type='way' ref='-3593' role='outer' />
    <tag k='building' v='yes' />
    <tag k='type' v='multipolygon' />
  </relation>
</osm>

Grüße
Tobias

Hi Tobias,

die Links gehen bei mir auch nicht:

$ wget http://openstreetmap.tobwen.de/JOSM/original.osm
–2011-05-25 07:52:14-- http://openstreetmap.tobwen.de/JOSM/original.osm
Auflösen des Hostnamen openstreetmap.tobwen.de… 88.80.215.50
Verbindungsaufbau zu openstreetmap.tobwen.de|88.80.215.50|:80… verbunden.
HTTP-Anforderung gesendet, warte auf Antwort… 404 Not Found
2011-05-25 07:52:15 FEHLER 404: Not Found.

$

Ciao,
Frank

wenn man bei den links noch “www” nach “http://” einfügt, funktionieren die links.

Was soll denn deine Ausgangssituation ausdrücken?

*3 eigenständige Flächen
*2 Flächen mit unterschiedlichen Eigenschaften, in der Mitte gilt beides oder
*2 Flächen mit gleichen Eigenschaften (wie du es auch getaggt hast)

Im Fall 3 gibt es entweder eine Grenzlinie zwischen den Objektes, oder aber es ist nur ein Objekt.

Klappt bei mir auch nicht, und ich habe mich schon so auf die neue MP-Diskussion gefreut. :frowning:
Da ich nicht sehe, kann ich leider nicht mitdiskutieren. Reparier doch mal einer die links, bitte…

Tobias hat doch den Inhalt der Links gepostet…musst also nur in eine Textdatei kopieren und in josm öffnen. Evtl noch die Endung auf osm, wenn er meckert. Und schon kannst du mitschnattern

Sitze gerade in der Vorlesung - es sollen drei einzelne Flächen bzw. Gebäude sein.

LG
Tobias

Genau hier klemmt es - von den Links mal abgesehen.

wie sehen die buildings denn in der “Realität” aus?

z.b. zwei ELs mit Loch? erscheint mir sinnvoll
oder ein flaches und ein hohes building mit einem gemeinsamen überlappenden Teil? 3D?
oder irgendwas von Escher???

erst dann kann ich diesen Murk Test verstehen.

Warten wir mal ab bis die Vorlesung+Mensa vorbei ist :wink:

Gruss
Walter

So, Mensa war lecker - viel Salat… ob das gut war?

Meistens ist die mittlere Fläche eine Grünfläche mit Bänken oder so. Aber es geht doch gar nicht um dieses Beispiel, das kann man in hunderten Varianten machen, die in der Realität existieren. Ich finde es schockiert, dass niemand abstrakt diskutieren kann und will :frowning: Kurz gefasst: Es sollen zwei unterschiedliche Nutzungen auf drei Flächen darstellen, die einander angrenzen: 2x Wohnen, 1x Erholung. In diesem (und anderen realitätsnahen und fernen) Beispielen wäre ein Multipolygon in meinem Augen total überflüssig.

Du meinst also es wäre besser wenn zwei landuseflächen, welche aneinanderstoßen als zwei Wege gespeichert werden, statt als 2 Multipolygone mit 3 Wegen, wobei die gemeinsame Kante Bestandteil beider Polygone ist.
In diesem einfachen Beispiel hast du sicher recht, wobei schon zwei überlagernde Wege entstehen. Was passiert aber, wenn der Weg zwischen den beiden Flächen schon vorhanden ist? Beispielsweise als Straße. Dann hat man im Bereich der Straße drei Wege übereinander, obwohl einzig und allein die Straße reichen würde.

Leider kann ich auf dem gerade verfügbaren Rechner JOSM nicht starten :frowning:
Aber heute abend nehme ich mir dann 'ne Chipstüte dazu :slight_smile:

Ja, da stimmt ich dir zu - das ist wieder etwas anderes. Nur ich sehe dauern irgendwelche Leute, die Multipolygon an Multipolygon setzen und hundert Mal verschachteln. Wenn man - aus GIS-Sicht - korrekt arbeiten würde, müsste man jedes Haus auf einer Landuse-Fläche als Multipolygon setzen. Aber das kann man je nach Auswertung später noch etwas verschneiden.

Ich werde jedenfalls keinen Datenmüll produzieren, nur weil in JOSM die Funktionen der mittlere Maustaste schlecht programmiert ist :slight_smile:

Wenn man das jetzt ganz streng nimmt, dann könnte man eine Buslinie ja auch als Weg einzeichnen. Dann beschwert sich später auch keiner darüber, dass irgendwelche Kreisverkehre getrennt werden, oder?

Wenn eine Linie schon da ist, nehme ich sie gerne in eine Relation auf. Nur ich habe keine Lust, irgendwas komisch zu konstruieren, was eigentlich eindeutig ist.

Für 2 angrenzende Flächen nutze ich auch die gleichen Nodes und keine MPs. Werden die beiden Flächen von einem weiteren Objekt getrennt, dann haben die beiden äußeren Flächen auch keine gemeinsamen Nodes.

Auch beim abstrakten Diskutieren muss man ja wissen, was der andere meint. Wenn man 2 Nutzungen auf 3 sich nicht schneidenden Flächen unterbringen möchte braucht man kein MP. Wenn sich die Flächen aber schneiden oder sich gegenseitig beinhalten, dann ist ein MP in den meisten Fällen deutlich einfacher als das gleiche mit normalen Polygonen zusammen zubasteln.

JOSM fehlt eine “Intersect” funktioniert, welche die sich überschneidende Fläche automatisch ausschneidet. Mit “Follow” haben wir jetzt eine extrem wichtige Funktion bekommen, die sehr sehr nützlich ist. Merge haben wir auch, Cut auch - Intersect fehlt :slight_smile:

Was ist “Follow”? Habe ich das auch bekommen?

Ja, ist im neuen JOSM mit drin - Taste “F”. Das ist die gleiche Funktion, die auch Potlatch2 besitzt: Sie verfolgt Wege auf Wunsch (automatisch). Bei ArcGIS ist das “Trace” und es ist ultra nützlich.