Internationale Admingrenzen 2017

Ich hab es mal versucht, habe das aber vorerst zurückgestellt.

Man kann die PostGIS-Funktion ST_ShiftLongitude() verwenden http://postgis.net/docs/manual-2.2/ST_ShiftLongitude.html, mit der die Koordinaten von -180/180 auf 0/360 transformiert werden. Dann sind das immer noch einige Outer, die man dann mit weiteren Tricks zusammenfassen kann.

Kurzfassung: Mit ST_ShiftLongitude() transformieren, dann einen Buffer von einigen Metern um die Outer legen (ST_Buffer()) und mit ST_Union() zusammenfassen.

Funzt derzeit noch nicht zufriedenstellend, daher hier leider kein Bild. Kommt wohl in der Boundaries Map 4.4 (nachdem die 4.3 hoffentlich bald rausgeht)

Gruss
walter

Das Problem ist, dass die Welt (grob) eine Kugel ist, sprich du kannst ohne Konvention nicht wissen wo eine Line zwischen (0, 179) und (0, -179) durchgeht “vorne” oder “hinten” rum (unsere ist vorne, sprich über 0 rum). Also hast du keine andere Wahl als die Linien an der Grenze aufzutrennen (mit 0, 360 für die Längengrade wäre es nicht anders) . Es gibt ein paar mögliche Lösungen, dazu müssten wir aber “vieles” ändern.

Jo, stimmt. Das war eine der Sackgassen, wo ich nicht mehr rauskam.

Gruss
walter

Da stimme ich nicht zu. Die Konvention gibt es bereits, ohne dass wir groß darüber nachdenken: nämlich die kürzeste Verbindung zu nehmen. Sonst gäbe es zwischen jedem Punktepaar auf der Kugel unendlich viele Verbindungen.

Wenn man konsequent modulo 360° rechnen würde, gäbe es zwischen (0,179) und (0,-179) nur die Differenzen von 2 und 358 Grad.

Nur der Halbkreis um die Erde, z.B. die Verbindung zwischen (0,0) und (0,180), bleibt zweideutig. Der kommt aber in der Mappingpraxis eher selten vor :). Auch an den Polen kommt man mit den Längengraden ziemlich in Schwierigkeiten, aber da kommt man beim Mapping ebenfalls nur selten hin.

Dass die kürzeste Verbindung genau genommen bei jeder Projektion woanders verläuft, spielt nur bei Langstreckenflügen eine Rolle. Die Projektion der Großkreise ist fast immer eine krumme Linie.

Nimm irgendein beliebiges OSM tool und versuche mal eine Verbindung zwischen irgendwas,179 und irgendwas,-179 zu erstellen, darzustellen oder sonst was damit zu machen, du wirst feststellen, dass du nicht recht hast (deshalb bin ich auch nicht auf Feinheiten von wegen Projektion, Grosskreise etc eingegangen).

Diese Konvention haben wir im echten Leben, aber eben nicht in OSM. Darum geht es ja.

Man könnte sie aber haben, wenn alle Tools geeignet mitspielen würden.

Wenn. Tut man aber eben leider nicht.

Mit “keine Wahl” stimme ich nicht zu. Man könnte bei einer Verarbeitung einer Linie (oder letztendlich auch Relation) zunächst feststellen, ob sie überhaupt von dem Problem betroffen ist (sprich, ob ein Längengradsprung über die ±180°-Linie hinweg vorhanden ist). Falls ja, wäre lediglich die Operation einmal im ±180°-Raum und einmal im 0…360°-Raum durchzuführen und beide Ergebnisse zu bewerten.

:smiley:

Die Konvention hat man in OSM sehr wohl auch, der Unterschied besteht darin, dass man in OSM (und den Tools) so tut, als ob die Welt bei +/-180° zu Ende wäre.

Das war/ist halt die pragmatische Entscheidung, ob man bei jeder Differenz weltweit diesen Sonderfall berücksichtigt oder eben diese künstliche Trennlinie im östlichsten Sibirien in Kauf nimmt.

[wenn]Hätte man die Trennung beim Nullmeridian gemacht, hätte man sich sicher für die Modulo-Differenz entschieden :D[/wenn]

Das bringt eben nichts.

