Python, pustaka rupawan: apakah mungkin untuk melakukan operasi affine pada poligon bentuk?


11

Saya mencoba membuat persegi panjang yang diputar dalam koordinat lat / lon.

Pada dasarnya, saya memiliki koordinat pusat dan sudut rotasi di sekitar pusat.

Apakah mungkin menggunakan, rupawan atau gdal, atau sesuatu yang lain?

Jawaban:


11

Rupawan ini affinitymodul mendukung transformasi affine pada geometri apapun, misalnya:

from shapely import affinity
from shapely.geometry import LineString

# Example geometry
line = LineString([(1, 3), (1, 1), (4, 1)])

# Rotate 30 degrees CCW from origin at the center of bbox
line_rot_center = affinity.rotate(line, 30, 'center')

# Rotate from origin at (1, 1)
line_rot_11 = affinity.rotate(line, 30, (1, 1))

Sayangnya, rotasi dalam (lat, lon) tidak dilakukan dengan transformasi affine. Anda harus memproyeksikan data dan memutar koordinat yang diproyeksikan atau melakukan rotasi bola.
whuber

1
Oh benar, saya melewatkan bagian (lat, lon) dari pertanyaan. Saya belum pernah melihat fungsi transformasi affine dibangun untuk input geografis, jadi tips yang Anda berikan sangat penting.
Mike T

Sejak v1.2.17, Shapely telah memiliki transformasi affine, walaupun belum didokumentasikan - github.com/Toblerity/Shapely/blob/master/shapely/affinity.py
Alex L

Lihat juga blog penulis: sgillies.net/blog/1168/shapely-1-2-17
Alex L

1
@AlexL type help(shapely.affinity). Sebenarnya saya hampir selesai mempersiapkan pembaruan manual untuk modul.
Mike T

2

Sextante memiliki alat yang mungkin berfungsi. Itu disebut Transform, di bawah "Alat untuk lapisan Vektor". Untuk menjalankan perintah, tentukan sudut, titik jangkar, faktor skala dan terjemahan. Sextante adalah ekstensi untuk gvsig, openjump, udig, lainnya. Ini juga berjalan dari baris perintah.


2

Saya tidak melihat fitur apa pun di Python atau Shapely untuk melakukannya tetapi Anda dapat melakukan ini dengan JTS (Java Topology Suite) http://tsusiatsoftware.net/jts/main.html (GEOS, lib yang digunakan oleh Shapely adalah port JTS tetapi JTS memiliki lebih banyak fungsi)

Anda dapat mengunduh soft di sini http://sourceforge.net/projects/jts-topo-suite/ dan meluncurkan testbuilder.sh atau testbuilder.bat tergantung pada OS Anda untuk bermain untuk menemukan. Setelah Anda mengerti, dasar-dasar Anda harus melakukan hal yang sama tanpa GUI tetapi dengan pemrograman Java saja.

http://geoscript.org/ dapat membantu Anda membuat lem antara kode python dan java (karena satu implementasi menggunakan Jython)



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.