Wie eine Breite / Länge zu einer verzerrten Karte abzubilden?

stimmen
22

Ich habe eine Reihe von Breiten- / Längenpaaren, die auf bekannten x / y-Koordinaten auf einer Karte (geographisch verzerrten) Karte.

Dann habe ich noch eine Breite / Länge Paar. Ich will es auf der Karte zeichnen, so gut möglich ist. Wie gehe ich um dies zu tun?

Zuerst habe ich beschlossen, ein System von linearen Gleichungen für die drei nächsten lat / long Punkte zu schaffen und eine Transformation von dieser zu berechnen, aber auch überhaupt nicht funktioniert. Da dies ein lineares System ist, kann ich nicht mehr in der Nähe Punkte entweder verwenden.

Sie können nicht davon ausgehen, Norden ist oben: alles, was Sie haben, ist die bestehende lat / Lang-> x / y-Zuordnungen.

EDIT: es ist kein Mercator-Projektion, oder so etwas. Es ist willkürlich zur besseren Lesbarkeit (man denke an U-Bahn-Karte) verzerrt. Ich möchte nur die nächsten 5 bis 10 Zuordnungen verwenden, so dass die Verzerrung auf anderen Teilen der Karte nicht die Zuordnung nicht beeinträchtigt ich zu berechnen bin versucht.

Ferner ist die gesamte Karte in einem sehr kleinen Gebiet geographischen so keine Notwendigkeit, über den Globus zu kümmern gibt es - Flach Erde Annahmen gut genug sind.

Veröffentlicht am 05/08/2008 um 05:55
quelle vom benutzer
In anderen Sprachen...                            


4 antworten

stimmen
8

Gibt es mehr spezifische Details über die Art der Verzerrung? Wenn zum Beispiel Ihre Breiten- und Längengrade „verzerrt“ werden auf Ihre 2D - Karte eine Mercator - Projektion verwendet wird , ist die Umwandlung Mathe leicht verfügbar .

Wenn die Karte wirklich willkürlich verzerrt ist, gibt es viele Dinge , die Sie könnten versuchen, aber die einfachste wäre wahrscheinlich eine Berechnung zu gewichteter Durchschnitt aus den vorhandenen Punktzuordnungen. Ihre Gewicht könnten die squared Inverse des x / y - Abstandes von Ihrem neuen Punkt zu jedem Ihrer vorhandenen Punkten sein.

Einige Pseudo-Code:

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 wird eine relativ einfache Annäherung geben. Wenn Sie die geografischen Koordinaten der Projektion verzerrt genauer über die Art und Weise sein kann, können Sie wahrscheinlich nicht viel besser.

Beantwortet am 05/08/2008 um 06:48
quelle vom benutzer

stimmen
2

In Ordung. Aus theoretischer Sicht gegeben, dass die Verzerrung „willkürlich“, und jede Lösung erfordert, dass Sie diese willkürliche Verzerrung zu modellieren, können Sie natürlich nicht eine „Antwort“ erhalten. Jedoch wird jede Lösung gehen (in der Regel implizit) einige Modelle der Verzerrung beinhaltet Einführung, die nicht die Realität der Situation entspricht oder nicht.

Da Sie in Modellen zu sein am meisten interessiert scheinen, die eine Art von lokaler Kontinuität der Verzerrung Mapping vermuten, ist die naheliegendste Wahl diejenige, die Sie bereits versucht haben: linear interpolaton zwischen den nächsten Punkten. Jenseits das wird kompliziertere mathematische und numerische Analyse von Wissen erfordern.

Sie sind falsch, aber Sie in der Annahme, dies um mehr Punkte nicht erweitern können. Sie können durch einen kleinsten Fehlerquadrat-Ansatz. Finden Sie die lineare Antwort, die den Fehler der anderen Punkte minimiert. Dies ist wahrscheinlich die am meisten straight-forward-Erweiterung. Mit anderen Worten, nehmen Sie die 5 nächsten Punkte und versuchen mit einer linearen Annäherung zu kommen, die die Fehler dieser Punkte minimieren. Und verwenden Sie das. Ich würde die nächste versuchen.

Wenn das nicht funktioniert, dann ist die Annahme der Linearität über den Bereich von N Punkten gebrochen. An diesem Punkt müssen Sie entweder ein quadratisches oder kubisches Modell aktualisieren. Die Mathematik wird an diesem Punkt hektisch zu bekommen.

Beantwortet am 05/08/2008 um 16:47
quelle vom benutzer

stimmen
0

Ähm. Vielleicht bin ich etwas fehlt über die Frage hier, aber wenn Sie long / lat Informationen haben, können Sie auch die Richtung Norden haben?

Es scheint, Sie geodätischen Koordinaten auf einem projizierten Koordinatensystem abbilden müssen. Zum Beispiel OSGB zu wgs84.

Die Mathematik beteiligt ist nicht trivial, aber der Code kommt ein nur ein paar Zeilen. Wenn ich mehr Zeit hätte , würde ich mehr schreiben , aber ich brauche eine Dusche , damit ich auf die langweilige und Link sein wikipedia - Eintrag, der ziemlich gut ist.

Hinweis: Post Dusche bearbeitet.

Beantwortet am 05/08/2008 um 06:21
quelle vom benutzer

stimmen
0

das Problem ist, dass die Kugel eine Reihe von Möglichkeiten verzerrt werden können, und alle diese Punkte, die auf dem Äquator bekannt ist, können sagen, wird nicht helfen Ihnen Punkte weiter entfernt abzubilden.

Sie müssen besser ‚schließen‘ Punkte, dann können Sie diese drei Punkte davon ausgehen, sind auf einer Ebene mit dem vierten und die Interpolation tun --knowing, dass der Abstand von Longituden eine Funktion ist, keine Konstante.

Beantwortet am 05/08/2008 um 06:20
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more