2016-11-16 6 views
0

1行の周りに100mのバッファを作成したいと思います。しかし、私は最初の20mバッファを選択したくありません。私はこのようなものを試した:2つのバッファの相違

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はここでは実行しません。これは、最初のクエリで2番目にない行を返します。これらの行の列は変更されません。 st_bufferの結果は、単一の行である単一のgeometryです。

代わりに、トーラス、ドーナツを作成します。より大きな円から小さな円を彫ってください。私は(私はPostGISを持っていないと思いますが)あなたは2つのバッファを作って、次に大きいものから小さい方を引きます(st_difference)。

select 
    st_difference(
     st_buffer(l.geom, 100), 
     st_buffer(l.geom, 20) 
    ) as torus 
from line l 
+1

ありがとう、これは仕事をした。 – TD1995

関連する問題