名前

ST_ContainsProperly — BがAの内部にインタセクトするが境界(または外部)にインタセクトしない場合に,TRUEを返します.Aは自身には,ContainsPropertyではありませんが,Containsです.

概要

boolean ST_ContainsProperly(geometry geomA, geometry geomB);

説明

BがAの内部にインタセクトするが境界(または外部)にインタセクトしない場合に,TRUEを返します.

Aは自身には,ContainsPropertyではありませんが,Containsです.

他のジオメトリの全てのポイントは,このジオメトリの内部のポイントです.ST_Relateで使われるDE-9IMでは[T**FF*FF*]に合致します.

[注意]

JTS文書からわずかに言い換えると,ST_ContainsST_Intersectsの上でこの述語を使用する利点は,個々のポイントでのトポロジの計算が必要なく,効果的に計算されることです.

この述語の,使用事例として,大きいポリゴンジオメトリでのジオメトリの集合のインタセクションを計算が挙げられます.インタセクションはかなり遅いので,ContainsPropertyを使って,対象ジオメトリのうち全体が領域内にあるものを抜き出すことができ,効果的になります.これらの場面では,インタセクションは確実に元の対象ジオメトリであることが演繹的に知られています.

初出バージョン: 1.4.0 - GEOS >= 3.1.0が必要です.

[重要項目]

GEOMETRYCOLLECTIONを引数にして呼ばないでください.

[重要項目]

この関数を不正なジオメトリで呼ばないでください.予期しない結果が返されます.

この関数は,ジオメトリ上で使用可能なインデクスを使うバウンディングボックス比較を自動的に取り込みます. インデクスの使用を避けるには,_ST_ContainsProperty関数を使います.

	--a circle within a circle
	SELECT ST_ContainsProperly(smallc, bigc) As smallcontainspropbig,
	ST_ContainsProperly(bigc,smallc) As bigcontainspropsmall,
	ST_ContainsProperly(bigc, ST_Union(smallc, bigc)) as bigcontainspropunion,
	ST_Equals(bigc, ST_Union(smallc, bigc)) as bigisunion,
	ST_Covers(bigc, ST_ExteriorRing(bigc)) As bigcoversexterior,
	ST_ContainsProperly(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
  smallcontainspropbig | bigcontainspropsmall | bigcontainspropunion | bigisunion | bigcoversexterior | bigcontainsexterior
------------------+------------------+------------------+------------+-------------------+---------------------
 f                     | t                    | f                    | 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
 

関連情報

ST_GeometryType, ST_Boundary, ST_Contains, ST_Covers,ST_CoveredBy, ST_Equals,ST_Relate,ST_Within