0
我想创建一个100米左右的缓冲区。但我不想选择第一个20米缓冲区。我试过这样的:两个缓冲区的差异
SELECT st_buffer(l.geom, 100) FROM line l
EXCEPT
SELECT st_buffer(l.geom, 20) FROM line l
但是在QGIS中检查它没有工作。我该如何解决这个问题?
我想创建一个100米左右的缓冲区。但我不想选择第一个20米缓冲区。我试过这样的:两个缓冲区的差异
SELECT st_buffer(l.geom, 100) FROM line l
EXCEPT
SELECT st_buffer(l.geom, 20) FROM line l
但是在QGIS中检查它没有工作。我该如何解决这个问题?
EXCEPT
不打算在这里做。这将返回第一个查询中不在第二个查询中的任何行。它不会修改这些行的列。 st_buffer
的结果是单个行geometry。
取而代之,您可以通过雕刻较大圆圈中的较小圆圈来构建圆环面圈。我相信(我没有PostGIS方便),你可以做两个缓冲区,然后从st_difference
减去较大的较小者。
select
st_difference(
st_buffer(l.geom, 100),
st_buffer(l.geom, 20)
) as torus
from line l
谢谢,这完成了这项工作。 – TD1995
'EXCEPT'不打算在这里做。这将返回第一个查询中不在第二个中的任何***行***。它不会修改这些行的列。我想你想要的是一个圆环? – Schwern
@Schwern,没错。但我怎么得到它? – TD1995