Jaki jest najlepszy sposób na programową konwersję między ciągiem WKT i Proj4?

14

Niektóre pliki shapefile są powiązane z plikiem .prj, a plik .prj zawiera informacje o projekcji pliku shapefile w formacie WKT. Czasami muszę przekonwertować WKT na ciąg proj4, a czasem muszę go przekonwertować.

Czy jest na to gotowa biblioteka?

Cui Pengfei 崔鹏飞
źródło

Odpowiedzi:

12

Część OGD Spatial Reference GDAL powinna załatwić sprawę. capooti dostarczył doskonałą odpowiedź na inne pytanie, które pokazuje, jak wykonać tłumaczenie z pliku shapefile na WKT. Możesz także sprawdzić odwołanie do klasy . Przeciwnie jest po prostu:

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()
scw
źródło
Czy ktoś ma rozwiązanie, które nie wymaga osgeo, które nie działa w Pythonie 3?
Dan Nguyen
OP zapytał o Proj4. Miałeś na myśli ExportToProj4()zamiast tego w ostatnim wierszu?
astrojuanlu
2

Możesz także użyć 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
astrojuanlu
źródło
1

Nie znam żadnej biblioteki, ale możesz skorzystać z tej witryny, aby uzyskać tłumaczenia: http://spatialreference.org/

EDYCJA: Znalazłem w tym celu skrypt Pythona, który współpracuje z powiązaniami ogr Python. Oto jest .

Pablo
źródło
dzięki, ale muszę to zrobić programowo.
Cui Pengfei -
1
Po pewnym googlingu: spatialreference.org jest również zasilany przez GDAL i wydaje się, że używa tej samej ścieżki kodu (mniej więcej).
Dan S.
To ciekawe
Pablo,
0

Muszę przekształcić się pragrammatycznie w niestandardową projekcję opartą na tak używanym ciągu proj4text

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)

Jane
źródło