Qual è il modo migliore per convertire a livello di codice tra la stringa WKT e Proj4?


14

Ad alcuni shapefile è associato un file .prj e il file .prj contiene le informazioni di proiezione del file di forma nel formato di WKT. A volte ho bisogno di convertire WKT in stringa proj4, a volte ho bisogno di riconvertirlo.

Esiste una libreria già pronta per farlo?

Risposte:


12

La parte di riferimento spaziale OGR di GDAL dovrebbe fare il trucco. capooti ha fornito un'ottima risposta a un'altra domanda che dimostra come eseguire la traduzione da uno shapefile a WKT. Potresti anche voler consultare il riferimento alla classe . Il contrario è semplicemente:

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

Qualcuno ha una soluzione che non richiede osgeo, che non sembra funzionare per Python 3?
Dan Nguyen,

OP ha chiesto di Proj4. Intendi ExportToProj4()invece nell'ultima riga?
astrojuanlu,

2

Puoi anche usare 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

Non conosco nessuna biblioteca, ma è possibile utilizzare questo sito per ottenere le traduzioni: http://spatialreference.org/

EDIT: ho trovato uno script Python che funziona con i collegamenti OGR Python per farlo. Eccolo .


grazie, ma devo farlo programmaticamente.
Cui Pengfei 崔鹏飞

1
Dopo aver cercato su Google: spatialreference.org è anche alimentato da GDAL e sembra che usi lo stesso percorso di codice (più o meno).
Dan S.

È interessante
Pablo,

0

Devo trasformarmi pragrammaticamente in proiezione personalizzata basata sulla stringa proj4text, così usata

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)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.