Sou um pouco novo no mundo dos SIG e, principalmente, do PostGIS, então, desculpe-me se a resposta parecer evidente ...
Eu gostaria de fazer uma análise em vários edifícios. Uma coisa que me interessa são as superfícies das fachadas, juntamente com a respectiva orientação. Como ilustrado na figura abaixo, eu gostaria de ter o comprimento e a orientação (normal) de todas as arestas em uma série de polígonos. No exemplo, destaquei apenas uma superfície.
Uma tabela de resultados pode ficar assim:
building_id | edge_id | orientation | edge_length
-------------------------------------------------
1 | 1 | 315 | 10.0
1 | 2 | 45 | 7.0
1 | ... | ... | ...
No entanto, não tenho certeza se é uma maneira inteligente de armazenar o resultado para processamento adicional (por exemplo, calcular a distância da borda até o próximo edifício, etc.). Então, minha pergunta é dupla:
- Existe uma função PostGIS eficiente que pode analisar as arestas de um polígono? Caso não exista uma função PostGIS nativa, eu estaria interessado em uma abordagem baseada em Python.
- Qual seria uma maneira inteligente de armazenar o resultado em uma tabela PostGIS, já que os polígonos podem ter diferentes números de arestas?
Respostas:
Ontem não tive tempo de criá-lo em detalhes ... Veja minha solução em 4 etapas:
A última consulta fornece os IDs de construção com uma junção espacial usando st_touches. Espero que ajude. Atualização - No qgis, a solução fica assim:
fonte
UPDATE
deve fazer o truque. Obrigado novamente por esta ótima solução. Vou esperar mais alguns dias se outras respostas aparecerem antes de aceitar.ST_ForceRHR
? Essa resposta realmente parece boa.ST_ForceRHR
solução, mas não foi bem-sucedida. Seria grato por dicas ... Eu tenteiST_Dump(ST_Boundary(ST_ForceRHR(the_geom)))