lat / lon zu utm zu lat / lon ist extrem fehlerhaft, wie kommt es?

8

Ich habe folgendes versucht, Eingabe: lat / lon Daten Dann berechne ich eine Box um 50 m, also +/- 50 m auf Ost / Nordwert.

Jetzt wandle ich es zurück in lat / lon und mit einem Skript:

Ссылка Ich bekomme ein Ergebnis, das einfach nicht sein kann, lange bevor es um 7 ist, danach um 2.

%Vor%

Ist der Fehler in meinem Code oder ist das Skript fehlerhaft?

Also habe ich versucht, pyproj, nur lat / lon zu verwenden, um lat / lon zu sehen, was passiert

%Vor%

Und hier ist es nicht so weit weg wie bei dem Skript von oben, aber es scheint immer noch stark genug zu sein, um es nicht benutzen zu können. Woher? Was kann ich tun, um genauere Ergebnisse zu erhalten?

BEARBEITEN:

Ich habe test () ausgeführt und alle Tests bestanden.

in der epsg-Datei gibt es keine solche Sache. Das nächste, was ich gefunden habe, war das:

%Vor%

kein Tmerc. Auch was würde ich als Parameter die Towgs84 übergeben müssen? Die oben genannten?

    
luh 21.07.2011, 15:07
quelle

4 Antworten

23

Ich habe letzte Woche eine kleine UTM-Konvertierungsbibliothek für Python erstellt und in den Python-Paket-Index hochgeladen: Ссылка

Ich habe es mit der Verwendung von pyproj verglichen und es ist schneller und genauer. Angesichts Ihrer Beispieldaten ist dies das Ergebnis:

%Vor%

UPDATE: Richards Antwort unten beschreibt die wirkliche Lösung für dieses Problem.

>     
TBieniek 05.01.2013 20:23
quelle
17

Der Fehler ist in Ihrem Code.

Zunächst einmal ist das PyProj-Problem in einer der anderen Antworten real. Sie sollten Ihre epsg-Datei überprüfen und sicherstellen, dass sie die Zeile

enthält %Vor%

Beachten Sie den Parameter towgs84 .

Ihr Problem mit PyProj rührt von der falschen Verwendung des Projektionsbefehls her.

Wenn wir 47,9941214N, 7,8509671E und zu UTM konvertieren, erhalten wir Zone 32, 414278 Easting, 5316286 Nord.

Sie führen die folgenden PyProj-Operationen aus:

%Vor%

Wenn wir jedoch die PyProj Dokumentation konsultieren, wir sehen folgendes:

  

Aufruf einer Proj-Klasseninstanz mit den Argumenten lon, lat wird konvertiert   lon / lat (in Grad) zu x / y native Projektionskoordinaten (in   Meter).

Lassen Sie uns versuchen, die PyProj-Operationen des OPs erneut auszuführen, aber wechseln Sie die Reihenfolge der lon / lat-Argumente:

%Vor%

Die Operation invertiert sich selbst (ziemlich) perfekt!

Um den ersten Teil Ihrer Frage zu beantworten, finden Sie in http://robotics.ai.uiuc.edu/~hyoon24/LatLongUTMconversion.py in der Definition von UTMtoLL Folgendes:

%Vor%

Sie verwenden jedoch UTMtoLL(23, leftUTM, topUTM, zone) , wobei leftUTM ein Easting und topUTM ein Northing ist.

Daher haben Sie im Falle sowohl Ihres ersten Skripts als auch von PyProj die falsche Reihenfolge der Argumente verwendet.

Es ist eine gute Erinnerung, Ihre Arbeit immer doppelt (oder dreifach) zu überprüfen, bevor Sie vorschlagen, dass jemand anders falsch liegt. Das heißt, Pythons Dokumentation ist nicht das Größte und PyProjs Dokumentation ist in diesem Fall bestenfalls kryptisch. Eine nette Web-basierte Erklärung dieses Befehls und die Verwendung von Anwendungsbeispielen hätten wahrscheinlich Ihre Angst verhindert.

    
Richard 04.09.2013 18:10
quelle
2

Ihr Problem mit pyProj klingt genauso wie das hier beschriebene:

Ссылка

was gelöst ist:

solved! in epsg file there must be

<2392> +proj=tmerc +lat_0=0 +lon_0=24 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=-90.7,-106.1,-119.2,4.09,0.218,-1.05,1.37 +units=m +no_defs no_defs <>

note the towgs84 parameter!

Überprüfen Sie, ob der Thread nicht mehr verwendet wird, wenn Sie pyproj weiterhin verwenden möchten.

Funktioniert die Funktion test() des Moduls? Haben Sie eines der Skripts aus dem Verzeichnis test ausprobiert?

    
agf 21.07.2011 15:28
quelle
1

Ich habe kein Problem mit pyproj, versuchen Sie den folgenden Code

%Vor%     
Ting On Chan 14.05.2017 22:01
quelle

Tags und Links