Soy bastante nuevo en el mundo de los SIG y especialmente en PostGIS, así que discúlpeme si la respuesta parece evidente ...
Me gustaría hacer un análisis de varios edificios. Una cosa que me interesa es su superficie de fachada junto con la orientación respectiva. Como se ilustra en la imagen a continuación, me gustaría tener la longitud y la orientación (normal) de todos los bordes en una serie de polígonos. En el ejemplo, destaqué solo una superficie.
Una tabla de resultados podría verse así:
building_id | edge_id | orientation | edge_length
-------------------------------------------------
1 | 1 | 315 | 10.0
1 | 2 | 45 | 7.0
1 | ... | ... | ...
Sin embargo, no estoy seguro de si es una forma inteligente de almacenar el resultado para su posterior procesamiento (por ejemplo, calcular la distancia desde el borde hasta el próximo edificio, etc.). Entonces mi pregunta es doble:
- ¿Existe una función eficiente de PostGIS que pueda analizar los bordes de un polígono? En caso de que no haya una función nativa de PostGIS, alternativamente me interesaría un enfoque basado en Python.
- ¿Cuál sería una forma inteligente de almacenar el resultado en una tabla PostGIS, ya que los polígonos pueden tener diferentes números de bordes?
Respuestas:
Ayer no tuve tiempo para crearlo en detalles ... Vea mi solución en 4 pasos:
La última consulta le proporciona los identificadores de construcción con una unión espacial usando st_touches. Espero eso ayude. Actualización: en qgis la solución se ve así:
fuente
UPDATE
debería hacer el truco. Gracias de nuevo por esta gran solución. Esperaré algunos días más si aparecen otras respuestas, antes de aceptar.ST_ForceRHR
? Esta respuesta en realidad parece estar bien.ST_ForceRHR
solución, pero no tuve éxito. Estaría agradecido por las sugerencias ... Lo intentéST_Dump(ST_Boundary(ST_ForceRHR(the_geom)))