Existe uma maneira de produzir uma certa quantidade de pontos aleatórios em diferentes classes em uma varredura no QGIS? Tenho extensões como GRASS ou GDAL, ...
Eu não tenho resposta, mas de alguma maneira. Propably usando r ou python, mas por enquanto não encontrei a melhor maneira de fazê-lo. Eu sou muito interessante por resposta. Best
Você também pode gerar pontos aleatórios como um raster usando diretamente r.randome descobrir a parte "sobre diferentes classes". Assim, você pode evitar as conversões frente e para trás de raster para vetor, etc. Veja grass.osgeo.org/grass72/manuals/r.random.html
Nikos Alexandris
Respostas:
6
É possível se você converter sua varredura em uma camada vetorial.
Exemplo rápido, a partir desta classificação raster:
Use Raster > Conversion > Polygonizepara convertê-lo em uma camada vetorial:
Se você deseja criar pontos sobre uma classe inteira (e não sobre cada "patch" separado), use a Vector > Geometry Tools > Singleparts to Multipartsferramenta
Em seguida, vá para Vector > Research Tools > Random Points, selecione a camada vetorial anterior Input Boundary Layere marque a Use this number of pointsopção se desejar criar o mesmo número de pontos em cada classe:
Se você quiser alterar o número de pontos, dependendo da classe, adicione uma coluna à tabela de atributos da camada de polígono na qual especificará o número de pontos para cada classe e marque a Use value from input fieldopção (em vez de Use this number of points) nos Pontos aleatórios ferramenta.
não há como evitar a criação de uma camada de vetor? parece que é necessária uma grande quantidade de poder computacional se o raster é muito grande (convertê-la em um vetor) ...
Stophface
Essa é a única maneira que consigo pensar ... Talvez alguém venha com outra solução, mas não acho que essa etapa possa ser evitada.
ArMoraer
Hum, é como eu pensava. O QGIS não termina o cálculo. Posso polygonize, mas o singleparts to multipartsbit não funciona ... Ele trava
Stophface
Como alternativa, você pode tentar a ferramenta Dissolver. O Dissolve nativo do QGIS pode ser muito lento, portanto, você pode tentar a Dissolve polygonsferramenta OGR (você a encontrará na caixa de ferramentas de processamento).
ArMoraer
Eu tentei esse também. Mesmos resultados ... Como eu disse: O polígono que recebo após poligonizar minha varredura é muito, muito grande. Fiquei surpreso que o polygonize trabalhou ...
Stophface
3
Como escrevi: Com uma grande varredura, transformar a varredura em um vetor e depois dissolver uma parte em multipartes não funciona. Existe uma maneira mais fácil de obter a amostra diretamente na varredura usando 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
e descobrir a parte "sobre diferentes classes". Assim, você pode evitar as conversões frente e para trás de raster para vetor, etc. Veja grass.osgeo.org/grass72/manuals/r.random.htmlRespostas:
É possível se você converter sua varredura em uma camada vetorial.
Exemplo rápido, a partir desta classificação raster:
Use
Raster > Conversion > Polygonize
para convertê-lo em uma camada vetorial:Se você deseja criar pontos sobre uma classe inteira (e não sobre cada "patch" separado), use a
Vector > Geometry Tools > Singleparts to Multiparts
ferramentaEm seguida, vá para
Vector > Research Tools > Random Points
, selecione a camada vetorial anteriorInput Boundary Layer
e marque aUse this number of points
opção se desejar criar o mesmo número de pontos em cada classe:Se você quiser alterar o número de pontos, dependendo da classe, adicione uma coluna à tabela de atributos da camada de polígono na qual especificará o número de pontos para cada classe e marque a
Use value from input field
opção (em vez deUse this number of points
) nos Pontos aleatórios ferramenta.fonte
singleparts to multiparts
bit não funciona ... Ele travaDissolve polygons
ferramenta OGR (você a encontrará na caixa de ferramentas de processamento).Como escrevi: Com uma grande varredura, transformar a varredura em um vetor e depois dissolver uma parte em multipartes não funciona. Existe uma maneira mais fácil de obter a amostra diretamente na varredura usando
R
.fonte