Eu tenho um shapefile composto de vários polígonos. Polígonos vizinhos geralmente compartilham um atributo.
O que preciso fazer é armazenar em buffer esses polígonos com base no atributo comum. No entanto, eu gostaria de expandir os referidos buffers até que eles se encontrem, momento em que eles podem parar.
Eu tenho uma maquete às pressas:
Tudo o que tenho em termos de código é o seguinte:
from qgis.core import *
from qgis.analysis import *
layer=qgis.utils.iface.activeLayer()
QgsGeometryAnalyzer().dissolve(layer, "D:/test_dissolved.shp", onlySelectedFeatures=False, uniqueIdField=3, p=None)
Na verdade, não sou muito versado na documentação da API do QGIS e, apesar dos meus melhores esforços, não consigo encontrar um método adequado para isso.
QgsGeometryAnalyzer().dissolve
me permite dissolver o buffer, mas não é isso que eu estou procurando.
Talvez eu devesse estar olhando em outra direção aqui?
Você provavelmente deseja explorar as funções de análise de varredura. Consulte Criando uma linha central para cada polígono no banco de dados do canyon submarino usando o ArcGIS for Desktop Basic? e Criando polígonos de Thiessen (Voronoi) usando linhas (em vez de pontos) como os recursos de entrada? para mais inspiração.
Isso requer que você use uma resolução de varredura adequada, é claro.
fonte
Eu tive uma tarefa um pouco relacionada no outro dia. Em teoria, polígonos de voronoi com pontos de centro de construção (ponderados) devem ser apenas a solução para o seu caso, mas não funcionou para mim; O PostgreSQL não é o que você solicitou, mas, como solução alternativa, se for a 'linha central' entre cada edifício que você procura na primeira etapa, vale a pena tentar usar o PostGIS ST_ApproximateMedialAxis . Você teria que criar um polígono de base para toda a área de estudo e cortar os polígonos da construção antes de aplicar a função no polígono de base para obter resultados relacionados. Pode funcionar, pode não ...
fonte