Alat Pengambilan Sampel Acak Stratified


9

Apakah ada cara untuk menghasilkan sejumlah titik acak pada kelas yang berbeda dalam raster di QGIS? Saya memiliki ekstensi seperti GRASS atau GDAL, ...


Saya tidak punya jawaban tetapi beberapa cara. Mungkin menggunakan r atau python tetapi untuk saat ini saya belum menemukan cara terbaik untuk melakukannya. Saya sangat menarik dengan jawaban. Terbaik
Cédric Lardeux

1
Anda dapat melakukan ini dengan mudah dengan perintah v.random GRASS GIS 7: lihat grass.osgeo.org/grass72/manuals/…
markusN

Anda juga dapat menghasilkan titik acak sebagai raster yang langsung menggunakan r.randomdan mencari tahu sendiri bagian "lebih dari kelas yang berbeda". Oleh karena itu, Anda dapat menghindari konversi maju dan mundur dari raster ke vektor, dll. Lihat grass.osgeo.org/grass72/manuals/r.random.html
Nikos Alexandris

Jawaban:


6

Dimungkinkan jika Anda mengonversi raster Anda ke layer vektor.

Contoh cepat, mulai dari raster klasifikasi ini:

masukkan deskripsi gambar di sini

Gunakan Raster > Conversion > Polygonizeuntuk mengubahnya menjadi layer vektor:

masukkan deskripsi gambar di sini

Jika Anda ingin membuat poin di seluruh kelas (dan bukan setiap "tambalan" yang terpisah), gunakan Vector > Geometry Tools > Singleparts to Multipartsalat ini.

Lalu pergi ke Vector > Research Tools > Random Points, pilih layer vektor sebelumnya Input Boundary Layerdan centang Use this number of pointsopsi jika Anda ingin membuat jumlah titik yang sama di setiap kelas:

masukkan deskripsi gambar di sini

Jika Anda ingin mengubah jumlah titik tergantung pada kelas, tambahkan kolom ke tabel atribut dari lapisan poligon di mana Anda akan menentukan jumlah titik untuk setiap kelas, lalu centang Use value from input fieldopsi (bukan Use this number of points) dalam Poin Acak alat.

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini


1
tidak ada cara membuat vektorlayer? sepertinya banyak daya komputasi diperlukan jika raster sangat besar (mengubahnya menjadi vektor) ...
Stophface

Itulah satu-satunya cara saya dapat memikirkan ... Mungkin seseorang akan datang dengan solusi lain, tetapi saya tidak berpikir bahwa langkah ini dapat dihindari.
ArMoraer

Hm, ini seperti yang saya pikirkan. QGIS tidak menyelesaikan perhitungan. Saya dapat mempoligonisasi, tetapi singleparts to multipartsbitnya tidak berfungsi ... Ia macet
Stophface

Anda juga dapat mencoba alat Larutkan. Dissolve asli QGIS mungkin sangat lambat, jadi Anda bisa mencoba Dissolve polygonsalat OGR (Anda akan menemukannya di kotak alat pemrosesan).
ArMoraer

Saya mencoba yang itu juga. Hasil yang sama ... Seperti yang saya katakan: Poligon yang saya terima setelah poligon raster saya sangat besar. Saya terkejut bahwa poligon itu bekerja ...
Stophface

3

Seperti yang saya tulis: Dengan raster besar mengubah raster menjadi vektor dan kemudian membubarkan singlepart ke multipart tidak berfungsi. Ada cara yang lebih mudah untuk mendapatkan sampel langsung pada raster menggunakan R.

library(raster)
library(rgdal)

# read a raster, GeoTiff or something
forSampling <- raster(someRaster.tif)

# make stratified random sampling
# set sp = TRUE to get a spatialPointsDataframe
# that one can easily be converted into a shapefile
sampleSp <- sampleStratified(x = forSampling, size = 50, xy = TRUE, sp = TRUE)

# write it out to a shapefile for further processing
writeOGR(obj = sampleSp, dsn = "aa", layer = "sampleSp", driver="ESRI Shapefile") # this is in geographical projection
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.