首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >st_intersects Vs st_overlaps

st_intersects Vs st_overlaps
EN

Stack Overflow用户
提问于 2012-05-07 18:14:37
回答 1查看 19.1K关注 0票数 10

这两个查询的区别是什么:

代码语言:javascript
复制
select a.gid, sum(length(b.the_geom)) 
  from polygons as a 
     , roads as b 
 where st_intersects(a.the_geom,b.the_geom) 
 group by a.gid ;

select a.gid, sum(length(b.the_geom)) 
  from polygons as a 
     , roads as b 
 where st_overlaps(a.the_geom,b.the_geom) 
 group by a.gid ;

其中第一个查询给出了正确的输出,而第二个查询根本没有检索任何行。与多边形相交的道路也会与之重叠,对吧?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-11 05:03:53

来自PostGIS的文档

http://postgis.net/docs/ST_Intersects.html

如果一个几何图形或地理图形共享任何部分的空间,则它们相交。重叠,接触,都暗示着空间的交集。如果前面提到的任何一个返回true,那么几何图形在空间上也是相交的。

http://postgis.net/docs/ST_Overlaps.html

如果几何图形“空间重叠”,则

返回TRUE。我们的意思是它们相交,但一个并不完全包含另一个。

不同之处在于:如果两个几何图形100%重叠,则它们不再重叠。

下面是一个POSTGIS示例:

代码语言:javascript
复制
SELECT ST_Overlaps(a,b) As a_overlap_b, ST_Intersects(a, b) As a_intersects_b, ST_Contains(b, a) As b_contains_a
FROM (SELECT 
    ST_Polygon(ST_GeomFromText('LINESTRING(1 1,3 1,3 3,1 1)'), 4326)  As a,
    ST_Polygon(ST_GeomFromText('LINESTRING(1 1,3 1,3 3,1 1)'), 4326)  As b)
    As foo;
    -- INTERSECT is TRUE, OVERLAP is FALSE because B equals A

    SELECT ST_Overlaps(a,b) As a_overlap_b, ST_Intersects(a, b) As a_intersects_b, ST_Contains(b, a) As b_contains_a
FROM (SELECT 
    ST_Polygon(ST_GeomFromText('LINESTRING(1 1,3 1,3 3,1 1)'), 4326)  As a,
    ST_Polygon(ST_GeomFromText('LINESTRING(1 1,4 1,4 4,1 1)'), 4326)  As b)
    As foo;
    -- INTERSECT is TRUE, OVERLAP is FALSE because B contains A

    SELECT ST_Overlaps(a,b) As a_overlap_b, ST_Intersects(a, b) As a_intersects_b, ST_Contains(b, a) As b_contains_a
FROM (SELECT 
    ST_Polygon(ST_GeomFromText('LINESTRING(0 0,2 0,2 2,0 0)'), 4326)  As a,
    ST_Polygon(ST_GeomFromText('LINESTRING(1 1,3 1,3 3,1 1)'), 4326)  As b)
    As foo;
    -- INTERSECT is TRUE, OVERLAP is TRUE because not all of A intersects B and not all of B intersects A
票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10480320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档