como posso calcular somas, médias etc. de pontos de varredura (multibanda) por polígono de uma camada vetorial. Foi-me dito que isso é chamado de "estatística zonal". Eu tentei isso com o QGIS primeiro.
Existe uma maneira de fazer isso, mas isso é muito lento (converter raster em vetor, cruzar com a segunda camada vetorial, calcular geometria, exportar números, calcular estatísticas com planilha ou outro programa, reimportar os resultados, levar uma eternidade para o meu 350.000 pontos de varredura).
Também me deram a dica de usar saga-gis. Isso possui "estatísticas zonais", mas são baseadas em categorias de uma banda raster, e não em polígonos de uma camada vetorial. Então, para usar isso, eu teria que converter minha camada vetorial em varredura e calcular as estatísticas.
Esta parece ser a maneira errada de resolver isso. Não haveria como contabilizar pontos de varredura que pertencem a 2 ou mais polígonos porque eles são cruzados pelo limite do polígono. Eu suponho que as estatísticas baseadas em polígonos sejam capazes de lidar com isso, então eu também assumo que eu não encontrei o módulo correto ainda.
Saga-gis tem realmente muitos módulos. Informe-me qual é o caminho certo para esta aplicação.
fonte
Respostas:
Eu estava lutando para fazer exatamente a mesma coisa, mas por várias razões, estou comprometido em usar o QGIS. Tentei usar o v.rast.stats usando o plug-in GRASS e também através do plug-in Sextante. A última abordagem falhou, porque parece anexar as estatísticas a uma camada vetorial temporária que ela exclui. O plugin GRASS funcionou, mas não lida com polígonos sobrepostos.
Depois de pesquisar um pouco (na fonte do plug-in ZonalStats com som promissor), descobri que o QGIS realmente tem métodos estatísticos zonais incorporados à API, e eles também têm ligações Python. Então, enquanto você está apenas procurando
count
,sum
emean
as estatísticas para as características do polígono, o Console Python (Plugins> Python Console) é atualmente a maneira mais fácil de anexar as estatísticas para a tabela de atributos polígono.Selecione sua camada de varredura no sumário e digite o seguinte no console (ele pega o nome do arquivo de origem da camada de varredura)
>>> rasterfile = qgis.utils.iface.mapCanvas().currentLayer().source()
Selecione sua camada vetorial e execute o seguinte comando no console (ele pega a própria camada vetorial)
>>> vectorlayer = qgis.utils.iface.mapCanvas().currentLayer()
Execute os três comandos a seguir no console (eles passam a camada vetorial e o arquivo raster para a calculadora de estatísticas zonais do QGIS)
>>> import qgis.analysis
>>> zonalstats = qgis.analysis.QgsZonalStatistics(vectorlayer,rasterfile)
>>> zonalstats.calculateStatistics(None)
Os resultados serão anexados como campos extras na camada de polígono.
Observe que, se você desejar anexar um prefixo aos novos campos (em vez de apenas tê-los como soma, média e contagem), substitua o primeiro comando na etapa 3 pelo seguinte (supondo que você queira usar 'zonal_' como o prefixo:
fonte
Finalmente encontrei: No Saga-GIS, abra categorias-polígonos e grade de dados e, em seguida, forma-> grade-> valor da grade-> estatísticas da grade para polígonos
fonte
Você pode fazer isso facilmente com o PostGIS. Veja este tutorial: http://trac.osgeo.org/postgis/wiki/WKTRasterTutorial01
fonte
Esse problema parece já ter sido resolvido há algum tempo, mas vou adicionar minha colher à sopa, pois recentemente precisei de algumas estatísticas de varredura.
A metodologia QGIS descrita por rudivonstaden funcionou como um encanto, obrigado pela dica. No entanto, no meu caso, eu também queria saber os valores min & max e std para os valores raster dentro dos meus polígonos, e essa funcionalidade que não consegui encontrar no QGIS. Encontrei uma solução através da função isectpolyrst no GME , que é o meu favorito para resolver problemas de GIS. Essa função me deu apenas as estatísticas de que eu precisava e muito rapidamente também.
PS. O GME tem um pouco de dependência infeliz (ArcGIS). Portanto, mesmo que o programa em si esteja disponível gratuitamente para todos, você precisa do ArcGIS para executá-lo. Mas se você possui ArcGIS (qualquer nível de licença), eu recomendo que você experimente.
EDITAR:
Consegui as estatísticas que queria, mas depois descobri que tirei conclusões precipitadas depois de analisar os números reais. Você obtém estatísticas, sim, mas apenas para a primeira banda em uma varredura. Portanto, se você operar com uma imagem rasterizada de 3 bandas, as estatísticas estarão incompletas. Eu deveria ter apontado o número de canais na minha postagem original. É melhor usar o SAGA-GIS como o stn proposto acima, se você estiver trabalhando com imagens raster multibanda.
fonte
calcula por padrão apenas Contagem, Soma e Média (como você pode ver
Raster -> Zonal Statistics
no QGIS Desktop, ele pode fazer muito mais).Se você, por exemplo, deseja calcular apenas a média que precisa usar:
consulte API para todas as opções.
fonte