Який найкращий спосіб програмного перетворення між WKT і рядком Proj4?


14

Деякі файли форм мають пов'язаний з ним файл .prj, а файл .prj містить інформацію про проекцію файлу форми у форматі WKT. Іноді мені потрібно перетворити WKT в рядок proj4, а іноді мені потрібно перетворити його назад.

Чи є якась готова бібліотека для цього?

Відповіді:


12

Частина просторових довідників OGR в GDAL повинна зробити свою справу. capooti дав чудову відповідь на ще одне запитання, яке демонструє, як перетворити переклад із файлу форм у WKT. Ви також можете перевірити посилання на клас . Реверс просто:

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

У когось є рішення, яке не потребує osgeo, яке, здається, не працює для Python 3?
Дан Нгуен

ОП запитав про Proj4. Ви мали ExportToProj4()на увазі замість цього останній рядок?
astrojuanlu

2

Ви також можете використовувати 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

Я не знаю жодної бібліотеки, але ви можете використовувати цей сайт, щоб отримати переклади: http://spatialreference.org/

EDIT: Я знайшов скрипт python, який працює з прив’язками ogr python для цього. Ось воно .


дякую, але мені це потрібно робити програмно.
Cui Pengfei 崔鹏飞

1
Після деякого googling :pacereference.org також працює від GDAL і використовує той самий шлях коду (більш-менш), здається.
Дан С.

Це цікаво
Пабло

0

Мені потрібно програмно перетворити на власну проекцію на основі рядка 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)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.