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