Suite

Comment puis-je convertir des points dans EPSG:2956 en EPSG:4326 avec pyproj ?

Comment puis-je convertir des points dans EPSG:2956 en EPSG:4326 avec pyproj ?


J'ai quelques points dans EPSG:4326

-110.28879750 64.46310187 405.49938863 -110.28879359 64.46310086 405.45967110 -110.28880175 64.46310446 405.93823604 -110.28880245 64.46310258 405.48060850 -110.28880636 64.46310359 405.52032604 -110.28880940 64.46310630 405.84055342 -110.29016983 64.46359000 397.06282465 -110.29016273 64.46359705 397.17277374 -110.29016977 64.46359475 397.00624992 -110.29016760 64.46359646 397.05006178

et points correspondants dans EPSG:2956

534209.97079435 7148811.23661946 405.66139508 534210.15978267 7148811.12655780 405.62167763 534209.76281723 7148811.52287611 406.10024237 534209.73147933 7148811.31341930 405.64261487 534209.54249101 7148811.42348096 405.68233234 534209.39265980 7148811.72409217 406.00255961 534143.35502320 7148864.89322788 397.22480162 534143.68792246 7148865.68172274 397.33475061 534143.35204638 7148865.42154142 397.16822677 534143.45456271 7148865.61384061 397.21203861

mais si je convertis un EPSG:4326 en un EPSG:2956 poing à l'aide de pyproj, j'obtiens un résultat différent?

import pyproj p1 = pyproj.Proj("+init=EPSG:4326") p2 = pyproj.Proj("+init=EPSG:2956") # premiers points epsg4326_point = (-110.28879750,64.46310187,405.49938863) epsg2956_point = (534209.9707944) 7148811.23661946,405.66139508) print "Point source", epsg4326_point print "Point cible", epsg2956_point print 'Résultat converti manuellement (différent) : ', pyproj.transform(p1, p2, *epsg4326_point)

Vous étiez en train de convertir depuis EPSG:4917 (ITRF96), et non EPSG:4326 (WGS84).

Consultez l'utilitaire en ligne TRX de RNCan pour effectuer cette conversion :

Malheureusement, vous ne pouvez pas utiliser PROJ.4 pour convertir les projections ITRF ; voir ticket d'amélioration #154.

Si vous utilisiez WGS84 à la place de ITRF96, vos étapes avec pyproj se sont bien déroulées. Cependant, si vous avez besoin d'ITRF96, vous aurez besoin d'autres outils jusqu'à ce que PROJ.4 soit mis à jour. Ou vous pouvez appliquer une transformation affine après, si votre zone est petite, pour les décaler selon ITRF96.


NAD83(CSRS) (qui est basé sur ITRF96(1997.0)) n'est pas une simple transformation loin de WGS84. Il est ancré à la plaque nord-américaine, qui tourne dans le sens inverse des aiguilles d'une montre et se soulève - à certains endroits rapidement - en raison du rebond isostatique. Proj n'en sait rien. Il peut passer de géographique à géocentrique et UTM, et il peut passer de NAD27 à NAD83 en utilisant des décalages interpolés, mais il ne peut pas incorporer la grille de vitesse comme TRX (voir la réponse de Mike T).

Proj ne fait rien non plus sur les différences subtiles entre les différentes versions d'ITRF et de WGS84. Il n'y a pas de paramètres de transformation officiels entre chaque itération de l'ITRF et du WGS84, mais le WGS84 d'origine était assez différent, et il y a une différence entre chaque itération. Proj, cependant, ne fait pas vraiment la distinction.

Cependant, il y a une transformation dans les fichiers datum_shift.csv (1515) qui donne des paramètres pour NAD83 à ITRF96 (1997.0) et autres, mais ceux-ci ne sont pas sélectionnés par défaut, et cela ne résoudrait pas les problèmes tectoniques/isostatiques de toute façon.

ETA : Je ne sais pas si Photoscan implémente l'ajustement de la grille de vitesse (les grilles sont disponibles gratuitement avec la version de bureau de TRX), et si cela explique la différence que vous voyez.