Quelle est la meilleure façon de convertir par programme entre une chaîne WKT et Proj4?


14

Certains fichiers de formes ont un fichier .prj associé et le fichier .prj contient les informations de projection du fichier de formes au format WKT. Parfois, je dois convertir WKT en chaîne proj4, et parfois je dois le reconvertir.

Existe-t-il une bibliothèque prête à l'emploi pour ce faire?

Réponses:


12

La partie OGR Spatial Reference de GDAL devrait faire l'affaire. capooti a fourni une excellente réponse à une autre question qui montre comment effectuer la traduction d'un fichier de formes vers WKT. Vous pouvez également consulter la référence de la classe . L'inverse est simplement:

from osgeo import osr

srs = osr.SpatialReference()
wkt_text = 'GEOGCS["GCS_WGS_1984",DATUM["WGS_1984",' \
           'SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],'\
           'UNIT["Degree",0.017453292519943295]]'
# Imports WKT to Spatial Reference Object
srs.ImportFromWkt(wkt_text)
srs.MorphToESRI() # converts the WKT to an ESRI-compatible format
print "ESRI compatible WKT for use as .prj:" % srs.ExportToWkt()

Quelqu'un a une solution qui ne nécessite pas osgeo, qui ne semble pas fonctionner pour Python 3?
Dan Nguyen

OP a posé des questions sur Proj4. Voulez-vous dire ExportToProj4()à la dernière ligne à la place?
astrojuanlu

2

Vous pouvez également utiliser PyCRS :

import pycrs

print(pycrs.parser.from_esri_wkt(wkt_text).to_proj4())
# +proj=longlat +ellps=WGS84 +a=6378137.0 +f=298.257223563 +pm=0.0  +no_defs

1

Je ne connais aucune bibliothèque, mais vous pouvez utiliser ce site pour obtenir les traductions: http://spatialreference.org/

EDIT: J'ai trouvé un script python qui fonctionne avec les liaisons python ogr pour ce faire. Ça y est .


merci, mais je dois le faire par programme.
Cui Pengfei 崔鹏飞

1
Après quelques recherches sur Google: spatialreference.org est également alimenté par GDAL et utilise le même chemin de code (plus ou moins), semble-t-il.
Dan S.

C'est intéressant
Pablo

0

J'ai besoin de transformer pragrammatiquement une projection personnalisée basée sur une chaîne proj4text, donc utilisée

projection = '+proj=lcc +lat_1=53 +lat_2=70 +lat_0=0 +lon_0=136 +x_0=0 +y_0=0 +ellps=intl +units=m +no_defs'

source = osr.SpatialReference() source.ImportFromEPSG(4326) target = osr.SpatialReference() target.ImportFromProj4(projection) transform = osr.CoordinateTransformation(source, target)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.