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, ...

Stophface
sumber
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

ArMoraer
sumber
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
Stophface
sumber