Saya ingin memutar satu set titik vektor dalam QGIS sejumlah derajat sembarang di sekitar titik pusat (atau titik sembarang).
Ini mirip dengan pertanyaan terbaru tentang membuat kisi - kisi biasa ; disarankan di sana untuk menggunakan alat "Affine Transformation" (yang saya asumsikan sebagai plugin) untuk memutar atau menggeser kotak titik sudut atau jarak yang sewenang-wenang. Saya curiga saya tidak mengerti cara kerjanya, dan belum bisa membuatnya bekerja.
Saya membuat kisi poin reguler di QGIS, dan memastikan bahwa zona UTM diatur dengan benar untuk kedua layer dan proyek, aktifkan pengeditan untuk layer, lalu buka dialog plugin (qgsAffine):
Saya memilih 'seluruh lapisan' dan kemudian, ingin memutar seluruh bidang titik dengan 15 °, menempatkan 15 di kedua kotak 'rotasi' (yang mungkin di mana ada masalah). Hasil operasi dalam memutar titik di suatu tempat di luar planet!
Apakah ini alat yang tepat untuk pekerjaan itu? Saya ingin memutar satu set poin tentang pusat bersama mereka, idealnya.
Pembaruan : qgsAffine hanya sebuah pemikiran; jika kita bisa melakukan ini dengan alat QGIS apa pun, aku akan senang!
Pembaruan 2 : qgsAffine dapat digunakan JIKA Anda tahu nomor yang tepat untuk dihubungkan (lihat jawaban di bawah, terima kasih Mike!). Spreadsheet / kalkulator berfungsi dengan baik, atau inilah fungsi R untuk mendapatkan angka secara langsung:
## Compute correct affine numbers for qgsAffine plugin
affine <- function(originX, originY, rotAngle) {
A <- rotAngle * pi / 180
scaleX <- scaleY <- cos(A)
rotX <- sin(A)
rotY <- -sin(A)
transX <- originX - cos(A) * originX + sin(A) * originY
transY <- originY - sin(A) * originX - cos(A) * originY
aff <- data.frame(scaleX, scaleY, rotX, rotY, transX, transY)
return(aff)
}
Jadi, untuk memutar kotak titik di Uganda utara (UTM 36N), affine(578988, 419210, 30)
berikan:
scaleX scaleY rotX rotY transX transY
1 0.8660254 0.8660254 0.5 -0.5 287174.7 -233330.5
... yang, dimasukkan ke dalam dialog qgsAffine, memutar poin dengan benar.
sumber
Jawaban:
Anda dapat melakukan ini di PostGIS menggunakan ST_Affine . Fungsi untuk memutar titik arbitrer ditambahkan ke ST_Rotate untuk PostGIS 2.0.
Jika Anda memiliki versi sebelumnya (seperti PostGIS 1.5, atau bahkan lebih awal), Anda dapat menambahkan fungsi-fungsi ini:
Lihat contoh di ST_Rotate untuk mendapatkan ide tentang cara menggunakannya untuk memutar geometri di sekitar titik x , y , termasuk pusat massa (pusat umum).
Karena kita semua menyukai matematika, matriks transformasi dari fungsi di atas direpresentasikan sebagai:
Di mana θ adalah rotasi berlawanan arah jarum jam tentang suatu asal, x0 adalah Easting / Longitude dari titik asal, dan y0 adalah Northing / Latitude. Matematika ini mungkin dapat disesuaikan dengan alat transformasi affine apa pun .
Untuk menggunakan alat qgsAffine, Anda perlu memahami di mana nilai dari aliran matriks. Templat spreadsheet yang baik juga diperlukan untuk melakukan pra-perhitungan. Dialog qgsAffine terlihat seperti ini:
dimana:
Misalnya, jika Anda ingin memutar poligon 30 ° searah jarum jam sekitar 42 ° S, 174 ° E, berikut adalah masukan Anda untuk spreadsheet Anda:
Kemudian, salin / tempel hasil dari spreadsheet ke kotak kanan. Menggunakan urutan tab di dari dialog:
Contoh yang sama dari PostGIS akan terlihat seperti:
sumber
Saya belum pernah mencoba memutar layer vektor menggunakan qgsAffine dan saya pikir saya tidak sendirian. Pertanyaan ini muncul di forum QGIS baru-baru ini dan solusinya ditemukan, menggunakan OpenJump (gratis). Lihat utas ini (menjelang akhir):
http://forum.qgis.org/viewtopic.php?f=2&t=10126&sid=28473d53d244a4cd2a6f91887811ef02
Tentu saja Anda juga bisa menggunakan alat ini hanya untuk melakukan rotasi sederhana data Anda.
sumber