Saya memiliki layer vektor non-georeferensi yang harus saya georeferensi. Dengan layer raster, tugasnya mudah dan langsung, tetapi saya tidak tahu apa yang harus saya lakukan dengan layer vektor saya. Saya punya beberapa titik kontrol dengan koordinat yang diketahui yang harus memberikan dasar untuk transformasi. Jadi, katakanlah saya tahu poin dengan id-s dari 1, 2 dan 3 harus memiliki koordinat x1, y1; x2, y2; x3, y3. Mungkin ada beberapa rotasi dan transformasi skala selain pergeseran sederhana.
Ada ide?
Jawaban:
Untuk georeferensi lapisan vektor, coba plugin qgsAffine.
Ada lebih banyak info di Di mana menemukan qgsaffine di menu?
sumber
Mengingat fakta bahwa Anda memiliki beberapa titik kontrol, Anda harus dapat menggunakan transformasi Affine untuk menggeser data vektor Anda. Lihatlah resep ini . Prosesnya adalah proses dua bagian:
Jika Anda meletakkan titik kontrol Anda ke file CSV (old_x, old_y, new_x, new_y), Anda dapat memotong cut'n menempelkan perintah R dari tautan untuk menyelesaikan bagian koefisien.
sumber
Saya merekomendasikan plugin Vector Bender untuk QGIS. Saya mencobanya dan berfungsi baik dan ramah pengguna. Bergantung pada jumlah pasangan poin yang Anda tentukan, Anda dapat melakukan:
Anda menemukan video pendek di sini dan saya menyarankan Anda untuk membaca bantuan Vector Bender setelah Anda menginstal plugin.
sumber
Dengan rilis GDAL 1.10 ini sekarang mungkin.
Hal ini dilakukan dengan melakukan transformasi dasar di ogr2ogr dan memasok titik kontrol dalam tag -gcp. http://www.gdal.org/ogr2ogr.html
Untuk panduan, lihat: http://gisforthought.com/georeferencing-vector-data-using-qgis-and-ogr2ogr/
sumber
Saya hanya harus melakukan itu, dan akhirnya melakukan ini:
gcps.points
fileScript berikut menghitung matriks transformasi affine menggunakan GCP yang disimpan:
sumber
Lihat jawaban saya untuk Memotret dua poligon bersama dan mencoba openjump gratis.
Saya pikir transformasi affine-nya jauh lebih ramah pengguna daripada plugin qgis affine.
sumber
Sebagai lanjutan dari komentar saya pada jawaban Rayner, GRASS v.transform, yang dapat dijalankan dari kotak alat Sextante, dapat digunakan untuk menghitung parameter transformasi dan menerapkannya pada layer vektor untuk melakukan transformasi affine. Diperlukan file teks yang berisi titik kontrol, dalam format yang ditunjukkan di sini .
Ini sangat mudah digunakan dan berfungsi dengan baik.
sumber
Beberapa jawaban yang diberikan di sini bukan lagi pilihan untuk QGIS 3, dan / atau hanya memungkinkan untuk transformasi linear dari file vektor yang di-georeferensi. Ini mungkin menjawab pertanyaan OP, tetapi orang lain yang melihat posting ini mungkin menginginkan opsi transformasi lain untuk georeferensi file vektor.
Masalah dengan beberapa solusi untuk file vektor georeferensi:
Plugin qgsAffine hanya memungkinkan untuk transformasi linear. Ini berarti dapat mengubah skala, memutar, dan memindahkan file vektor, tetapi tidak dapat menekuk atau membelokkan file vektor. Georeferencer untuk file raster menyediakan lebih banyak opsi, dan memungkinkan berbagai transformasi, termasuk polinomial orde dua dan spline pelat tipis. Selain itu, tampaknya plugin qgsAffine masih belum tersedia di QGIS 3.
Modul GRASS v.transform mirip dengan plugin qgsAffine, dan hanya memungkinkan untuk transformasi linear.
Plugin Vector Bender sepertinya itu pilihan yang baik, tetapi belum sepenuhnya porting ke QGIS 3, jadi saat ini bukan merupakan pilihan. Itu tidak terlihat seperti sedang dipertahankan lagi.
Menggunakan ogr2ogr, seperti yang disarankan dalam pos HeikkiVesanto, adalah pilihan yang baik. Ini memungkinkan seseorang untuk menggunakan GCP (Ground Control Points), dan menentukan jenis transformasi yang Anda inginkan. Saya tidak dapat menemukan petunjuk di mana pun tentang cara melakukan ini, jadi saya telah memasukkan beberapa petunjuk di bawah ini:
Hasilkan satu set pasangan GCP, dengan satu titik menjadi lokasi asli dalam file vektor ungeoreferensi, dan titik lainnya menjadi lokasi yang diinginkan di ruang kerja Anda yang di-georeferensi.
Ada berbagai cara untuk menghasilkan GCP. Saya menggunakan plugin Georeferencer GDAL di QGIS. Ini tersedia di bawah menu dropdown Raster, setelah diinstal menggunakan manajer Plugin. Ini hanya berfungsi pada file raster, jadi Anda harus terlebih dahulu mengonversi file vektor ke file raster. Ini dimungkinkan dengan "Memproses Toolbox: GDAL: Konversi vektor: Rasterize (vektor ke raster)". Atur resolusi ke angka yang masih memungkinkan Anda untuk melihat fitur-fitur file vektor.
Georeferencer memiliki antarmuka yang bagus, yang memungkinkan Anda menambahkan banyak poin GCP. Anda juga dapat menguji berbagai transformasi, dan melihat mana yang paling berhasil. Dan Anda dapat melihat apakah ada poin GCP Anda yang kemungkinan salah, dengan melihat residunya. Setelah Anda menambahkan semua poin GCP Anda, dan memeriksa apakah Anda menyukai hasilnya, Anda dapat mengekspor file GCP dari Georeferencer untuk digunakan untuk melakukan georeferensi file vektor asli.
File GCP perlu diubah dalam format berikut. Anda dapat menambahkan poin GCP sebanyak yang Anda suka, masing-masing diproses oleh -gcp dan dipisahkan oleh spasi. Saya menjalankan ini dengan 800+ poin GCP, dan itu berhasil dengan baik.
Ada berbagai cara seseorang dapat mengubah poin GCP ke dalam format yang tepat. Saya mengimpornya ke Excel sebagai file csv, dan membuat kolom untuk menampilkan format yang tepat untuk setiap titik. Kemudian saya menempelkan kolom itu ke TextEdit dan mengganti baris berakhir dengan spasi.
File vektor yang ingin Anda georeferensi harus diimpor ke ruang kerja Anda menggunakan SRS yang sama dengan yang Anda inginkan untuk file georeferensi akhir, yang harus SRS yang sama dengan ruang kerja Anda. Mungkin jauh dari tempat seharusnya, jika awalnya menggunakan SRS yang berbeda, tetapi transformasi akan memindahkannya ke lokasi yang benar.
Akses ogr2ogr melalui "Pemrosesan Toolbox: GDAL: Konversi vektor: Konversi format". Ini memungkinkan Anda untuk memilih file vektor yang ingin Anda georeferensi, dan file output Anda. Di bidang "Opsi kreasi tambahan", tambahkan perintah yang menentukan jenis transformasi apa yang Anda inginkan, dan kemudian garis dengan semua poin GCP Anda.
Perintah untuk berbagai jenis transformasi meliputi:
Misalnya, kode yang ditambahkan ke bidang "Opsi kreasi tambahan" mungkin terlihat seperti:
sumber