2016-11-16 87 views
0

我想創建一個100米左右的緩衝區。但我不想選擇第一個20米緩衝區。我試過這樣的:兩個緩衝區的差異

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

但是在QGIS中檢查它沒有工作。我該如何解決這個問題?

+1

'EXCEPT'不打算在這裏做。這將返回第一個查詢中不在第二個中的任何***行***。它不會修改這些行的列。我想你想要的是一個圓環? – Schwern

+0

@Schwern,沒錯。但我怎麼得到它? – TD1995

回答

3

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 
+1

謝謝,這完成了這項工作。 – TD1995