Konversi layer point ke raster grid yang menunjukkan frekuensi titik per sel uisng QGIS

9

Saya memiliki lapisan titik yang menunjukkan distribusi spesies.

Apakah mungkin dalam QGIS untuk mengubah lapisan titik ini ke kisi raster di mana nilai setiap sel sesuai dengan jumlah titik di dalam sel itu?

Sampai sekarang, saya hanya berhasil melampirkan nilai atribut ke sel-sel kotak. Saya telah menambahkan kolom di tabel atribut saya yang memiliki nilai '1' untuk setiap titik, berharap ada cara untuk menggunakan jumlah atribut untuk setiap sel kotak.

Murphy
sumber
1
Hanya catatan singkat tentang logika Anda: Jika Anda hanya menjumlahkan nilai 1 untuk setiap sel kisi maka kemungkinan besar Anda melebih-lebihkan kekayaan (jika ini yang ingin Anda hitung) karena perhitungan ini tidak memeriksa apakah suatu spesies telah ditambahkan. ke gridcell.
Curlew
Saya memiliki pola distribusi spesies, satu titik per individu yang diamati. Saya ingin memeriksa agregasi dan menghubungkan distribusi spesies ke habitat yang mendasari di GIS. Sekarang banyak titik yang terletak di atas dan sangat dekat satu sama lain, jadi untuk visualisasi saya ingin 'menyederhanakan' pola ini dan menggunakan kisi yang menunjukkan jumlah individu yang telah diamati per sel. Saya harap ini menjelaskannya sedikit lebih baik.
Murphy

Jawaban:

10

Ini adalah kludge tetapi berhasil - belum menemukan cara untuk beralih langsung dari titik ke raster (tapi saya berharap seseorang memberikan solusi di sini!).

Dimulai dengan kisi-kisi titik (titik acak di Serengeti dari Vector|Research tools|Random pointsalat):

masukkan deskripsi gambar di sini

Buat kisi poligon dengan luas dan ukuran sel yang sama dengan raster yang ingin Anda miliki (ini dari Vector|Research tools|Vector grid):

masukkan deskripsi gambar di sini

Gunakan Vector|Analysis tools|Points in polygon, menggunakan kisi poligon dan layer titik:

masukkan deskripsi gambar di sini

Ini memberi Anda kotak baru (di sini kode warna dengan jumlah titik di setiap sel poligon):

masukkan deskripsi gambar di sini

Sekarang gunakan Raster|Conversion|Rasterizeuntuk mengonversinya menjadi raster, menggunakan atribut PNTCNT untuk nilai raster dan ukuran sel yang sama dengan chosend untuk kisi:

masukkan deskripsi gambar di sini

... memberikan raster dengan nilai sesuai poin di setiap sel:

masukkan deskripsi gambar di sini

Simbamangu
sumber
2

Cara termudah dan paling mudah:

  • Asumsikan Anda memiliki kolom dengan pengidentifikasi titik unik (nama spesies)
  • Pisahkan layer Point Anda dengan Atribut ini (QGIS -> Manajemen Data -> Split)
  • Rasterisasi setiap layer titik individu misalnya dengan Alat Rasterize GDAL, atau alat SAGA atau GRASS yang tersedia di Toolbox Pemrosesan. Pastikan Anda menggunakan ukuran sel yang sama dan tingkat hasil.
  • Ringkas saja semua Rasterlayer yang dihasilkan. Misalnya dengan fungsi SAGA "Jumlah grid" atau dalam GRASS "r.sum". Kedua fungsi juga tersedia di Toolbox Pemrosesan.

Untuk melakukan ini secara otomatis, saya sarankan Anda menulis skrip, model pemrosesan, atau klik x kali pada batch-processing di QGIS Processing Toolbox. EDIT: Jika Anda mampu menggunakan R maka mulailah langsung dari sini dan sesuaikan kode dengan kebutuhan Anda (perulangan melalui titik-titik yang terpisah).
Atau Anda menunggu sedikit lebih lama. Dalam waktu bebas saya, saya saat ini sedang dalam proses menulis plugin baru untuk QGIS (berurusan dengan perhitungan makroekologi) dan mungkin memiliki fungsi yang mirip dengan yang Anda butuhkan.

Curlew
sumber
Saya pikir pertanyaannya berkaitan dengan lapisan spesies tunggal - yang tidak dapat (dan tidak seharusnya) dipecah untuk solusi. OP membutuhkan solusi 'jumlah titik dalam sel raster'.
Simbamangu
Baik Anda dapat melakukannya tanpa membelah, tetapi ini membutuhkan hampir pasti sebuah loop, masing-masing solusi scripted. Untuk satu spesies, solusi Anda berfungsi tentu saja karena hanya menunjukkan kepadatan kejadian agregat.
Curlew
-2

Saya menemukan kurangnya dukungan di QGIS ini sangat mengganggu karena ini adalah salah satu langkah penting geoproses yang selalu saya butuhkan. Rasterisasi melalui fishnet, seperti yang disarankan di atas, sangat lambat jika Anda memiliki banyak titik data (katakanlah 100.000) karena melakukan operasi berbasis vektor yang menghabiskan CPU Anda. Selain itu, jala berukuran besar dibandingkan dengan lapisan raster yang ramping.

GDAL memiliki fungsionalitas untuk melakukan operasi ini dalam jumlah minimum waktu pemrosesan tetapi tidak diimplementasikan dalam QGIS (sayangnya). Demi lingkungan dan saraf Anda, Anda dapat menggunakan fungsi gdal, di baris perintah atau di lingkungan perangkat lunak lain. Saya lebih suka menggunakan R yang memiliki paket terkait serveral GDAL. Anda dapat melihat bagaimana melakukannya di R di di rasterizing poligon dengan fungsi "gdal_rasterize" di R .

joaoal
sumber