Grundsätzlich ist es so, dass wenn du einen Wertebereich von 360° hast, du die Information nicht in den Koordinaten kodieren kannst. Da kann man solange hin und her schieben und modulo rechnen wie man will, es braucht immer eine zusätzliche Konvention (im Fall von OSM ist es den Grosskreissegment zu nehmen, dass die Datumslinie nicht kreuzt).

Eine mögliche Lösung wäre ein Wertebereich von -360° bis +360° Grad für die geographische Länge zuzulassen (was aber eben bedeuten würde “alles” zu ändern).

Die zusätzliche Konvention wurde ja schon genannt: der kürzeste mögliche Weg ist zu nehmen.

Bei einer Linie zwischen 50°N, 179,999°E und 50°N, 179,999°W wird eine Linie von 0,002° in horizontale Richtung draus (was bei 50° Breite einer Linienlänge von 143 m entspricht).

Wenn ich 179,999 - (-179,999) rechne, erhalte ich zwar 359,998, modulo 180 ergibt dies jedoch -0,002°, Betrag somit 0,002°.

Alternativ könnte ich eine der beiden Seiten als Bezugssystem wählen, dann würde aus dem jeweils anderen Wert dann 180,001° bzw. -180,001°, wohlgemerkt als Zwischenergebnis, nicht in den Daten.

BTW, wie ist es eigentlich mit dem Routing innerhalb http://osm.org/relation/3241868? Funktioniert das?

Und das würde alle in den Daten existierende Wege, die mehr als 180 Längengrade umspannen, die mit der jetzigen Konvention erstellt wurden, kaputt machen (und nach einem Wechsel wäre es auch nicht möglich ein solcher Weg zu erstellen).

Jetzt magst du zurecht sagen, dass solche Wege höchstens selten in den eigentlichen Daten vorkommen (ausser als bounding boxes von changesets, da ist das häufig), aber es ist natürlich so, dass es haufenweise Tools gibt, die auch die OSM Konvention verwenden und all die hätten mit einem Wechsel auch Probleme.

Sprich: nie. Die Werte für die breite liegen bei OSM im Intervall ±85,x°.

Bräuchte man nicht, wenn man modulo rechnet.
Nur: Der Aufwand (“alles” ändern) ist im Prinzip derselbe.

Zur Verdeutlichung: Die Linie zu nehmen, die den +/-180°-Meridian nicht schneidet, ist gleichbedeutend damit, dass dort die Welt zu Ende ist.

Aber zurück zur ursprünglichen Frage: Ich halte es nicht für ausgeschlossen, dass es Funktionen in einer GIS-Software (nicht OSM) gibt, die mit dieser Grenze umgehen können.

Noe, ±90°, die 85° sind nur wenn spherical mercator als Projektion verwendet werden, du kannst problemlos (halt ohne Standard-Tiles) in dem Bereich editieren und Objekte hinzufügen, wenn der Editor eine andere Projektion unterstützt.

Nochmals: dein Vorschlag würde nur eine Art von Geometrie (über die Datumsgrenze) die man in OSM nicht darstellen kann mit einer anderen (mehr als 180° “Länge”) ersetzen.

Wenn’s beruhigt: google kann’s auch nicht…

Wo hier nun die Datumsgrenze ins Spiel kommt (oder kam), erschließt sich mir nicht. Sie ist es nämlich nicht, an der es nicht funktioniert.

Vernünftig implementiert, würde alles funktionieren, auch das im anderen Beitrag (s. u.) angesprochene Routing innerhalb von Fidschi.

Ein schwacher Trost. Ich könnte mir vorstellen, dass das den Menschen vor Ort (so sie diese Dienste nutzen) das nicht so prickelnd finden.

Edit: Fidschi, nicht Tahiti.

Irgendwie sind wir hierfür aber im flhcasen Thread :open_mouth:

Das Darstellungsproblem könnte man ja lösen, indem man Liniensegmente, die auf dem Antimeridian liegen (automagisch detektiert oder nach Taggen desselben …), eben nicht darstellt (sollte irgendwo doch eine echte Grenze auf (-)180 liegen, ginge nur letzteres …)

Die Router müssten halt nachschauen, wenn der Endpunkt einer Straße auf b,180 liegt, ob es einen Straßenendpunkt auf b,-180 gibt, dann eben dort weitermachen …

-snip-