Estou tentando descobrir como usar python para extrair os polígonos em um vetor que se sobrepõem> 90% por outro vetor. Eu gostaria de ter um vetor / mapa que mostre apenas esses polígonos. A imagem de exemplo mostra minhas camadas. Quero todos os polígonos cinza> 90% vermelhos.
Eu preciso fazer isso tudo via python (ou métodos automatizados da mesma forma). Eu tenho ~ 1000 mapas para processar da mesma maneira.
Respostas:
O próximo código funciona no meu console Python do QGIS. Produz uma camada de memória com polígonos que são> 90% sobrepostos por áreas vermelhas.
Eu tentei o código com essas duas camadas de vetor:
Após a execução do código no Python Console do QGIS, para corroborar os resultados, foram impressos os índices i, j dos recursos envolvidos, áreas de interseção, atributo de campo em polygons_intersects (1 para áreas vermelhas e 2 para áreas cinza) e o critério de sobreposição .
A camada de memória criada (recursos verdes) pode ser observada na próxima imagem. Foi como esperado.
fonte
Aqui uma solução que não requer python.
Adicione uma nova camada virtual com uma consulta como:
Com:
Basins800 como sua camada, você deseja filtrar com polígonos cinza
Gravidade: sua camada vermelha se sobrepõe.
O resultado será uma nova camada com apenas todos os plolígonos cinza> 90% sobrepostos por polígonos vermelhos, com um novo campo contendo a porcentagem de sobreposição.
Espero que isso funcione. Posso adicionar mais detalhes sobre a consulta, se necessário.
Nota: Seus dados contêm polígonos muito pequenos (provenientes do processamento de varredura e correspondentes a um pixel de varredura (na imagem, podemos ver 4 polígonos, mas existem outros 25 polígonos pequenos), o que torna a consulta muito lenta de executar (função de interseção) gera um recurso para cada par de recursos das duas camadas).
fonte
Depois de ver o link para os shapefiles de Gravidade e Basins800 , eu pude entender o geoprocesso necessário. Eu modifiquei o código em:
Encontrando programaticamente polígonos que são> 90% sobrepostos por outra camada de polígono vetorial usando QGIS?
para obter este:
Após executar o código, com esses shapefiles no Python Console do QGIS, em alguns minutos obtive um resultado semelhante ao Pierma ; onde a camada de memória tinha 31 características (diferentes de 29 polígonos obtidas por ele).
Não vou depurar os resultados porque existem 1901 * 3528 = 6706728 interações para recursos. No entanto, o código parece promissor.
fonte