Разница двух буферов
Я хочу создать буфер 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