math - Wie ordne ich einen Längen- / Breitengrad einer verzerrten Karte zu?

Translate

Ich habe eine Reihe von Breiten- / Längengradpaaren, die bekannten x / y-Koordinaten auf einer (geografisch verzerrten) Karte zugeordnet sind.

Dann habe ich noch ein Längen- / Breitengradpaar. Ich möchte es so gut wie möglich auf der Karte darstellen. Wie mache ich das?

Zuerst habe ich beschlossen, ein lineares Gleichungssystem für die drei nächsten Lat / Long-Punkte zu erstellen und daraus eine Transformation zu berechnen, aber das funktioniert überhaupt nicht gut. Da dies ein lineares System ist, kann ich auch keine Punkte in der Nähe mehr verwenden.

Sie können nicht davon ausgehen, dass North oben ist: Alles, was Sie haben, sind die vorhandenen Lat / Long-> X / Y-Zuordnungen.

EDIT: Es ist keine Mercator-Projektion oder ähnliches. Es ist aus Gründen der Lesbarkeit willkürlich verzerrt (denken Sie an die U-Bahn-Karte). Ich möchte nur die nächsten 5 bis 10 Zuordnungen verwenden, damit Verzerrungen in anderen Teilen der Karte keine Auswirkungen auf die Zuordnung haben, die ich berechnen möchte.

Darüber hinaus befindet sich die gesamte Karte in einem sehr kleinen geografischen Gebiet, sodass Sie sich keine Sorgen um den Globus machen müssen - Annahmen zur flachen Erde sind gut genug.

This question and all comments follow the "Attribution Required."

Alle Antworten

Translate

Gibt es spezifischere Details zur Art der Verzerrung? Wenn beispielsweise Ihre Breiten- und Längengrade mithilfe einer Mercator-Projektion auf Ihrer 2D-Karte "verzerrt" werden, lautet die Umrechnungsmathematikleicht verfügbar.

Wenn die Karte wirklich willkürlich verzerrt ist, können Sie viele Dinge ausprobieren, aber am einfachsten wäre es wahrscheinlich, a zu berechnengewichteter Durchschnittaus Ihren vorhandenen Punktzuordnungen. Ihre Gewichte können die quadratische Umkehrung des x / y-Abstands von Ihrem neuen Punkt zu jedem Ihrer vorhandenen Punkte sein.

Ein Pseudocode:

estimate-latitude-longitude (x, y)

    numerator-latitude := 0
    numerator-longitude := 0
    denominator := 0

    for each point,
        deltaX := x - point.x
        deltaY := y - point.y
        distSq := deltaX * deltaX + deltaY * deltaY
        weight := 1 / distSq

        numerator-latitude += weight * point.latitude
        numerator-longitude += weight * point.longitude
        denominator += weight

    return (numerator-latitude / denominator, numerator-longitude / denominator)

Dieser Code gibt eine relativ einfache Annäherung. Wenn Sie genauer bestimmen können, wie die Projektion die geografischen Koordinaten verzerrt, können Sie dies wahrscheinlich viel besser machen.

Quelle
Translate

In Ordung. Aus theoretischer Sicht können Sie angesichts der Tatsache, dass die Verzerrung "willkürlich" ist und jede Lösung erfordert, dass Sie diese willkürliche Verzerrung modellieren, offensichtlich keine "Antwort" erhalten. Jede Lösung wird jedoch das Auferlegen (normalerweise implizit) eines Modells der Verzerrung beinhalten, das die Realität der Situation widerspiegeln kann oder nicht.

Da Sie anscheinend am meisten an Modellen interessiert sind, die eine lokale Kontinuität der Verzerrungsabbildung voraussetzen, ist die naheliegendste Wahl die, die Sie bereits versucht haben: lineare Interpolation zwischen den nächsten Punkten. Um darüber hinauszugehen, sind komplexere mathematische und numerische Analysekenntnisse erforderlich.

Sie gehen jedoch zu Unrecht davon aus, dass Sie dies nicht auf weitere Punkte ausweiten können. Sie können einen Fehleransatz mit dem kleinsten Quadrat verwenden. Finden Sie die lineare Antwort, die den Fehler der anderen Punkte minimiert. Dies ist wahrscheinlich die einfachste Erweiterung. Mit anderen Worten, nehmen Sie die 5 nächstgelegenen Punkte und versuchen Sie, eine lineare Näherung zu finden, die den Fehler dieser Punkte minimiert. Und benutze das. Ich würde es als nächstes versuchen.

Wenn das nicht funktioniert, wird die Annahme der Linearität über die Fläche von N Punkten gebrochen. Zu diesem Zeitpunkt müssen Sie entweder auf ein quadratisches oder ein kubisches Modell aktualisieren. Die Mathematik wird an diesem Punkt hektisch.

Quelle
Translate

Das Problem ist, dass die Kugel auf verschiedene Weise verzerrt werden kann und wenn all diese Punkte am Äquator bekannt sind, hilft es Ihnen beispielsweise nicht, Punkte weiter weg abzubilden.

Sie benötigen bessere Nahpunkte, dann können Sie davon ausgehen, dass diese drei Punkte mit dem vierten auf einer Ebene liegen, und die Interpolation durchführen - in dem Wissen, dass der Längenabstand eine Funktion und keine Konstante ist.

Quelle
Translate

Ummm. Vielleicht fehlt mir hier etwas an der Frage, aber wenn Sie Long / Lat-Informationen haben, haben Sie auch die Richtung Norden?

Es scheint, dass Sie geodätische Koordinaten einem projizierten Koordinatensystem zuordnen müssen. Zum Beispiel osgb bis wgs84.

Die Mathematik ist nicht trivial, aber der Code kommt nur aus wenigen Zeilen heraus. Wenn ich mehr Zeit hätte, würde ich mehr posten, aber ich brauche eine Dusche, damit ich langweilig werde und auf die verlinkeWikipediaEintrag, der ziemlich gut ist.

Hinweis: Nach der Dusche bearbeitet.

Quelle