Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 » SQL Anywhere サーバ 空間データサポート » 空間データ » SQL Anywhere による空間データのサポート » サポートされる空間データ型とその階層 » サポートされる空間述部

 

空間述部の直感性

述部の結果は直感的ではないことがあるため、特殊なケースをテストして、望みどおりの結果を得られていることを確認する必要があります。たとえば、ジオメトリが別のジオメトリを包含するには (a.ST_Contains(b)=1)、またはジオメトリが別のジオメトリ内に含まれるためには (b.ST_Within(a)=1)、a の内部と b の内部は交差している必要があり、b のどの部分も a の外部と交差することはできません。ただし、ジオメトリが別のジオメトリ内に含まれていることを予想していたが、含まれていない場合があります。

たとえば、次の例では、a.ST_Contains(b)b.ST_Within(a) (a が赤) に対して 0 が返されます。

それぞれに赤い正方形がある 4 つの図。最初の図では、青い長方形が部分的に赤い正方形に重なっています。2 番目の図では、青い点が赤い正方形の外にあります。3 番目の図では、青い点が赤い正方形の境界上にあります。4 番目の図では、赤い正方形の境界の部分に沿った線があります。

ケース 1 と 2 は明白です。紫色のジオメトリは赤い正方形内に完全には含まれていません。ケース 3 と 4 は明らかではありません。これらのケースは、紫色のジオメトリが赤い正方形の境界上にのみあります。紫色のジオメトリは赤い正方形内にあるように見えますが、ST_Contains は赤い正方形内にあるとは見なしません。

ST_Covers と ST_CoveredBy は、ST_Contains と ST_Within と類似した述部です。ST_Covers と ST_CoveredBy の場合、2 つのジオメトリの内部が交差している必要がない点が異なります。また、ST_Covers と ST_CoveredBy が返す結果は、ST_Contains と ST_Within より直感的でわかりやすい場合が多いです。

述部のテストで望んでいたものと異なる結果が返された場合、ST_Relate メソッドを使用して、テストする関係を厳密に指定することを検討してください。

 参照