【问题标题】:Difference of two buffers两个缓冲区的差异
【发布时间】:2016-11-16 22:59:51
【问题描述】:

我想围绕一条线创建一个 100m 的缓冲区。但我不想选择第一个 20m 缓冲区。我尝试过这样的事情:

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

但是在 QGIS 中检查后它没有工作。我该如何解决?

【问题讨论】:

  • EXCEPT 不会在这里做。这将返回第一个查询中不在第二个查询中的任何 rows。它不会修改这些行的列。我想你想要的是一个圆环?
  • @Schwern,没错。但是我怎么得到它呢?

标签: sql postgresql postgis sql-except


【解决方案1】:

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

【讨论】:

  • 谢谢,这成功了。
猜你喜欢
  • 2012-10-27
  • 1970-01-01
  • 2014-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 2012-03-09
相关资源
最近更新 更多