Cách tốt nhất để chuyển đổi theo chương trình giữa chuỗi WKT và Proj4 là gì?


14

Một số shapefile có tệp .prj được liên kết với nó và tệp .prj chứa thông tin chiếu của shapefile theo định dạng của WKT. Đôi khi tôi cần chuyển đổi chuỗi WKT thành chuỗi proj4 và đôi khi tôi cần chuyển đổi lại.

Có thư viện làm sẵn nào để làm việc này không?

Câu trả lời:


12

Phần tham chiếu không gian OGR của GDAL nên thực hiện thủ thuật. capooti đã cung cấp một câu trả lời tuyệt vời cho một câu hỏi khác trong đó trình bày cách làm dịch chuyển bản dịch từ một shapefile sang WKT. Bạn cũng có thể muốn kiểm tra tài liệu tham khảo lớp . Điều ngược lại chỉ đơn giản là:

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

Bất cứ ai cũng có một giải pháp không yêu cầu osgeo, dường như không hoạt động với Python 3?
Đan Nguyên

OP hỏi về Proj4. Ý bạn là ExportToProj4()ở dòng cuối cùng thay thế?
astrojuanlu

2

Bạn cũng có thể sử dụng 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

Tôi không biết bất kỳ thư viện nào, nhưng bạn có thể sử dụng trang này để nhận bản dịch: http://spatialreference.org/

EDIT: Tôi đã tìm thấy một kịch bản python hoạt động với các ràng buộc python ogr để làm điều đó. Ở đây nó là .


cảm ơn, nhưng tôi cần phải làm điều đó theo chương trình
Cui Pengfei

1
Sau khi một số googling: spatialreference.org cũng được cung cấp bởi GDAL và sử dụng cùng một đường dẫn mã (ít nhiều), có vẻ như vậy.
Dan S.

Điều đó thật thú vị
Pablo

0

Tôi cần chuyển đổi theo sơ đồ sang phép chiếu tùy chỉnh dựa trên chuỗi proj4text, vì vậy được sử dụng

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)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.