lat/lon utm à lat/lon est extrêmement défectueux, comment venir?
J'ai essayé ce qui suit,
entrée: lat/lon de données
alors, je vais calculer une zone autour d'elle par, disons 50 m, + /- 50 m d'abscisse/ordonnée valeur.
Maintenant, je reconvertir à lat/lon et avec un script:
http://robotics.ai.uiuc.edu/~hyoon24/LatLongUTMconversion.py - Je obtenir un résultat que tout ne peut pas être, lon avant est d'environ 7, par la suite autour de 2.
zone, easting, northing = LLtoUTM(23, location.get_lat(), location.get_lon())
topUTM = northing + error
bottomUTM = northing - error
leftUTM = easting - error
rightUTM = easting + error
left, top = UTMtoLL(23, leftUTM, topUTM, zone)
Est l'erreur dans mon code, ou peut-être le script défectueux?
J'ai donc essayé d'utiliser pyproj, juste lat/lon utm à lat/lon à voir ce qui se passe
>>> p = pyproj.Proj(proj='utm', zone=32, ellps='WGS84')
>>> p
<pyproj.Proj object at 0x7ff9b8487dd0>
>>> x,y = p(47.9941214, 7.8509671)
>>> print x,y
5159550.36822 1114087.43925
>>> print p(x,y,inverse=True)
(47.971558538495991, 7.8546573140162605)
Et ici, il n'est pas très loin, comme avec le script ci-dessus, mais il semble encore assez fortement incorrect de ne pas être en mesure de l'utiliser. Comment venir? Que puis-je faire pour obtenir plus de résultats exacts?
EDIT:
J'ai couru test() et tous les tests passés.
en epsg fichier il n'y a pas une telle chose. Le plus proche que j'ai trouvé est celle-ci:
<32632> +proj=utm +zone=32 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <>
pas tmerc. Aussi de Quoi aurais-je besoin de passer le towgs84 comme paramètres? Ceux ci-dessus?
OriginalL'auteur luh | 2011-07-21
Vous devez vous connecter pour publier un commentaire.
J'ai créé une petite UTM bibliothèque de conversion pour Python la semaine dernière et l'a envoyé à l'Python Package Index: http://pypi.python.org/pypi/utm
Je l'ai comparé à l'aide de pyproj et il est plus rapide et plus précis. Compte tenu de vos données de l'échantillon, c'est le résultat:
Mise à JOUR: Richards réponse ci-dessous décrit la véritable solution à ce problème.
Merci pour le shout-out, @TBieniek!
Merci beaucoup pour cette mise en œuvre, absolument précieux!
Est de l'utm.to_latlon broadcastable sur un tableau numpy?
OriginalL'auteur TBieniek
L'erreur est dans votre code.
Tout d'abord, le PyProj question inscrite à l'une des autres réponses, c'est vrai. Vous devriez vérifier votre fichier epsg et assurez-vous qu'il comprend la ligne
Note le
towgs84
paramètre.Votre problème avec PyProj découle de la mauvaise utilisation de la projection de commande.
Si nous prenons 47.9941214 N, 7.8509671 E et se convertir à l'UTM nous obtenons de la Zone 32, 414278 Abscisse, 5316286 Ordonnée.
Vous effectuez les opérations suivantes PyProj opérations:
Mais, si l'on consulte l'PyProj la documentation, nous voyons ce qui suit:
Essayons de l'exécution de l'OP PyProj opérations à nouveau, mais changer l'ordre de la lon/lat arguments:
L'opération inverse de lui-même (presque) parfaitement!
Pour répondre à la première partie de votre question, si vous regardez dans
http://robotics.ai.uiuc.edu/~hyoon24/LatLongUTMconversion.py
à la définition deUTMtoLL
, vous trouverez les éléments suivants:Encore vous utilisez
UTMtoLL(23, leftUTM, topUTM, zone)
où leftUTM est une Abscisse et topUTM est Ordonnée.Par conséquent, dans le cas de votre premier script et PyProj, vous avez utilisé le mauvais ordre des arguments.
C'est un bon rappel pour toujours double (ou triple) vérifier votre travail avant de suggérer que quelqu'un d'autre est mauvais. Cela dit, Python documentation est pas le plus grand et PyProj de documentation dans cette instance est cryptique au mieux. Une belle basé sur le web explication de cette commande et illustrés par des exemples de son utilisation aurait probablement empêché l'angoisse de votre part.
OriginalL'auteur Richard
Votre problème avec pyProj sonne comme celui décrit ici:
http://code.google.com/p/pyproj/issues/detail?id=3
qui est résolu:
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!
Vérifiez que le fil si vous souhaitez continuer à utiliser pyproj.
Aussi, ne l'
test()
fonction du module de travail? Avez-vous essayé de tout les scripts qui vont avec dans letest
répertoire?OriginalL'auteur agf
Je n'ai aucun problème avec pyproj, essayez le code suivant
OriginalL'auteur Ting On Chan