Rotasi peta otomatis dalam komposer peta QGIS

10

Masalahnya adalah saya ingin membuatnya mungkin untuk secara otomatis menghitung rotasi peta dalam komposer peta. Saya memiliki banyak peta dalam satu file dengan parameter proyeksi mereka sendiri, dan saya ingin menentukan rotasi peta dalam komposer peta berdasarkan formula proyeksi (atau apalah yang lainnya?)

mis. lokasi satu peta spesifik dalam proyek:

masukkan deskripsi gambar di sini

Proyeksi adalah

masukkan deskripsi gambar di sini

Dalam peta batas peta komposer terlihat seperti

masukkan deskripsi gambar di sini

Dan dengan sudut rotasi yang dipilih untuk peta dengan parameter proyeksi mereka:

masukkan deskripsi gambar di sini

Sudut rotasi peta berbeda untuk setiap peta tergantung pada lokasi dan parameter proyeksi.

Apakah mungkin untuk mengotomatiskan proses ini dan menghitung sudut rotasi peta secara otomatis, karena tidak menemukan nilai ini secara manual setiap kali (saya ingin membuat komposer universal untuk semua peta melalui menu pembuatan atlas)?

Jane
sumber
1
Apakah Anda ingin memutar fitur agar sejajar dengan tepi bingkai peta? Bisakah Anda menghitung azimuth dari salah satu sisi fitur dan menggunakannya untuk memutarnya? Jika itu adalah garis, sesuatu seperti rotasi = derajat (atan (abs ((y1-y2) / (x1-x2))))) akan memberi Anda sudut dalam derajat. Kemudian 90 - rotasi akan menyelaraskannya dengan bingkai peta.
mixedbredie
2
Apakah Anda menggunakan atlas? Jika Anda menghasilkan lapisan cakupan menggunakan alat "Berorientasi kotak batas minimum", maka lapisan itu akan menyertakan atribut rotasi yang dapat terikat ke rotasi item peta menggunakan properti yang ditentukan data.
ndawson
@mixedbredie, Ya, saya ingin memutar peta saya sehingga batas peta akan sejajar dengan bingkai peta di kanvas peta. Saya mencoba menghitung azimuth, tetapi masalahnya adalah lapisan saya dengan peta adalah poligonal dan tidak ada yang mengatakan bahwa titik pertama adalah simpul kiri-atas atau simpul tertentu lainnya (kanan bawah, dll). Jadi, sudut hampir setiap waktu tidak memuaskan
Jane
Solusi yang disarankan oleh @ndawson berhasil. Gunakan layer kotak pembatas baru sebagai lapisan cakupan tersembunyi dan semuanya akan disejajarkan.
mixedbredie
1
Buka Toolbox Pemrosesan (Ctrl + Alt + T) dan cari "berorientasi" - Anda melihat alat di bawah geoalgoritma QGIS> Alat umum vektor.
mixedbredie

Jawaban:

3

Di bawah ini adalah solusi yang ditemukan oleh @ndawson di komentar pertanyaan. Silakan berkomentar dan tingkatkan jawaban ini.

Jalankan dari kotak alat pemrosesan, kotak kotak batas minimum Berorientasi pada kisi amplop peta yang sudah Anda gunakan.

Berorientasi alat kotak berlari

Ini akan membuat layer yang seharusnya cukup identik dengan layer asli Anda. Anda akan menemukan dalam tabel atribut suatu bidang ANGLE

Bidang OBB

Anda sekarang harus dapat menggunakan bidang ANGLE ini di komposer untuk mengisi bidang data yang ditentukan untuk rotasi:

Sudut yang ditentukan data

Masalahnya tampaknya sudut tidak selalu mudah digunakan karena tergantung pada cara poligon awal dibuat. Saya melakukan beberapa tes dan itu tergantung pada cara Anda menggambar poligon sumber Anda. Anda mungkin harus mengubah nilai atribut bidang ANGLe sesuai:

(merah adalah poligon asli, berwarna hitam poligon alat OMBB). Saya mendigitalkan untuk contoh poligon serupa adalah dua cara yang berbeda (ke kanan atau kiri)

Contoh OMBB

Untuk mendapatkan kembali nilai sudut ke lapisan asli Anda, Anda bisa menggunakan operasi penggabungan lokasi spasial.

gisnside
sumber
Terima kasih banyak! Saya sudah merah perhatian jawaban rinci Anda! Tetapi masalahnya tampaknya lebih kompleks. Saya memiliki layer dengan semua peta dan proyeksi mereka di tabel atribut untuk setiap peta. Lapisan awal dengan set peta di WGS84, tetapi ketika menyiapkan peta, saya mengatur proyeksi di kanvas peta, diambil dari tabel atribut (yang berbeda untuk setiap peta) dan saya membutuhkan nilai rotasi peta dalam PROYEKSI INI. Jadi, saya harus resave setiap peta dalam proyeksi mereka sendiri dan kemudian jalankan OMBB untuk poligon. Saya menguji beberapa peta, tetapi nilai sudut rotasi yang tidak berhasil berbeda dari yang dihitung melalui OMBB
Jane
Akan lebih baik untuk menghitung nilai sudut rotasi dalam komposer peta, berdasarkan pada rumus proyeksi dalam tabel atribut
Jane
Tidak mudah ! Saya tidak melihat bagaimana Anda bisa melakukannya dengan cara yang sederhana, terutama untuk sudut rotasi. Ada cara untuk memproyeksikan data dengan fungsi "mengubah", tetapi saya ragu itu akan bekerja untuk hal lain selain koordinat. (Mengembalikan geometri yang diubah dari CRS sumber ke CRS tujuan. Sintaks: transform (geom, source_auth_id, dest_auth_id) - Contoh: geom_to_wkt (transform ($ geometry, 'EPSG: 2154', 'EPSG: 4326'))
gisnside