¿Cuál es la mejor manera de convertir mediante programación entre WKT y Proj4 string?


14

Algunos archivos de forma tienen un archivo .prj asociado, y el archivo .prj contiene la información de proyección del archivo de forma en el formato de WKT. A veces necesito convertir WKT a una cadena proj4, y a veces necesito volver a convertirlo.

¿Hay alguna biblioteca preparada para hacer esto?

Respuestas:


12

La parte de referencia espacial de OGR de GDAL debería hacer el truco. capooti proporcionó una excelente respuesta a otra pregunta que demuestra cómo realizar la traducción de un archivo shape a WKT. También puede consultar la referencia de clase . Lo contrario es simplemente:

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()

¿Alguien tiene una solución que no requiere osgeo, que no parece funcionar para Python 3?
Dan Nguyen

OP preguntó sobre Proj4. ¿Querías decir ExportToProj4()en la última línea en su lugar?
astrojuanlu

2

También puedes usar 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

No conozco ninguna biblioteca, pero puede usar este sitio para obtener las traducciones: http://spatialreference.org/

EDITAR: Encontré un script de python que funciona con enlaces ogr python para hacer eso. Aquí se trata .


gracias, pero necesito hacer eso programáticamente.
Cui Pengfei 崔鹏飞

1
Después de buscar en Google: spatialreference.org también funciona con GDAL y, al parecer, utiliza la misma ruta de código (más o menos).
Dan S.

Eso es interesante
Pablo

0

Necesito transformar pragramáticamente a una proyección personalizada basada en la cadena proj4text, así utilizada

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)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.