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 2013-06-24 19:17:53

christiank61
Member
From: 3500 Krems/Austria
Registered: 2011-12-18
Posts: 89
Website

Boarder poly über Ost/West-Grenze (Russland/Alaska)

Hallo,

Ich versuche eben den letzten Teil von Russland (Chutoka) zu rendern und scheitere an einem verrückten Problem.
Das Border-Poly geht über die OSt/West Grenze (+/- 180°) und das resultierende File sieht so aus

Poly

Chukotka
1
	177.647381	60.037021
	169.753146	62.237653
	158.011980	65.537569
	156.247880	67.511917
	162.982328	71.567666
	179.777527	72.277157
	-179.132413	72.374985
	-171.602969	69.971774
	-166.245482	66.021995
	-170.227398	58.859590
	-179.132413	54.025129
	177.719758	60.073159
END
END

GPX

<?xml version="1.0" encoding="utf-8"?>
<gpx xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd" version="1.0" creator="QuoVadis 6.0.9.15" xmlns="http://www.topografix.com/GPX/1/0">
  <name>qv6</name>
  <trk>
    <name>Chukotka</name>
    <trkseg>
      <trkpt lat="60.0370205841391" lon="177.647380828857">
        <ele>0.02</ele>
        <time>2013-06-24T16:41:19.254Z</time>
      </trkpt>
      <trkpt lat="62.2376526905995" lon="169.75314617157">
        <ele>0.02</ele>
        <time>2013-06-24T16:41:21.266Z</time>
      </trkpt>
      <trkpt lat="65.5375693528749" lon="158.011980056763">
        <ele>0.02</ele>
        <time>2013-06-24T16:41:29.3Z</time>
      </trkpt>
      <trkpt lat="67.5119172071399" lon="156.247880458832">
        <ele>0.02</ele>
        <time>2013-06-24T16:41:32.03Z</time>
      </trkpt>
      <trkpt lat="71.5676657784401" lon="162.98232793808">
        <ele>0.02</ele>
        <time>2013-06-24T16:41:39.986Z</time>
      </trkpt>
      <trkpt lat="72.2771567236869" lon="179.777526855469">
        <ele>0.02</ele>
        <time>2013-06-24T16:41:43.496Z</time>
      </trkpt>
      <trkpt lat="72.3749853171223" lon="-179.132412672043">
        <ele>0.02</ele>
        <time>2013-06-24T16:41:58.238Z</time>
      </trkpt>
      <trkpt lat="69.9717743296275" lon="-171.602969169617">
        <ele>0.02</ele>
        <time>2013-06-24T16:42:01.748Z</time>
      </trkpt>
      <trkpt lat="66.0219948331531" lon="-166.245481967926">
        <ele>0.02</ele>
        <time>2013-06-24T16:42:04.946Z</time>
      </trkpt>
      <trkpt lat="58.8595897354416" lon="-170.227398276329">
        <ele>0.02</ele>
        <time>2013-06-24T16:42:09.002Z</time>
      </trkpt>
      <trkpt lat="54.0251293151814" lon="-179.132412672043">
        <ele>0.02</ele>
        <time>2013-06-24T16:42:12.122Z</time>
      </trkpt>
      <trkpt lat="60.0731593712082" lon="177.719757556915">
        <ele>0.02</ele>
        <time>2013-06-24T16:42:34.197Z</time>
      </trkpt>
    </trkseg>
  </trk>
</gpx>

Sowahl Osmosis als auch Pyghtmap rendern nun sozusagen das "Negativ" des polys.
Öffnet mal dieses poly in Josm (mit aktivierten poly-plugin) oder auch das GPX, dann seht Ihr was ich meine.

Wie rendert man Karten die über die ost/west-Grenze laufen bzw. wie muss man das poly modifizieren um Osmosis zu einem korrekten Auschnitt zu überreden?

Besten Dank  im Voraus
Christian

Offline

#2 2013-06-24 19:32:34

reneman
Member
From: Mainz
Registered: 2012-10-13
Posts: 1,106
Website

Re: Boarder poly über Ost/West-Grenze (Russland/Alaska)

Als nicht Programmierer wäre mein Ansatz: Rendere erst die eine Hälfte und dann die andere und setze es dann nebeneinander.


» Check the Monuments! «
Viele der als historic=monument erfassten Objekte sind in Wirklichkeit kein Monument. Sie wurden mangels passender Tags oder aus Unkenntnis als Monument erfaßt. Diese Karte CheckTheMonuments will bei der Korrektur unterstützen.

Offline

#3 2013-06-25 00:54:37

seichter
Member
Registered: 2011-05-21
Posts: 3,337

Re: Boarder poly über Ost/West-Grenze (Russland/Alaska)

