Estou usando o QGIS 1.8 Lisboa. Depois de calcular os centróides a partir de um shapefile de polígono, se alguns deles estiverem fora dos contornos do polígono, eu gostaria de movê-los no polígono de onde eles vieram. O critério deve ser unívoco, pois devo usá-los para extrair coordenadas a serem usadas como o código de identificação do próprio polígono. Portanto, o procedimento deve gerar o mesmo local do ponto sempre que for executado no mesmo polígono (não uma posição aleatória como a fornecida pela função "pontos aleatórios", que fornece um novo resultado cada vez que é executada).
9
Respostas:
Você pode usar a biblioteca python Shapely, que fornece uma função
representative_point()
que é garantida por estar dentro do polígono.Aqui está um script Python que pode ser executado no console do QGIS Python. A camada de polígono para a qual você deseja criar o atributo deve ser selecionada. A função leva o nome do atributo que você deseja atualizar. O atributo já deve existir na sua camada, deve ser do tipo string e deve ser longo o suficiente (30 caracteres).
Aqui está um exemplo dos pontos que o algoritmo encontrou:
fonte
A ferramenta centróide ftools pode colocar o centróide fora do polígono, se for côncavo.
ST_PointOnSurface
definitivamente fará o que você quiser. Você pode usar o comando de dentro do QGIS se tiver instalado usando o SPIT para colocar seu shapefile no PostGIS e, em seguida, use o plug-in PgQuery para executar a consulta.Como alternativa, se a instalação do PostGIS é um pouco exagerada , você pode usar o Spatialite no QGIS. Você pode usar o plug-in QSpatiaLite para importar seus dados para o SpatiaLite e executar a consulta (honras do SpatialLite
ST_PointOnSurface
).fonte
Quando eu entendi direito, use: Vetor-> Ferramentas de pesquisa_> Pontos aleatórios. Agora selecione em "Design de amostragem estratificado (polígonos individuais)" use o valor do campo de entrada e use o campo apropriado, que fornece o valor numérico dos pontos, que devem ser gerados para cada polígono diferente
fonte
O plug-in realcentroids, disponível para instalação por meio de Plug-ins> Gerenciar e Instalar Plug-ins, trabalhou para mim no QGIS 2.2 para gerar pontos do tipo centróide, forçados dentro de cada polígono se côncavos (o ponto ficará muito próximo da borda). Tentei a ferramenta de pontos aleatórios, como sugerido por Kurt, e, embora tenha especificado 1 ponto por polígono, gera dois. Uma desvantagem adicional é que, na maioria dos casos, os pontos não representam o centróide, pois são aleatórios.
http://www.agt.bme.hu/gis/qgis/realcentroid/
fonte