Menciptakan # titik-titik dalam spasi yang didefinisikan secara teratur dalam poligon di QGIS

12

Saya menggunakan alat penelitian "Poin Reguler" untuk menghasilkan sejumlah titik dalam poligon, tetapi ini membentuk kotak titik persegi panjang dan bukan hanya dalam bentuk poligon. Karena saya memerlukan sejumlah poin dalam poligon, apakah ada cara untuk melakukannya tanpa coba-coba?

Misalnya saat ini hanya 8 dari 25 poin yang saya inginkan ada di dalam poligon, tetapi saya ingin 25 poin, sehingga saya bisa meningkat menjadi 50 poin dan melihat berapa banyak yang muncul di dalam poligon.

masukkan deskripsi gambar di sini

Coelacanth
sumber
Saya juga ingin membuat spasi secara teratur, menentukan # poin dalam poligon di QGIS, apakah ada plugin untuk ini? Saya bisa melakukannya dengan ekstensi Arcgis yang disebut ET GEOWIZARD (Poin seragam dalam poligon), tetapi saya perlu melakukannya di QGIS !! Bisakah kamu membantuku?
Ana María

Jawaban:

3

Apa yang dimaksud QGIS dalam hal batas lapisan sebenarnya adalah amplop atau kotak pembatas dari geometri.

Saya telah mendokumentasikan solusi yang mungkin merupakan yang terdekat dengan otomasi yang Anda dapatkan (tidak mengajukan permintaan bug / fitur).

Proses ini bekerja berdasarkan rasio antara luas kedua objek: geometri fitur dan kotak pembatasnya).

Periksa langkah-langkah berikut di bawah ini:

  1. Pilih layer yang ingin Anda kerjakan.

  2. Pilih fitur yang ingin Anda kerjakan. Pastikan tidak ada lagi yang dipilih.

  3. Jalankan cuplikan berikut di dalam Python Console.

    layer = qgis.utils.iface.activeLayer()
    features = layer.selectedFeatures()
    feature = features[0]
    geom = feature.geometry()
    env_rect = geom.boundingBox()
    env_geom = QgsGeometry.fromRect(env_rect)
    env_geom.area() / geom.area()
    

    Pastikan untuk menekan enter karena baris terakhir tidak akan secara otomatis kembali.

  4. Jalankan Regular Pointsalat lagi, tetapi masukkan jumlah poin yang Anda inginkan di dalam kotak dikalikan dengan output yang diberikan oleh skrip Anda.

Dalam sampel saya di bawah ini, hasil yang saya terima dari output adalah nilai ~ 2. Saya meminta 20 titik untuk menjadi output oleh proses di mana saya sebenarnya hanya ingin 10. Saya diberi 8 sebagai imbalan, yang cukup dekat. Bergantung pada bentuk sebenarnya yang Anda gunakan hasilnya akan bervariasi.

Jika Anda cenderung, Anda dapat mengotomatiskan (secara rekursif) proses Poin Reguler mengubah variabel sampai Anda tiba di nomor yang Anda inginkan.

Sampel

nagytech
sumber
+1 Saran Anda sudah dekat, tetapi bisa gagal menyatu. Yang ingin Anda lakukan adalah (a) memperkirakan jarak yang akan menyebabkan jumlah poin yang diinginkan jatuh dalam poligon dan (b) iterate dengan offset acak (diperlihatkan dalam tangkapan layar).
whuber
Jika saya melakukan offset acak, maka itu bukan lagi kotak, kan? Kisi-kisi di dalam poligon dengan jumlah titik tertentu adalah yang saya inginkan, untuk sampel di seluruh area. Atau mungkin bukan itu yang saya inginkan, karena memilih satu titik awal dan pergi dari sana tidak cukup acak?
coelacanth
@coelacanth Mungkin Anda tidak mengungkapkan cukup informasi tentang masalah Anda? Apa yang akan menjadi langkah selanjutnya dalam analisis Anda? Mungkin ada cara lain untuk mencapai tujuan Anda, selain menggunakan titik kisi.
nagytech
Hmmm, saya baru di bidang GPS / GIS dan desain survei, jadi tolong beri tahu saya jika ada cara yang lebih baik untuk melakukan sesuatu. Saya ingin mengatur sejumlah area pengambilan sampel dalam poligon (yaitu bagian dari hutan) untuk mengambil sampel vegetasi. Saya ingin area tersebar di seluruh situs sehingga saya mendapatkan representasi seluruh situs. Yang saya ingin gunakan fitur ini adalah untuk mengatur lokasi area pengambilan sampel dalam batas. Lalu saya akan menavigasi ke titik itu menggunakan unit GPS dan mengumpulkan data saya.
coelacanth
0

Anda dapat dengan mudah melakukan itu hanya memotong: menghasilkan grid poin biasa seperti yang Anda lakukan dan kemudian menggunakan Vector> Geoprocessing tools> Klip, masukan grid titik yang dihasilkan dan menggunakan fitur sebagai clip mask.

Rodrigues
sumber
-1

Solusi sederhana disarankan oleh tangkapan layar. Anda dapat mengekstraksi poligon ke dalam layer baru dengan Vector -> Data Managment Tools -> Split vector layer, mengimpornya dan kemudian memilih layer dengan fitur (ID) yang Anda inginkan sebagai layer input untuk sampler "Poin Biasa".

Jika Anda perlu melakukan ini hanya untuk segelintir poligon, menemukan dan mengekspornya secara terpisah bisa lebih efisien. Setelah Anda memilih satu, klik kanan pada nama layer dan pilih Save Selection As ..., pilih shapefile, isi sisanya dan ulangi seperti sebelumnya.

EDIT: Karena Anda sudah memiliki fitur tunggal, saya tidak bisa memikirkan hal yang lebih sederhana selain menggunakan kisi yang lebih padat, memotongnya dengan poligon lagi dan akhirnya menghapus semua titik ekstraneus (termudah melalui tabel atribut, karena Anda mendapatkan pemusatan yang mudah dan jumlah total).

lynxlynxlynx
sumber
Hanya ada satu poligon di shapefile.
coelacanth
Oh, betapa menjengkelkan kalau begitu (seperti fakta itu dibuat 20 bukannya 25 poin). Saya sarankan Anda membuka permintaan fitur pada hub.qgis.org/projects/quantum-gis/issues - Saya kira itu harus memiliki kotak centang tambahan untuk menggunakan batas layer yang benar.
lynxlynxlynx
-2

Terapkan kueri definisi ke poligon Anda (dalam 1,8 klik kanan pada layer dan pilih Query). Kemudian jalankan alat. Hapus kueri.

John
sumber
Bagaimana ini membantu? Itu sama dengan melakukan seleksi.
Nathan W
Kurang lebih. Tapi ini berfungsi di QGIS sekarang sedangkan pemilihannya tidak, setidaknya di komputer saya.
John