Das ist vermutlich überall derselbe Programmier-/Entwurfsfehler:
Die Anzeige darf nicht an 180 bzw. -180 enden, sondern muss modulo 360 - 180 weitergeführt werden, d.h. am rechten Rand von Sibirien muss sich Alaska anschließen und umgekehrt.
Das Mapping dort ist ein einziger Krampf: In die Kreisgrenze z.B. wurden zwei gerade Stücke entlang Längengrad +/- 180 eingefügt, damit man geschlossenen Polygone erhält. Die beiden Hälften liegen um die ganze Erde getrennt am rechten und linken Rand der Darstellung.
Man muss entweder Koordinaten größer 180 / kleiner -180 zulassen und Modulo 360 umrechnen oder zulassen, dass die linke Begrenzung größer als die rechte ist. Die Zweideutigkeit kann man dadurch beseitigen, dass immer die kürzere Linie gewählt wird.
Google Maps macht es übrigens richtig hmm

Offline

#4 2013-06-25 14:52:51

Weide
Member
Registered: 2009-04-05
Posts: 1,491

Re: Boarder poly über Ost/West-Grenze (Russland/Alaska)

Hi,

seichter wrote:

Das ist vermutlich überall derselbe Programmier-/Entwurfsfehler

Wenn ich den Äquator angebe: meine ich dann die Nordhalbkugel oder die Südhalbkugel?

Entweder endet die Welt bei ±180°/±90° und man kann ungerichtete Polygone als Flächenangabe benutzen oder die Welt ist rund und man kann es nicht. Das liegt in der Natur der Sache und kein Fehler von irgendjemand.

Weide

Offline

#5 2013-06-25 16:54:57

maxbe
Member
Registered: 2010-01-19
Posts: 3,255
Website

Re: Boarder poly über Ost/West-Grenze (Russland/Alaska)

Google Maps folgt Renemans Vorschlag und rendert von beiden Seiten. An der einen oder anderen Stelle sind die Unstimmigkeiten beim Zusammensetzen auch recht deutlich.

Da ja in unseren Daten alle Flächen an der Datumsgrenze geschlossen werden und alle Linien enden, bekommt man sowieso eine merkwürdige Kante quer durch das Bild, das kann man durch zweiseitiges Rendern nicht mehr hässlicher machen.

Grüße, Max

Offline

#6 2013-06-25 17:12:41

reneman
Member
From: Mainz
Registered: 2012-10-13
Posts: 1,106
Website

Re: Boarder poly über Ost/West-Grenze (Russland/Alaska)

maxbe wrote:

Google Maps folgt Renemans Vorschlag und rendert von beiden Seiten. An der einen oder anderen Stelle sind die Unstimmigkeiten beim Zusammensetzen auch recht deutlich.

Da ja in unseren Daten alle Flächen an der Datumsgrenze geschlossen werden und alle Linien enden, bekommt man sowieso eine merkwürdige Kante quer durch das Bild, das kann man durch zweiseitiges Rendern nicht mehr hässlicher machen.

Das Google Maps Beispiel sieht mir danach aus, als würde man jeweils zwei Objekte rendern, ohne dabei die restlichen Nodes der anderen Hälfte zu berücksichtigen. Das führt dann dazu, dass zwischen beiden Flächen ein Leerraum entsteht. Ich würde jedoch spontan zwei Objekte mit allen Nodes rendern.

Daher aus dem ursprünglichen Beispiel:

christiank61 wrote:
	177.647381	60.037021
	169.753146	62.237653
	158.011980	65.537569
	156.247880	67.511917
	162.982328	71.567666
	179.777527	72.277157
	-179.132413	72.374985
	-171.602969	69.971774
	-166.245482	66.021995
	-170.227398	58.859590
	-179.132413	54.025129
	177.719758	60.073159

werden:

	177.647381	60.037021
	169.753146	62.237653
	158.011980	65.537569
	156.247880	67.511917
	162.982328	71.567666
	179.777527	72.277157
	180	72.374985
	180	69.971774
	180	66.021995
	180	58.859590
	180	54.025129
	177.719758	60.073159

und:

	-180	60.037021
	-180	62.237653
	-180	65.537569
	-180	67.511917
	-180	71.567666
	-180	72.277157
	-179.132413	72.374985
	-171.602969	69.971774
	-166.245482	66.021995
	-170.227398	58.859590
	-179.132413	54.025129
	-180	60.073159

(So in der Art), oder habe ich einen großen Denkfehler?

Last edited by reneman (2013-06-25 17:13:41)


» Check the Monuments! «
Viele der als historic=monument erfassten Objekte sind in Wirklichkeit kein Monument. Sie wurden mangels passender Tags oder aus Unkenntnis als Monument erfaßt. Diese Karte CheckTheMonuments will bei der Korrektur unterstützen.

Offline

#7 2013-06-25 17:43:29

