st_contains

当ST_Contains - 返回true时,当且仅在B中的所有点都在 A中,并且至少有一个B中的点位于A中。

简介

boolean ST_Contains (geometry geomA, geometry geomB) ;

描述

几何形状A包含几何B,当且仅当B中的所有点都位于A中,并且至少有一个B中的点位于A的内部,这个定义的精妙之处在于.A不包含其边界,但是A包含本身。 ST_ContainsProperly 的差别在于A并没有包含其本身。

如果B是完全在A的内部,返回TRUE。对于这个函数是有道理的,因为源的几何形状都必须是同一个坐标投影,具有相同的SRID。 ST_Contains是逆ST_Within的。 所以ST_Contains(A,B) 意味着ST_Within(B,A)除了无效的几何情况始终是假,没有定义的情况下除外。

由GEOS模块执行

[重要] 

不要叫GEOMETRYCOLLECTION作为一个参数用

[重要] 

不要使用此功能无效的几何。 你会得到意想不到的结果。

调用该函数将自动包括边界框比较,这将使使用任何索引几何。 为了避免使用索引,使用功能_ST_Contains。

注意:这是“允许”的版本,返回布尔值,而不是一个整数。

 此方法实现OpenGIS的简单功能实现SQL规范 OGC规格“s2.1.1.2 / / s2.1.13.3 -相同范围内(几何,几何形状A)

 这个方法实现了SQL / MM规格:SQL-MM 3:5.1.31

有一定的细微之处是不够直观的的ST_Contains和ST_Within。 退房OGC盖的精妙之处,包含内

示例

ST_Contains在下面的插图中被判定返回值为TRUE

LINESTRING / MULTIPOINT

POLYGON / POINT

POLYGON / LINESTRING

POLYGON / POLYGON

ST_Contains在下面的插图中被判定返回值为FALSE

POLYGON / MULTIPOINT

POLYGON / LINESTRING

-- A circle within a circle
SELECT ST_Contains(smallc, bigc) As smallcontainsbig,
	   ST_Contains(bigc,smallc) As bigcontainssmall,
	   ST_Contains(bigc, ST_Union(smallc, bigc)) as bigcontainsunion,
	   ST_Equals(bigc, ST_Union(smallc, bigc)) as bigisunion,
	   ST_Covers(bigc, ST_ExteriorRing(bigc)) As bigcoversexterior,
	   ST_Contains(bigc, ST_ExteriorRing(bigc)) As bigcontainsexterior
FROM (SELECT ST_Buffer(ST_GeomFromText('POINT(1 2)'), 10) As smallc,
			 ST_Buffer(ST_GeomFromText('POINT(1 2)'), 20) As bigc) As foo;

-- Result
  smallcontainsbig | bigcontainssmall | bigcontainsunion | bigisunion | bigcoversexterior | bigcontainsexterior
------------------+------------------+------------------+------------+-------------------+---------------------
 f                | t                | t                | t          | t        | f

-- Example demonstrating difference between contains and contains properly
SELECT ST_GeometryType(geomA) As geomtype, ST_Contains(geomA,geomA) AS acontainsa, ST_ContainsProperly(geomA, geomA) AS acontainspropa,
   ST_Contains(geomA, ST_Boundary(geomA)) As acontainsba, ST_ContainsProperly(geomA, ST_Boundary(geomA)) As acontainspropba
FROM (VALUES ( ST_Buffer(ST_Point(1,1), 5,1) ),
			 ( ST_MakeLine(ST_Point(1,1), ST_Point(-1,-1) ) ),
			 ( ST_Point(1,1) )
	  ) As foo(geomA);

  geomtype    | acontainsa | acontainspropa | acontainsba | acontainspropba
--------------+------------+----------------+-------------+-----------------
ST_Polygon    | t          | f              | f           | f
ST_LineString | t          | f              | f           | f
ST_Point      | t          | t              | f           | f

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值