Herramienta de muestreo aleatorio estratificado

9

¿Hay alguna manera de producir una cierta cantidad de puntos aleatorios sobre diferentes clases en un ráster en QGIS? Tengo extensiones como GRASS o GDAL, ...

Stophface
fuente
No tengo respuesta pero de alguna manera. Probablemente usando r o python, pero por ahora no he encontrado la mejor manera de hacerlo. Soy muy interesante por respuesta. Lo mejor
Cédric Lardeux
1
Puede hacerlo fácilmente con el comando v.random de GRASS GIS 7: vea grass.osgeo.org/grass72/manuals/…
markusN
También puede generar puntos aleatorios como una trama directamente usando r.randomy descubrir usted mismo la parte "sobre diferentes clases". Por lo tanto, puede evitar las conversiones de ida y vuelta de ráster a vector, etc. Vea grass.osgeo.org/grass72/manuals/r.random.html
Nikos Alexandris

Respuestas:

6

Es posible si convierte su ráster en una capa vectorial.

Ejemplo rápido, a partir de este ráster de clasificación:

ingrese la descripción de la imagen aquí

Use Raster > Conversion > Polygonizepara convertirlo en una capa vectorial:

ingrese la descripción de la imagen aquí

Si desea crear puntos en toda una clase (y no en cada "parche" separado), use la Vector > Geometry Tools > Singleparts to Multipartsherramienta.

Luego vaya a Vector > Research Tools > Random Points, seleccione la capa vectorial anterior Input Boundary Layery marque la Use this number of pointsopción si desea crear el mismo número de puntos en cada clase:

ingrese la descripción de la imagen aquí

Si desea cambiar el número de puntos según la clase, agregue una columna a la tabla de atributos de la capa de polígono en la que especificará el número de puntos para cada clase, luego marque la Use value from input fieldopción (en lugar de Use this number of points) en los Puntos aleatorios herramienta.

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

ArMoraer
fuente
1
no hay forma de evitar crear una capa vectorial? parece que se requiere mucha potencia de cálculo si el ráster es muy grande (convirtiéndolo en un vector) ...
Stophface
Esa es la única forma en que puedo pensar ... Tal vez alguien vendrá con otra solución, pero no creo que se pueda evitar este paso.
ArMoraer
Hm, es como pensaba. QGIS no finaliza el cálculo. Puedo poligonizar, pero el singleparts to multipartsbit no funciona ... Se bloquea
Stophface
Alternativamente, puede probar la herramienta Disolver. La disolución nativa de QGIS puede ser muy lenta, por lo que puede probar la Dissolve polygonsherramienta OGR (la encontrará en la caja de herramientas de procesamiento).
ArMoraer
Probé ese también. Los mismos resultados ... Como dije: el polígono que recibo después de poligonalizar mi ráster es muy, muy grande. Me sorprendió que la poligonalización funcionara ...
Stophface
3

Como escribí: con un gran ráster, transformar el ráster en un vector y luego disolver una sola parte en varios clipart no funciona. Hay una manera más fácil de obtener la muestra directamente en el ráster utilizando 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
fuente