maxbe
Member
Registered: 2010-01-19
Posts: 3,255
Website

Re: Boarder poly über Ost/West-Grenze (Russland/Alaska)

reneman wrote:

Das Google Maps Beispiel sieht mir danach aus, als würde man jeweils zwei Objekte rendern, ohne dabei die restlichen Nodes der anderen Hälfte zu berücksichtigen. Das führt dann dazu, dass zwischen beiden Flächen ein Leerraum entsteht. Ich würde jedoch spontan zwei Objekte mit allen Nodes rendern.

Wenn das der Renderer kann, wäre es gut. Ich hab allerdings fast nur schlechte Erfahrungen mit der Datumsgrenze gemacht. Mein Mapserver reagiert jedenfalls sehr zickig, wenn man seine Linien nicht an der Kartengrenze aufhören lässt und malt dann Flächen quer durchs Bild, statt am Kartenrand abzutrennen.

Sieht z.B. so aus, wenn man die Kartenmitte auf 180° legt und den Rand auf 0°:
datumsgrenzen%C3%BCberschlag.pngdatumsgrenzen%C3%BCberschlag_gb.png
(zur Verdeutlichung wurde Großbritannien rot eingefärbt, das jetzt auf beiden Seiten der Karte liegt, gefüllt wird der Zwischenraum, also alles ausser GB. Gelb ist Algerien)

Last edited by maxbe (2013-06-25 17:56:36)

Offline

#8 2013-06-25 18:54:49

TEL0000
Moderator
From: Berlin
Registered: 2008-06-11
Posts: 968

Re: Boarder poly über Ost/West-Grenze (Russland/Alaska)

reneman wrote:

(So in der Art), oder habe ich einen großen Denkfehler?

Im Prinzip richtig. Allerdings stimmt der Winkel der Linien nicht mehr, wenn du den Längengrad einfach auf 180 setzt.
Theoretisch wäre es besser den auf die korrekte Position über 180° hinaus zu setzen. Also -179° sind dann 181°.
Ich weiß allerdings nicht ob die Renderer mit Werten über 180 was anfangen können.

Last edited by TEL0000 (2013-06-25 19:00:00)

Offline

#9 2013-06-25 19:44:15

seichter
Member
Registered: 2011-05-21
Posts: 3,337

Re: Boarder poly über Ost/West-Grenze (Russland/Alaska)

Weide wrote:

Hi,

seichter wrote:

Das ist vermutlich überall derselbe Programmier-/Entwurfsfehler

Wenn ich den Äquator angebe: meine ich dann die Nordhalbkugel oder die Südhalbkugel?

Weder noch, genauso wie die Zahl 0 weder positiv noch negativ ist. Abgesehen davon geht es hier um die Längen- und nicht die Breitengrade. Es ist nur gut, dass es an den Polen so kalt ist, sonst hätten wir noch viel größere Probleme.

Weide wrote:

Entweder endet die Welt bei ±180°/±90° und man kann ungerichtete Polygone als Flächenangabe benutzen oder die Welt ist rund und man kann es nicht. Das liegt in der Natur der Sache und kein Fehler von irgendjemand.

Weide

Darüber, ob das Verhalten bei 180° ein "Fehler" ist, will ich nicht streiten. Fakt ist, dass die auf OSM basierenden Tools und Karten, die ich kenne, dort eigentlich nicht zufriedenstellend sind.
Die Erdoberfläche ist endlich, aber unbegrenzt (ich falle nirgends über den Rand). Die Grenze +/-180 ist nur pragmatisch begründet. Die Kugelkoordinaten sind auch für Werte außerhalb definiert, sie können jedoch durch modulo auf eindeutige Punkte auf der Oberfläche abgebildet werden. Auch eine Linie (179,89)-(181,89) kann dargestellt werden und ist identisch mit  (179,89)-(-179,89). 

Bei Google Maps korrigiere ich mich: Dort wird auch nur mit dem +/- 180-Rechteck gearbeitet. Für die Ansicht wird nur das Rechteck links und rechts wiederholt. Die Gebiete um 180° hängen aber nicht logisch zusammen und sind auch getrennt bearbeitet worden, was man an halbierten Seen, Versatz in Straßen und ähnlichem sehen kann.

Die genutzten Algorithmen gehen offensichtlich von einer an den Rändern begrenzten Welt aus. Im Beispiel von maxbe wird das deutlich: Da in GB nicht wie in Sibirien alle Objekte bei 0° aufgeteilt wurden, kommt der Renderer völlig aus dem Tritt, da er nun Nodes zu beiden Seiten des Nullmeridians quer über den Rest der Welt zu verbinden versucht.

Als schwacher Trost bleibt nur, dass auch andere Systeme mit dem Modulo-Sprung so ihre Probleme haben: Die Datumsgrenze wurde nicht zufällig weitgehend auf den 180°-Meridian gelegt.

