Ich habe über eine 'projektionsfreie' geografische Codebasis mit Ihren grundlegenden Punkt-, Linien- und Polygonprimitiven nachgedacht (und Prototypcodierung durchgeführt).
Anstatt mich mit all den Opfern zu befassen, die mit der Projektion auf die Ebene einhergehen, schreibe ich Algorithmen, die direkt auf der Oberfläche des Ellipsoids funktionieren.
Eine der möglichen Komplikationen ist, dass es verschiedene Arten von "Linien" gibt:
- (Bögen von) Großkreisen: kürzester Abstand entlang der Oberfläche (konstante Nullhöhe) zwischen zwei Punkten; sollte genau den Sichtlinienpfaden entsprechen.
- Loxodrome: Verbinden Sie die beiden Punkte mit einem Pfad konstanter Richtung. Beispielsweise folgen einige Staatsgrenzen den Breitengraden (die keine großen Kreise sind).
- Kurven: Kreisbögen (Pfade mit konstantem Abstand von einem bestimmten Mittelpunkt); Bezier (nicht sicher bei korrekter Neuinterpretation im Kontext einer gekrümmten Oberfläche) usw.
Welche der verschiedenen Arten von Pfaden (einschließlich der Pfade, die ich verpasst habe) sind wichtig genug, um eine "exakte" Darstellung zu haben, während sie innerhalb eines Fehlerbereichs durch kurze Segmente eines einfacheren Pfades (z. B. kurze geodätische Bogensegmente) dargestellt werden?
Klarstellungsänderungen: Mit "genau" oben meine ich parametrisch. Mit anderen Worten: Berechnbar mit jeder gewünschten Genauigkeit, ohne einen Verdichtungsschritt beim Import.
Eine Bearbeitung , viel später, um ein Zitat hinzuzufügen, auf das ich gestoßen bin, das meinen eigenen Gedanken über die Verwendung von 3D-Einheitsvektoren als geografisches Grundelement sehr nahe kommt: Eine nicht singuläre horizontale Positionsdarstellung ( alt link ). Bester Teil? Ich musste nicht alles selbst aufschreiben!
Antworten:
Die Frage betrifft, welche Arten von Kurven eher eine implizit genaue Darstellung als eine diskretisierte Annäherung verdienen. Der Kern der Sache ist folgender: Um erfolgreich zu sein, muss die Klasse von Kurven, die Sie auf diese Weise unterstützen, unter der Klasse von Kurven- und Polygonerstellungsoperationen geschlossen werden, die im GIS unterstützt werden.
Diese Operationen umfassen:
Pufferung. In diesem Prozess müssen Sie Kurven erstellen, die parallel zu Features sind. ("Parallel" bedeutet im Sinne der Einhaltung eines festen Abstands.) Dies umfasst Kreise und Teile davon (zum Puffern von Punkten), schräge Parallelen (Kurven, die äquidistant zur Geodäten auf dem Sphäroid sind und in besonderen Fällen auf isolierte Punkte reduziert werden können). und konzentrische Kreise. Auf der Kugel (aber im Allgemeinen nicht auf einem Ellipsoid) sind die schrägen Parallelen selbst Kreise.
Einflusspolygone (Thiessen-Polygone; Voronoi-Polygone; Dirichlet-Zellen). Um die Thiessen-Polygone für eine Sammlung von Punktmerkmalen zu konstruieren, müssen wir halbierende Linien finden, die Geodäten sind (sie sind gerade). Für eine Sammlung anderer Arten von Merkmalen wie Punkte und Segmente umfassen die Grenzen der Thiessen-Polygone Teile von Parabeln (in der Ebene). Vielleicht möchten Sie das nicht unterstützen ...
Mengen-theoretische Überlagerungen (Schnittmenge, Vereinigung, Differenz, Komplement). Diese Operationen erzeugen keine neuen Arten von Kurven.
Parallele Translation und Rotation . Diese können normalerweise nicht exakt auf einem Ellipsoid ausgeführt werden (da es sich nicht um einen homogenen Raum handelt ), sind jedoch auf der Kugel unkompliziert. Auf der Kugel erzeugen diese Operationen keine neuen Arten von Kurven.
Die wirklich problematische Klasse von Kurven, die Sie vorschlagen, besteht aus den allgemeinen Loxodromen (Loxodromen). Breitengradlinien sind Loxodrome, aber (zumindest auf der Kugel) auch Kreise, sodass sie kein zusätzliches Problem darstellen. Aber allgemeine Loxodrome sind komplizierte Tiere: Wenn sie keine Meridiane oder Parallelen sind, drehen sie sich in den einen oder anderen Pol. Puffer und parallele Übersetzungen von Loxodromen sind wirklich neue Arten von Kurven. Sie müssten diese Ergebnisse als unterbrochene Segmente von Linien und Kreisen darstellen, was Ihren Zweck zunichte machen würde (und ziemlich schwer zu berechnen wäre). Daher schlage ich vor, nicht genau zu versuchen, Loxodrome zu unterstützen.
Insgesamt sieht es so aus, als könnten Sie in Ihrem Programm erfolgreich sein, wenn Sie (a) an einem sphärischen Modell der Erde arbeiten und nicht an dem allgemeineren ellipsoiden ("sphäroidalen") Modell, und (b) Sie bestimmte Konstruktionen wie Thiessen-Polygone einschränken (und Mittelachsen, die eng miteinander verbunden sind) zu Punktsammlungen.
quelle
Dan,
Vielleicht interessieren Sie sich für einige meiner Arbeiten zur Geodäsie. Dies ist in diesem Preprint beschrieben . Beachten Sie insbesondere:
Die direkten und inversen geodätischen Probleme können maschinengenau gelöst werden. Dies bedeutet etwa 15 nm für doppelte Genauigkeit. Ich kann zu langen Doppelbetten wechseln, einen zusätzlichen Begriff in die Serie aufnehmen und eine Genauigkeit von 18 Uhr erhalten. Beachten Sie insbesondere, dass die Lösung des inversen Problems immer konvergiert (im Gegensatz zu Vincentys Methode). Die Geschwindigkeit ist vergleichbar mit der von Vincenty (direkte Lösung ist etwas schneller, die inverse Lösung ist etwas langsamer).
Ich berechne die reduzierte Länge und die geodätischen Skalen. Diese Größen geben die unterschiedlichen Eigenschaften der Geodäten an und ermöglichen die schnelle und genaue Lösung verschiedener geodätischer Probleme (Schnittpunkte, Mittellinien usw.) mit der Newtonschen Methode. Die Krümmung der Grenzen von Pufferbereichen kann in Form dieser Größen ausgedrückt werden. Siehe diesen Hinweis , den ich an die proj.4-Mailingliste gesendet habe.
Ich definiere eine ellipsoidale gnomonische Projektion, bei der die Geodäten nahezu gerade sind. Dadurch können Probleme auf der Oberfläche des Ellipsoids auf Probleme in der Ebenengeometrie abgebildet werden. Zum Beispiel kann der Schnittpunkt zweier Geodäten genau gefunden werden, indem ein Schnittpunkt geschätzt, eine gnomonische Projektion über diesen Punkt durchgeführt, der Schnittpunkt neu geschätzt und iteriert wird.
Ich gebe Ausdrücke für den Bereich eines geodätischen Polygons. Es ist nicht erforderlich, lange Kanten zu unterteilen, um ein genaues Ergebnis zu erhalten.
GeographicLib (on sourceforge) implementiert die Algorithmen.
Schließlich stelle ich fest, dass Geodäten für viele Zwecke jeder anderen Art von Kurve (insbesondere großen Ellipsen oder Loxodromen) vorzuziehen sind, da sie der Dreiecksungleichung gehorchen. Dies hat mehrere Konsequenzen:
quelle
Dies ist die Antwort auf @ Dans Frage nach der Verwendung der Hilfskugel zur Lösung von Schnittproblemen.
Nein, mit der Hilfskugel können Sie nicht direkt nach Kreuzungen suchen. Das Problem ist, dass die Abbildung vom Ellipsoid zur Kugel von der Geodät abhängt (z. B. ihrem Azimut am Äquator). Somit ist die Hilfskugel gut für die Lösung einer einzelnen Geodät, aber nicht für die Lösung von Problemen, die mehr als eine Geodät betreffen.
Meine empfohlene Methode für geodätische Schnittpunkte und Interceptions (kürzester Weg zwischen einem Punkt und einer geodätischen) ist die Verwendung der gnomonischen Projektion. Geodäten auf einer Kugelkarte auf gerade Linien in der gnomonischen Projektion. Sofern Ihr Problem auf eine Halbkugel beschränkt ist, konvertiert die gnomonische Projektion diese Probleme in zweidimensionale.
Es gibt keine Projektion, die die Geradheit der Geodäten für ein Ellipsoid bewahrt (weil seine Krümmung nicht konstant ist). GeographicLib bietet jedoch eine Verallgemeinerung der gnomonischen Projektion, bei der die Geodäten nahezu gerade sind. Dies führt zu schnell konvergierenden Algorithmen für geodätische Schnittpunkte und Interceptions (wiederum vorausgesetzt, die Punkte befinden sich alle gut innerhalb einer Hemisphäre). Siehe meine Antworten (mit Code!) Auf gpesquero unter
https://sourceforge.net/projects/geographiclib/forums/forum/1026621/topic/4085561
Abschließend möchte ich darauf hinweisen, dass ich kürzlich die geodätischen Routinen von GeographicLib in Javascript konvertiert habe, damit Sie in Google Maps damit herumspielen können. Sehen
http://geographiclib.sourceforge.net/scripts/geod-google.html
http://geographiclib.sourceforge.net/scripts/geod-calc.html
(Ich habe die gnomonische Projektion noch nicht in Javascript konvertiert. Das wäre ziemlich einfach. Gleichzeitig würde ich auch die azimutale äquidistante Projektion konvertieren, da dies eine bequeme Möglichkeit ist, eine andere Klasse geodätischer Probleme mit "Medianlinien" zu lösen. .)
ADDENDUM (19.08.2014)
Es ist auch möglich, die Zeit der nächsten Annäherung für zwei Schiffe zu ermitteln, die mit konstanter Geschwindigkeit entlang der Geodäten fahren. Da wir die unterschiedlichen Eigenschaften der Geodäten kennen, ist es möglich, die Newtonsche Methode zu verwenden, um in wenigen Iterationen eine genaue Lösung zu erhalten. Der Code zur Implementierung ist unter veröffentlicht
https://sourceforge.net/p/geographiclib/discussion/1026620/thread/33ce09e0
quelle