Разница двух буферов

Я хочу создать буфер 100 м вокруг линии. Но я не хочу выбирать первый 20-метровый буфер. Я попробовал что-то вроде этого:

SELECT st_buffer(l.geom, 100) FROM line l
EXCEPT
SELECT st_buffer(l.geom, 20) FROM line l

Но после проверки в QGIS это не сработало. Как мне это решить?

1 ответ

Решение

EXCEPT не собираюсь делать это здесь. Это вернет все строки в первом запросе, которых нет во втором. Это не изменит столбцы этих строк. Результат st_buffer это одна геометрия, которая является одной строкой.

Вместо этого вы строите тор, пончик, вырезая меньший круг из большего. Я считаю (у меня нет PostGIS под рукой), вы можете сделать это, сделав два буфера, а затем вычесть меньшее из большего с помощью st_difference,

select
    st_difference(
        st_buffer(l.geom, 100), 
        st_buffer(l.geom, 20)
    ) as torus
from line l
Другие вопросы по тегам