Saya menggunakan QGIS 1.8 Lisboa. Setelah menghitung centroid dari bentuk poligon, jika beberapa dari mereka berada di luar garis poligon, saya ingin memindahkannya pada poligon tempat asalnya. Kriteria harus univocal karena saya harus menggunakannya untuk mengekstrak koordinat untuk digunakan sebagai kode identifikasi poligon itu sendiri. Oleh karena itu, prosedur harus menampilkan lokasi titik yang sama setiap kali berjalan untuk poligon yang sama (bukan posisi acak seperti yang diberikan oleh fungsi "titik acak", yang memberikan hasil baru setiap kali dijalankan).
9
Jawaban:
Anda bisa menggunakan pustaka python Shapely, yang menyediakan fungsi
representative_point()
yang dijamin terletak di dalam poligon.Berikut ini adalah skrip Python yang dapat dijalankan di konsol Python QGIS. Lapisan poligon yang ingin Anda buat atributnya harus dipilih. Fungsi mengambil nama atribut yang ingin Anda perbarui. Atribut harus sudah ada di layer Anda, itu harus tipe string, dan itu harus cukup panjang (30 karakter).
Berikut adalah contoh poin yang ditemukan algoritma:
sumber
Alat centroid ftools dapat menempatkan centroid di luar poligon jika cekung.
ST_PointOnSurface
pasti akan melakukan apa yang Anda inginkan. Anda dapat menggunakan perintah dari dalam QGIS jika Anda telah menginstal dengan menggunakan SPIT untuk mendapatkan shapefile Anda ke PostGIS dan kemudian menggunakan plugin PgQuery untuk menjalankan kueri.Atau, jika menginstal PostGIS sedikit banyak untuk sekali pakai, Anda bisa menggunakan Spatialite dari dalam QGIS. Anda kemudian dapat menggunakan plugin QSpatiaLite untuk mengimpor data Anda ke SpatiaLite dan menjalankan kueri (kehormatan SpatialLite
ST_PointOnSurface
).sumber
ketika saya mengerti Anda benar, gunakan: Vector-> Research Tools_> Poin Acak. Sekarang pilih di bawah "Stratified Sampling Design (Individual polygons)" menggunakan nilai dari bidang input dan menggunakan bidang yang sesuai, yang memberikan nilai numerik poin, yang harus di-genereasi untuk setiap poligon yang berbeda
sumber
plugin realcentroids, tersedia untuk diinstal melalui Plugins> Manage and Install Plugins bekerja untuk saya di QGIS 2.2 untuk menghasilkan titik-titik seperti centroid, dipaksa di dalam setiap poligon jika cekung (titik akan terletak sangat dekat dengan tepi). Saya mencoba alat Poin acak seperti yang disarankan oleh Kurt, dan meskipun saya menentukan 1 poin per poligon, itu menghasilkan dua sebagai gantinya. Kerugian tambahan adalah bahwa dalam kebanyakan kasus, poin tidak mewakili centroid karena mereka acak.
http://www.agt.bme.hu/gis/qgis/realcentroid/
sumber