Dies ist eine Folgefrage zu meiner vorherigen. Können Sie einige gut geschriebene Einführungstexte zu Koordinatensystemprojektionen vorschlagen?
Nehmen wir an, ich arbeite mit der Kartenprojektion CH1903, die meines Wissens konform, aber nicht äquidistant ist. Das heißt, Winkel (Form) wurden beibehalten, nicht jedoch Bereiche, Abstände oder Maßstäbe. (Zumindest sind diese nicht exakt erhalten geblieben ). So weit, ist es gut.
Ich frage mich, welche Art von Berechnung ArcGIS ausführt, wenn ich jetzt den Abstand zwischen zwei Punkten berechnen möchte. In ArcObjects könnte ich die IProximityOperator
Schnittstelle wie folgt verwenden:
IPoint a = ...,
b = ...;
double distance = ((IProximityOperator)a).ReturnDistance(b);
Frage: Was würde ArcGIS tun, wenn ich mit einem Referenzsystem arbeite, das Entfernungen nicht genau beibehält, wenn ich die Entfernung zwischen zwei Punkten abfrage (wie oben gezeigt)?
Führt es einfach einige pythagoreische Berechnungen durch (a 2 + b 2 = c 2 ), um die Entfernung zu ermitteln, was bedeutet, dass die zurückgegebene Entfernung nur so genau ist, wie es die Projektion zulässt?
Oder wird es etwas Komplizierteres tun, wie eine Art Neuprojektion, um eine genauere Entfernung zu erhalten?
( Dieselbe Frage, aber allgemeiner: Führt ArcGIS nach der Projektion dieser Geometrien alle Berechnungen einfach im euklidischen Raum durch oder beeinflusst die verwendete Kartenprojektion weiterhin die Berechnung von Entfernungen, Winkeln, Flächen usw.?)
Antworten:
Wenn Sie eine stabile Methode zur Berechnung geodätischer Entfernungen wünschen, empfehle ich den Wrapper von Richie Carmichael für die Projektions-Engine von ESRI .
Update: Ich habe gerade Richies Code mit ArcGIS 10.0 unter Vista64 ausprobiert und nach dem Aufruf eine Ausnahme erhalten
LoadLibrary
. Ich werde später mehr darauf eingehen.Im Moment ist hier ein Code als Antwort auf Fragen in den Kommentaren einer anderen Antwort.
Der Code vergleicht IProximityOperator für Punkte mit und ohne räumliche Bezüge. Anschließend wird gezeigt, wie eine azimutale äquidistante Projektion (wobei der erste Punkt der Tangentialpunkt ist) verwendet wird, um den Großkreisabstand zu ermitteln.
Hier ist die Ausgabe:
Ich denke, es wäre interessant, dies gegen die Projektions-Engine-DLL (pe.dll) zu testen. Wird Ergebnisse veröffentlichen, wenn ich jemals Richies Code zum Laufen bringe.
Update: Nachdem ich den Richies-Code geändert hatte, um ihn für x86 zu kompilieren, konnte ich ihn ausführen. Interessant ... der große Kreisabstand, den es mir gibt, ist 1960273.80162999 - ein signifikanter Unterschied zu dem, der von der oben beschriebenen azimutalen äquidistanten Methode zurückgegeben wurde.
quelle
Überprüfen Sie in ArcGIS 10 IGeometryServer2, das jetzt GetDistanceGeodesic (geodätischer Abstand zwischen zwei Geometrien), GetLengthsGeodesic (Rückgabe der geodätischen Längen jeder Polylinie) und DensifyGeodesic (Verdichtung einer Polylinie durch Zeichnen von Punkten entlang der geodätischen Linien, die die Scheitelpunkte verbinden, enthält: IPolycurve4: : GeodesicDensify) -Methoden.
Wie in den anderen Antworten erwähnt, verwendet ArcGIS immer noch hauptsächlich planare Berechnungen.
Melita Kennedy
Einige Kommentare zu den anderen Antworten (noch nicht genug Wiederholungen, um direkt zu kommentieren!).
Esris azimutale äquidistante Projektion unterstützt Ellipsoide. Der GreatCircleDist-Code erstellt ein PCS, das ein Ellipsoid- / Sphäroid-basiertes GCS verwendet. Daher sind Entfernungen vom Mittelpunkt / Ursprungspunkt geodätische Entfernungen und keine Großkreisentfernungen. Es könnte auch vereinfacht werden. Wir kennen die projizierten Koordinaten des ersten Punktes, weil es das Zentrum der Projektion ist: 0,0. Es muss also nur der 2. Punkt projiziert werden. Eine vereinfachte EuclidianDistance-Funktion könnte dann verwendet werden.
Ich habe die Ergebnisse mit den geodätischen Funktionen der pe.dll verglichen und sie stimmten überein. Es sieht so aus, als ob Richies App eine Kugel verwendet, sodass sie in ihrer Testanwendung Großkreisabstände / -koordinaten zurückgibt. Deshalb stimmen die Ergebnisse nicht überein. Ich habe die Radiuswerte nicht erkannt. Ich denke, ich muss mit ihm darüber sprechen!
quelle
Die Richtigkeit von Antworten zu ArcGIS kann jederzeit geändert werden. Soweit wir wissen, werden im nächsten Service Pack neue Verfahren ohne Warnung oder Dokumentation eingeführt. Allerdings verwendet die ESRI-Software seit langem euklidische Berechnungen ( z. B. die pythagoreische Formel für Entfernungen), wenn projizierte Koordinaten verwendet werden. In Berechnungen wie der von Ihnen abgebildeten hat die Software häufig nicht einmal Zugriff auf die Projektionsinformationen. Was kann also noch getan werden?
Ihre Frage selbst scheint darauf hinzudeuten, dass euklidische Entfernungsberechnungen für eine äquidistante Projektion korrekt sind. Nichts ist weiter von der Wahrheit entfernt. Bei einer äquidistanten Einpunktprojektion entspricht der euklidische Abstand zum Basispunkt garantiert dem geodätischen Abstand. Bei einer äquidistanten Zwei-Punkt-Projektion entspricht der euklidische Abstand zu beiden Basispunkten garantiert dem geodätischen Abstand. Im Gegenzug für diese Garantien ist die metrische Verzerrung zwischen allen anderen Punktpaaren im Vergleich zu anderen Projektionen, die man wählen könnte, typischerweise stark erhöht.
quelle