Использование postgis для создания строительных оттенков


9

В настоящее время я работаю над инструментом оценки солнечного потенциала для существующих зданий. Идея состоит в том, чтобы использовать форму зданий (= многоугольник), их высоту и создать результирующий оттенок в данный час. Я собираюсь сделать тест только для нескольких позиций солнца. Я знаю о функции травы r.sun.mask, но она слишком сильна для того, что я пытаюсь сделать.

Сейчас я хочу получить тень только когда солнце находится на юге, под углом 18 ° к небу. Поэтому здание должно отбрасывать тень примерно в три раза больше его высоты.

Что я пытаюсь получить:

Что я пытаюсь получить

Я долго искал, но не нашел в Postgis никакого инструмента для этого. Я думал о буферизации, а затем обрезал многоугольник, но не мог заставить его работать. Вы знаете какой-либо инструмент или знаете, как это сделать?

Ответы:


8

Самый простой способ сделать это с

ST_Extrude (геом, х-направление, у-направление, 0)

. Вы должны будете вычислить выталкивать множитель себя, конечно , и это предполагает , весь ваш многоугольник ту же высоту (в вашем примере, выдавливание будет , как: ST_Extrude(geom, 0, 3.0*height, 0))

Вот руководство по ST_Extrude. Имейте в виду, что для этого вам нужен postgis с SFCGAL, проверьте документацию по установке, как получить это, если у вас его еще нет.


Выходная форма - та, которую я хочу, однако многогранная поверхность не может пересекаться с многоугольником. Я попробовал ST_Force2D на многограннике, а затем пересек его с моим многоугольником, но он не работает. Есть ли другая функция с более практичным форматом вывода или способ преобразования этой многогранной поверхности в многоугольник?
aeboq

2
Да, вы можете сбросить его на обычные полигоны. Пример:SELECT ST_AsText((ST_Dump(ST_Extrude(ST_MakeEnvelope(10,10,100,100,28992),0,8,0))).geom)
наклон

0

Возможно, стоит подумать об экспорте из QGIS в Blender, поскольку это позволит вам размещать солнце как свет и оживлять его в течение дня и года. Я нашел рабочий процесс здесь , что выглядит актуальным.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.