Apakah ada cara mudah untuk mengubah objek Shapely (yaitu, Polygons dan MultiPolygons) dari satu proyeksi ke yang lain tanpa harus menggali sekitar dan mengekstrak koordinat dengan tangan?
Sebenarnya, saya bahkan tidak peduli apakah mereka objek Shapely pada titik ini, saya hanya ingin melewatkan fitur dan proyeksi, dan mendapatkan serangkaian fitur yang diproyeksikan kembali.
Apakah fungsi semacam ini ada, atau haruskah kode tangan?
python
coordinate-system
shapely
pyproj
Chris Fonnesbeck
sumber
sumber
fiona.transform
terlihat memiliki apa yang Anda butuhkan.Jawaban:
Sementara rupanya Shapely tidak memahami sistem koordinat,
shapely.ops.transform()
dapat melakukannya bersamapyproj
. Jika Andapyproj.Proj
dapat memahami kedua sistem koordinat Anda, maka itu dapat dibuat menjadi fungsi yang dapat ditransformasi secara rupawan.Dari dokumen indah :
sumber
itertools
modul yang dapat Anda lakukanproject = lambda x, y: pyproj.transform(pyproj.Proj(init='epsg:4326'), pyproj.Proj(init='epsg:26913'), x, y)
lalug2 = transform(project, g1)
.Transformer
. Lihat di sini: pyproj4.github.io/pyproj/stable/gotchas.htmlMeskipun bukan solusi Shapely, menggunakan GeoPandas memungkinkan proyeksi yang relatif mudah. Misalnya, jika kita ingin mengonversi shapefile ke ESPG 4326:
sumber
Jika Anda menggunakan pyproj2, jauh lebih mudah menggunakan Transformer. Ini sebuah contoh:
Ini juga jauh lebih cepat, karena pyproj tidak perlu membuat ulang proyeksi untuk setiap titik.
sumber