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.
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.
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)
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 .
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%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.
Ich habe Brenor Bropheys gPoint PHP-Klasse verwendet, um dies bei einigen Gelegenheiten zu tun. Solide Ergebnisse, GPL-Code und einfach bereitgestellt. Empfohlen.
Tags und Links latitude-longitude gis