Usando postgis para generar sombras de construcción

9

Actualmente estoy trabajando en una herramienta de estimación de potencial solar para edificios existentes. La idea es usar la forma de los edificios (= Polígono), su altura y crear la sombra resultante en una hora determinada. Solo voy a hacer la prueba para algunas posiciones del sol. Sé sobre la función de hierba r.sun.mask pero está dominada por lo que estoy tratando de hacer.

Por ahora solo quiero obtener la sombra cuando el sol está al sur, a 18 ° en el cielo. Por lo tanto, el edificio debería proyectar una sombra aproximadamente tres veces su altura.

Lo que estoy tratando de conseguir:

Lo que estoy tratando de conseguir

He estado buscando durante un tiempo, pero no encontré ninguna herramienta en postgis para hacer esto. Estaba pensando en amortiguar y luego cortar el polígono, pero no pude hacerlo funcionar. ¿Conoces alguna herramienta o tienes alguna idea de cómo hacerlo?

aeboq
fuente

Respuestas:

8

La manera más simple de hacer esto es con un

ST_Extrude (geom, dirección x, dirección y, 0)

. Usted tendrá que calcular el factor de extrusión a sí mismo, por supuesto, y que asume todo el polígono es la misma altura (en su ejemplo, extrusión sería como: ST_Extrude(geom, 0, 3.0*height, 0))

Aquí está el manual sobre ST_Extrude. Tenga en cuenta que necesita postgis con SFCGAL para esto, consulte los documentos de instalación sobre cómo obtener esto si aún no lo tiene.

inclinación
fuente
La forma de salida es la que quiero, sin embargo, la superficie poliédrica no se puede intersecar con un polígono. Probé el ST_Force2D en el poliédrico y luego lo interseco con mi polígono, pero no funciona. ¿Hay otra función con un formato de salida más práctico, o una forma de convertir esta superficie poliédrica en polígono?
aeboq
2
Sí, puedes volcarlo a polígonos normales. Ejemplo:SELECT ST_AsText((ST_Dump(ST_Extrude(ST_MakeEnvelope(10,10,100,100,28992),0,8,0))).geom)
inclinación
0

Puede valer la pena considerar la exportación de QGIS a Blender, ya que esto le permitiría colocar el sol como una luz y animarlo durante el día y el año. Encontré un flujo de trabajo aquí que parece relevante.

Steve Barnes
fuente