Apa cara terbaik untuk secara terprogram mengkonversi antara string WKT dan Proj4?


14

Beberapa shapefile memiliki file .prj yang terkait dengannya, dan file .prj berisi info proyeksi dari shapefile dalam format WKT. Terkadang saya perlu mengonversi string WKT ke proj4, dan terkadang saya perlu mengubahnya kembali.

Apakah ada perpustakaan yang sudah jadi untuk melakukan ini?

Jawaban:


12

Bagian Referensi Tata Ruang OGR dari GDAL harus melakukan trik. capooti memberikan jawaban yang sangat baik untuk pertanyaan lain yang menunjukkan bagaimana cara menerjemahkan terjemahan dari shapefile ke WKT. Anda mungkin juga ingin memeriksa referensi kelas . Yang sebaliknya hanyalah:

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

Adakah yang punya solusi yang tidak diperlukan osgeo, yang sepertinya tidak berfungsi untuk Python 3?
Dan Nguyen

OP bertanya tentang Proj4. Apakah yang Anda maksud ExportToProj4()di baris terakhir sebagai gantinya?
astrojuanlu

2

Anda juga dapat menggunakan 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

Saya tidak tahu perpustakaan apa pun, tetapi Anda dapat menggunakan situs ini untuk mendapatkan terjemahan: http://spatialreference.org/

EDIT: Saya menemukan skrip python yang berfungsi dengan ogr python binding untuk melakukan itu. Ini dia .


terima kasih, tetapi saya harus melakukan itu secara terprogram.
Cui Pengfei 崔鹏飞

1
Setelah beberapa googling: spatialreference.org juga didukung oleh GDAL & menggunakan jalur kode yang sama (kurang lebih), tampaknya.
Dan S.

Itu menarik
Pablo

0

Saya perlu pragrammatically mentransformasikan ke proyeksi kustom berdasarkan string proj4text, jadi digunakan

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)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.