¿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, ...
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
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:
Use Raster > Conversion > Polygonizepara convertirlo en una capa vectorial:
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:
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.
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
r.random
y 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.htmlRespuestas:
Es posible si convierte su ráster en una capa vectorial.
Ejemplo rápido, a partir de este ráster de clasificación:
Use
Raster > Conversion > Polygonize
para convertirlo en una capa vectorial:Si desea crear puntos en toda una clase (y no en cada "parche" separado), use la
Vector > Geometry Tools > Singleparts to Multiparts
herramienta.Luego vaya a
Vector > Research Tools > Random Points
, seleccione la capa vectorial anteriorInput Boundary Layer
y marque laUse this number of points
opción si desea crear el mismo número de puntos en cada clase: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 field
opción (en lugar deUse this number of points
) en los Puntos aleatorios herramienta.fuente
singleparts to multiparts
bit no funciona ... Se bloqueaDissolve polygons
herramienta OGR (la encontrará en la caja de herramientas de procesamiento).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
.fuente