Wie konvertiere ich Koordinaten in Breitengrad und Längengrad?

7

Ich bin Reverse Engineering einer Transportvisualisierungs-App. Ich muss den Spielraum für den Ursprung ihres Datenfeeds herausfinden. Insbesondere was XY 0,0 ist. Die einzigen Formeln, die ich gefunden habe, berechnen die Entfernung zwischen zwei Punkten oder die Position eines Lagers / Entfernung.

Sie verwenden das XY, um eine Karte in einer sehr alten Anwendung anzuzeigen. Das XY ist in FÜSSE.

Ich habe diese Koordinaten:

%Vor%

Ich muss herausfinden, was der Längen- und Breitengrad von x=0, y=0 ist und was die Formel wäre, um das herauszufinden.

Sie haben zwei Daten-Feeds, einer ist aktueller als der andere. Der Feed mit den aktuellsten Daten enthält NICHT den Breitengrad, den Längengrad, sondern nur XY. Ich versuche zu extrapolieren, basierend auf ihrem weniger aktuellen, aber informativeren (inkl. Lat, lon) Daten-Feed, was 0,0 ist, so kann ich einfach ihre XY-Koordinaten des (aktuelleren) Daten-Feeds in Breiten- und Längengrad umwandeln.

    
rwl4 04.03.2009, 05:55
quelle

6 Antworten

5

Fragen Sie sie, welches Koordinatensystem sie verwenden! (oder wenn Sie das Dataset von einer Datenbank erhalten haben, schauen Sie sich die Metadaten für das Dataset an und es sollte Ihnen sagen. Ansonsten wäre ich skeptisch gegenüber seinem Wert)

Wahrscheinlich ist dies eines der Koordinatensysteme der Zustandsebene . Sie sind für lokalisierte Bereiche der Erde (ähnlich wie UTM ) und werden häufig für Vermessungen verwendet.

Sie können CORPSCON (oder andere GIS-Programme; ExpertGPS wird dies tun, wenn Sie das GIS Option Pack haben, aber es ist nicht kostenlos.Ich vergesse, ob GPSBabel führt eine Konvertierung durch, um zwischen lat / long und beliebigen Koordinatensystemen der Zustandsebene zu konvertieren. Sie müssen auch wissen, welches Datum die Koordinaten sind. WGS84 und NAD83 sind sehr nah, aber NAD27 ist anders.

    
Jason S 04.03.2009, 14:02
quelle
9

Wenn Sie sich die ersten zwei Datenzeilen anschauen und den Breitengrad

subtrahieren %Vor%

Es gibt 60 Seemeilen pro Breitengrad und 6076 Fuß pro Seemeile.

%Vor%

Subtrahieren der beiden Y-Werte:

%Vor%

In der Tat scheint das zu beweisen, dass die X- und Y-Werte in Fuß sind.

Wenn Sie einen der Y-Werte verwenden und zurück in Grad konvertieren, zum Beispiel

%Vor%

Wenn Sie diese Werte von den Breiten von (47.70 und 47.77) subtrahieren, erhalten Sie sehr nahe bei genau 47 Grad, was Ihr y = 0 Punkt sein sollte.

Für die Länge ist ein Grad 60 Seemeilen am Äquator und 0 Meilen an den Polen. Die Anzahl der Meilen pro Grad muss also mit dem Kosinus der geografischen Breite multipliziert werden, also ungefähr cos (47 Grad) oder .68. Also statt 6076 nm pro Grad etwa 4145 nm.

Also für die X-Werte,

%Vor%

Diese X-Zahlen erhöhen sich, wenn der Breitengrad zunimmt (weniger negativ), daher sollten Sie, glaube ich, 5,1 Grad hinzufügen, was bedeutet, dass der X-Basispunkt etwa

ist %Vor%

Das ist ungefähr die Position von Spokane WA.

Also gegeben X = 1280532, Y = 211374

%Vor%

Dies entspricht in etwa den angegebenen Daten 47.57 und -122.29

Die Varianz kann auf verschiedene Projektionen zurückzuführen sein - das X, Y-System kann eine "abgeflachte" Projektion im Gegensatz zu lat / long sein, die für eine sphärische Projektion gilt? Um genau zu sein, brauchen Sie vielleicht noch mehr Mathematik oder diese Open-Source-Bibliothek:)

Diese Frage kann auch hilfreich sein, sie enthält einen Code zum Berechnen von Großkreisdistanzen:

Berechnen Sie den Abstand zwischen zwei Breiten -Langzeitpunkte? (Haversine Formel)

    
MikeW 04.03.2009 07:24
quelle
6

Es gibt viele verschiedene Koordinatensysteme. Sie müssen herausfinden, was die Koordinatensysteme sowohl für die Lat / Lons (z. B. WGS84 usw.) als auch für X / Ys sind (z. B. wahrscheinlich eine Art projiziertes System).

Sobald Sie diese Informationen haben, gibt es mehrere Tools, mit denen Sie Konvertierungen und Manipulationen vornehmen können. Ein Beispiel (einer freien Open-Source-Codierungsbibliothek) ist proj4 .

    
luapyad 04.03.2009 06:23
quelle
1

Sie haben bereits gute Ratschläge für Koordinatensysteme erhalten, also werde ich einfach mit der Bibliothek, die ich in der Vergangenheit mit großem Erfolg verwendet habe, mitspielen.

Geotrans ist für die Verwendung durch das US-Verteidigungsministerium zugelassen, so dass Sie sicher sein können, dass es gut getestet ist. Sie können es von hier aus abrufen:

%Vor%

Das ist vielleicht nicht der richtige Link, da diese Seite über die Anwendung spricht, nicht über die Bibliothek. Ich erwarte, dass die Bibliothek im Entwicklerpaket ist. Lizenzbedingungen waren sehr liberal aus dem Gedächtnis, aber stellen Sie sicher, dass Sie die Bedingungen überprüfen, bevor Sie es kommerziell verwenden.

Bearbeiten:

Eine interessante Diskussion zur Geotrans-Lizenzierung finden Sie hier:

%Vor%     
Daniel Paull 25.06.2009 04:58
quelle
0

Hier habe ich das gesagt:

In Java würde ich den OpenMap-Konverter verwenden vom Ausdruck eines Punkts in UTM zu einem Punkt, der Breiten- und Längengrad verwendet (unter der Annahme eines WGS-84-Ellipsoids, das am häufigsten in GPS verwendet wird).

OpenMap ist Open Source und ich poste einen Link zu ihrer Download-Seite, aber sie haben ein kurzes Lizenz-Skript auf dem Weg. Um nicht unhöflich zu sein, werde ich keine tiefe Verbindung eingehen. Navigieren Sie stattdessen zu ihrer Startseite und klicken Sie auf Downloads .

Das sollte entweder Ihr Problem direkt lösen oder Sie zumindest auf einen nützlichen Algorithmus hinweisen.

    
Bob Cross 15.04.2009 20:41
quelle
0

Ich habe Brenor Bropheys gPoint PHP-Klasse verwendet, um dies bei einigen Gelegenheiten zu tun. Solide Ergebnisse, GPL-Code und einfach bereitgestellt. Empfohlen.

    
Cruachan 15.04.2009 20:47
quelle

Tags und Links