¿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.