Offline

#10 2013-06-25 20:20:07

Weide
Member
Registered: 2009-04-05
Posts: 1,491

Re: Boarder poly über Ost/West-Grenze (Russland/Alaska)

seichter wrote:

Die Erdoberfläche ist endlich, aber unbegrenzt (ich falle nirgends über den Rand). Die Grenze +/-180 ist nur pragmatisch begründet. Die Kugelkoordinaten sind auch für Werte außerhalb definiert, sie können jedoch durch modulo auf eindeutige Punkte auf der Oberfläche abgebildet werden. Auch eine Linie (179,89)-(181,89) kann dargestellt werden und ist identisch mit  (179,89)-(-179,89).

Ich glaube, ich bin dem was ich sagen wollte nicht durchgekommen. Ich versuchs nochmal:

Wir hättten natürlich die realistischere Kugelform anstelle der platten Fläche mit Rand nehmen können. Wenn wir das getan hätten, dann können wir Flächen nicht durch durch ungerichtete einfache Polygone angeben, da jede solche Linie auf einer Kugel zwei Flächen definiert und es kein Innen und Außen gibt (Der Äquator war nur ein Beispiel).

OSM hat sich dafür entschieden, Flächen über ungerichtete einfache Polygone angeben zu können. Damit war auch die Entscheidung für eine endliche Welt mit Rand gefallen.

Weide

Offline

#11 2013-06-25 20:50:04

seichter
Member
Registered: 2011-05-21
Posts: 3,337

Re: Boarder poly über Ost/West-Grenze (Russland/Alaska)

OK, jetzt verstehe ich auch die Anmerkung mit den Polygonflächen. Bis auf die Großkreise (wie den Äquator) könnte man versuchen, innen und außen über die kleinere Fläche zu definieren. Bei großen Flächen und komplizierten Konturen wird das aber beliebig mühsam.
Gerichtete Polygone hätte man auch nehmen können, dann wäre innen und außen eindeutig definiert. Aber wenn man sich die Probleme ansieht, die die wenigen gerichteten Ways wie Kliffs und Küsten machen, ist das auch keine praktikable Alternative.

Seien wir nur froh, dass OSM nicht am Kap Deschnew entwickelt wurde und es in der Antarktis keine Städte gibt. Nicht umsonst hält die Merkatorprojektion einen Sicherheitsabstand zu den Polen ein.

Offline

#12 2013-06-25 21:07:25

Oranger Assistent
Member
Registered: 2013-04-07
Posts: 92

Re: Boarder poly über Ost/West-Grenze (Russland/Alaska)

Tach.

Weide wrote:

Wir hättten natürlich die realistischere Kugelform anstelle der platten Fläche mit Rand nehmen können. Wenn wir das getan hätten, dann können wir Flächen nicht durch durch ungerichtete einfache Polygone angeben, da jede solche Linie auf einer Kugel zwei Flächen definiert und es kein Innen und Außen gibt (Der Äquator war nur ein Beispiel).

OSM hat sich dafür entschieden, Flächen über ungerichtete einfache Polygone angeben zu können. Damit war auch die Entscheidung für eine endliche Welt mit Rand gefallen.

Wenn wir festlegen, dass OSM-Objekte in der Länge nur eine Ausdehnung von weniger als 180° haben dürfen (wobei die Datumsgrenze überschritten werden darf) und Flächen keinen der Pole enthalten dürfen, wird das Zeichnen sowohl von Linien als auch von Flächen wieder eindeutig bei relativ einfacher Mathematik. Bei weniger als 90° wird die Mathematik dazu vollends trivial.

Und das bei hinreichend geringer™ Beschränkung der Allgemeinheit.

Der Assistent

Offline

#13 2013-06-25 21:26:12

Weide
Member
Registered: 2009-04-05
Posts: 1,491

Re: Boarder poly über Ost/West-Grenze (Russland/Alaska)

Oranger Assistent wrote:

Wenn wir festlegen, dass OSM-Objekte in der Länge nur eine Ausdehnung von weniger als 180° haben dürfen (wobei die Datumsgrenze überschritten werden darf) und Flächen keinen der Pole enthalten dürfen, wird das Zeichnen sowohl von Linien als auch von Flächen wieder eindeutig bei relativ einfacher Mathematik.

Seh ich ein. Das wäre die von seichter genannte Variante mit den kleineren Polygonen, aber etwas weiter eingeschränkt, so dass man die Flächen nicht ausrechnen muss.

Oranger Assistent wrote:

Bei weniger als 90° wird die Mathematik dazu vollends trivial.

Da komm ich im Moment nicht drauf...ist aber ja auch schon spät.

Weide

Offline

Board footer

Powered by FluxBB