Я довольно новичок в мире ГИС и особенно в PostGIS, поэтому извините, если ответ кажется очевидным ...
Я хотел бы сделать анализ ряда зданий. Одна вещь, которая меня интересует, это их фасадные поверхности вместе с соответствующей ориентацией. Как показано на рисунке ниже, я хотел бы иметь длину и (нормальную) ориентацию всех ребер в серии многоугольников. В примере я выделил только одну поверхность.
Таблица результатов может выглядеть так:
building_id | edge_id | orientation | edge_length
-------------------------------------------------
1 | 1 | 315 | 10.0
1 | 2 | 45 | 7.0
1 | ... | ... | ...
Однако я не уверен, что это разумный способ сохранить результат для дальнейшей обработки (например, рассчитать расстояние от края до следующего здания и т. Д.). Итак, мой вопрос состоит из двух частей:
- Существует ли эффективная функция PostGIS, которая может анализировать ребра многоугольника? В случае отсутствия встроенной функции PostGIS, я бы заинтересовался подходом на основе Python.
- Какой разумный способ сохранить результат в таблице PostGIS, поскольку полигоны могут иметь разное число ребер?
Ответы:
Вчера у меня не было времени, чтобы создать его в деталях ... Смотрите мое решение в 4 этапа:
Последний запрос дает вам идентификаторы здания с пространственным объединением, используя st_touches. Надеюсь, поможет. Обновление - в qgis решение выглядит так:
источник
UPDATE
должен сделать свое дело. Еще раз спасибо за это отличное решение. Я буду ждать еще несколько дней, если появятся другие ответы, прежде чем принимать.ST_ForceRHR
? Этот ответ на самом деле кажется правильным.ST_ForceRHR
решение, но безуспешно . Был бы благодарен за подсказки ... Я попробовалST_Dump(ST_Boundary(ST_ForceRHR(the_geom)))