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_ContainsとST_Intersectsの上でこの述語を使用する利点は,個々のポイントでのトポロジの計算が必要なく,効果的に計算されることです. この述語の,使用事例として,大きいポリゴンジオメトリでのジオメトリの集合のインタセクションを計算が挙げられます.インタセクションはかなり遅いので,ContainsPropertyを使って,対象ジオメトリのうち全体が領域内にあるものを抜き出すことができ,効果的になります.これらの場面では,インタセクションは確実に元の対象ジオメトリであることが演繹的に知られています. |
初出バージョン: 1.4.0 - GEOS >= 3.1.0が必要です.
![]() | |
|
![]() | |
この関数を不正なジオメトリで呼ばないでください.予期しない結果が返されます. |
この関数は,ジオメトリ上で使用可能なインデクスを使うバウンディングボックス比較を自動的に取り込みます. インデクスの使用を避けるには,_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