我想围绕一条线创建一个 100m 的缓冲区。但我不想选择第一个 20m 缓冲区。我试过这样的事情:
SELECT st_buffer(l.geom, 100) FROM line l
EXCEPT
SELECT st_buffer(l.geom, 20) FROM line l
但是在QGIS中检查后它没有工作。我该如何解决这个问题?
我想围绕一条线创建一个 100m 的缓冲区。但我不想选择第一个 20m 缓冲区。我试过这样的事情:
SELECT st_buffer(l.geom, 100) FROM line l
EXCEPT
SELECT st_buffer(l.geom, 20) FROM line l
但是在QGIS中检查后它没有工作。我该如何解决这个问题?
EXCEPT
不会在这里做。这将返回第一个查询中不在第二个查询中的任何行。它不会修改这些行的列。的结果st_buffer
是单个几何,它是单行。
取而代之的是,您通过从较大的圆圈中雕刻出较小的圆圈来构建一个圆环,一个甜甜圈。我相信(我没有方便的 PostGIS)你可以通过制作两个缓冲区然后从较大的缓冲区中减去较小的缓冲区来做到这一点st_difference
。
select
st_difference(
st_buffer(l.geom, 100),
st_buffer(l.geom, 20)
) as torus
from line l