このトピックでは、Lindorm GanosBase がジオメトリオブジェクト間の空間関係を確認するためにサポートする関数について説明します。
該当するエンジンとバージョン
このトピックで説明されている空間関係の関数は、LindormTable にのみ適用されます。これらの関数は、LindormTable のすべてのバージョンでサポートされています。
関数
次の表に、Lindorm GanosBase でサポートされている空間関係の関数を示します。
関数 | 説明 |
| |
| |
| |
ST_Intersects 関数を呼び出して、2 つのジオメトリオブジェクトが交差するかどうかを確認できます。2 つのジオメトリオブジェクトに共有空間がある場合、 | |
| |
|
ST_Contains
ST_Contains 関数を呼び出して、指定した最初のジオメトリオブジェクトに、指定した 2 番目のジオメトリオブジェクトが含まれているかどうかを確認できます。最初のジオメトリオブジェクトに 2 番目のジオメトリオブジェクトが含まれている場合、この関数は true を返します。
構文
ジオメトリオブジェクトに別のジオメトリオブジェクトが含まれているかどうかを確認します。
boolean ST_Contains(geometry geomA,geometry geomB)ジオメトリオブジェクトに指定されたポイントオブジェクトが含まれているかどうかを確認します。
boolean ST_Contains(geometry geom,double x,double y)
パラメーター
パラメーター | 説明 |
geomA | 指定する最初のジオメトリオブジェクト。 |
geomB | 指定する 2 番目のジオメトリオブジェクト。 |
geom | 指定するジオメトリオブジェクト。 |
x | ポイントオブジェクトの経度。 |
y | ポイントオブジェクトの緯度。 |
geomB のすべての点が geomA の内部または境界に含まれている場合、geomA は geomB を含みます。
ST_ContainsはST_Withinの逆関数です。ST_Contains(A,B) と ST_Within(B,A) の戻り値は同じです。
例
例 1:
SELECT ST_Contains(ST_GeomFromText('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'), ST_GeomFromText('POINT(5 5)')) AS iscontain;次の結果が返されます。
+-----------+ | iscontain | +-----------+ | true | +-----------+例 2:
SELECT ST_Contains(ST_GeomFromText('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'),5,5) AS iscontain;次の結果が返されます。
+-----------+ | iscontain | +-----------+ | true | +-----------+例 3:
SELECT ST_Contains(ST_GeomFromText('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'), ST_GeomFromText('POINT(180 23)')) AS iscontain;次の結果が返されます。
+-----------+ | iscontain | +-----------+ | false | +-----------+例 4:
SELECT ST_Contains(ST_GeomFromText('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'),180,23) AS iscontain;次の結果が返されます。
+-----------+ | iscontain | +-----------+ | false | +-----------+
ST_DWithin
ST_DWithin 関数を呼び出して、2 つのジオメトリオブジェクト間の 2D 距離が指定された範囲内にあるかどうかを確認できます。オブジェクト間の 2D 距離が指定された範囲内にある場合、この関数は true を返します。
構文
2 つのジオメトリオブジェクト間の 2D 距離が指定された範囲内にあるかどうかを確認します。
boolean ST_DWithin(geometry geomA, geometry geomB, double distanceOfSrid)ジオメトリオブジェクトと指定されたポイントオブジェクト間の 2D 距離が指定された範囲内にあるかどうかを確認します。
boolean ST_DWithin(geometry geom, double x, double y, double distanceOfSrid)
パラメーター
パラメーター | 説明 |
geomA | 指定する最初のジオメトリオブジェクト。 |
geomB | 指定する 2 番目のジオメトリオブジェクト。 |
distanceOfSrid | 空間参照システム識別子(SRID)4326 の距離。単位:度。 |
geom | 指定するジオメトリオブジェクト。 |
x | ポイントオブジェクトの経度。 |
y | ポイントオブジェクトの緯度。 |
次のタイプのジオメトリオブジェクトを指定できます:Point、LineString、Polygon、MultiPoint、MultiLineString、MultiPolygon、および GeometryCollection。
例
例 1:
SELECT ST_DWithin(ST_GeomFromText('POINT(5 5)'), ST_GeomFromText('POINT(6 6)'), 10) AS iswithin;次の結果が返されます。
+----------+ | iswithin | +----------+ | true | +----------+例 2:
SELECT ST_DWithin(ST_GeomFromText('POINT(5 5)'),6,6,10) AS iswithin;次の結果が返されます。
+----------+ | iswithin | +----------+ | true | +----------+
ST_DWithinSphere
ST_DWithinSphere 関数を呼び出して、2 つのジオメトリオブジェクト間の球面距離が指定された範囲内にあるかどうかを確認できます。オブジェクト間の球面距離が指定された範囲内にある場合、この関数は true を返します。
構文
2 つのジオメトリオブジェクト間の球面距離が指定された範囲内にあるかどうかを確認します。
boolean ST_DWithinSphere(geometry geomA, geometry geomB, double distance)ジオメトリオブジェクトと指定されたポイントオブジェクト間の球面距離が指定された範囲内にあるかどうかを確認します。
boolean ST_DWithinSPhere(geometry geom, double x, double y, double distance)
パラメーター
パラメーター | 説明 |
geomA | 指定する最初のジオメトリオブジェクト。 |
geomB | 指定する 2 番目のジオメトリオブジェクト。 |
distance | 指定する距離。単位:メートル。球面距離を決定する際に、関数はセンチメートル単位の誤差を持つ場合があります。 |
geom | 指定するジオメトリオブジェクト。 |
x | ポイントオブジェクトの経度。 |
y | ポイントオブジェクトの緯度。 |
次のタイプのジオメトリオブジェクトを指定できます:Point、LineString、Polygon、MultiPoint、MultiLineString、MultiPolygon、および GeometryCollection。
例
例 1:
SELECT ST_DWithinSphere(ST_GeomFromText('POINT(120 36)'), ST_GeomFromText('POINT(116 40)'), 570000) AS iswithin;この例では、点(120、36)と点(116、40)の間の球面距離は 566034.7930717631 メートルであり、指定された範囲内にあります。したがって、ST_DWithinSphere 関数は、次の結果に示すように true を返します。
+----------+ | iswithin | +----------+ | true | +----------+例 2:
SELECT ST_DWithinSphere(ST_GeomFromText('POINT(120 36)'),116,40,570000) AS iswithin;次の結果が返されます。
+----------+ | iswithin | +----------+ | true | +----------+
ST_Intersects
ST_Intersects 関数を呼び出して、2 つのジオメトリオブジェクトが交差するかどうかを確認できます。2 つのジオメトリオブジェクトに共有空間がある場合、ST_Intersects は 2 つのオブジェクトが交差すると判断し、true を返します。
構文
2 つのジオメトリオブジェクトが交差するかどうかを確認します。
boolean ST_ Intersects(geometry geomA, geometry geomB)ジオメトリオブジェクトと指定されたポイントオブジェクトが交差するかどうかを確認します。
boolean ST_ Intersects(geometry geom, double x, double y)
パラメーター
パラメーター | 説明 |
geomA | 指定する最初のジオメトリオブジェクト。 |
geomB | 指定する 2 番目のジオメトリオブジェクト。 |
geom | 指定するジオメトリオブジェクト。 |
x | ポイントオブジェクトの経度。 |
y | ポイントオブジェクトの緯度。 |
次のタイプのジオメトリオブジェクトを指定できます:Point、LineString、Polygon、MultiPoint、MultiLineString、MultiPolygon、および GeometryCollection。
例
例 1:
SELECT ST_Intersects(ST_GeomFromText('POINT(0 0)'), ST_GeomFromText('LINESTRING ( 2 0, 0 2 )')) AS isinter;次の結果が返されます。
+---------+ | isinter | +---------+ | false | +---------+例 2:
SELECT ST_Intersects(ST_GeomFromText('LINESTRING ( 2 0, 0 2 )'), 0, 0) AS isinter;次の結果が返されます。
+---------+ | isinter | +---------+ | false | +---------+例 3:
SELECT ST_Intersects(ST_GeomFromText('POINT(0 0)'), ST_GeomFromText('LINESTRING ( 0 0, 0 2 )')) AS isinter;次の結果が返されます。
+---------+ | isinter | +---------+ | true | +---------+例 4:
SELECT ST_Intersects(ST_GeomFromText('LINESTRING ( 0 0, 0 2 )'), 0, 0) AS isinter;次の結果が返されます。
+---------+ | isinter | +---------+ | true | +---------+
ST_Overlaps
ST_Overlaps オブジェクトを呼び出して、2 つのジオメトリオブジェクトが空間的に重複しているかどうかを確認できますが、一方が他方に含まれていません。2 つのジオメトリオブジェクトが空間的に重複しているが、一方が他方に含まれていない場合、この関数は true を返します。
構文
2 つのジオメトリオブジェクトが空間的に重複しているかどうかを確認します。
boolean ST_Overlaps(geometry geomA, geometry geomB)ジオメトリオブジェクトと指定されたポイントオブジェクトが重複しているかどうかを確認します。
boolean ST_Overlaps(geometry geom, double x, double y)
パラメーター
パラメーター | 説明 |
geomA | 指定する最初のジオメトリオブジェクト。 |
geomB | 指定する 2 番目のジオメトリオブジェクト。 |
geom | 指定するジオメトリオブジェクト。 |
x | ポイントオブジェクトの経度。 |
y | ポイントオブジェクトの緯度。 |
次のタイプのジオメトリオブジェクトを指定できます:Point、LineString、Polygon、MultiPoint、MultiLineString、MultiPolygon、および GeometryCollection。
例
例 1:
SELECT ST_Overlaps(ST_GeomFromText('LINESTRING(0 0,0 2)'),ST_GeomFromText('LINESTRING(0 1,0 3)')) as overlaps;次の結果が返されます。
+----------+ | overlaps | +----------+ | true | +----------+例 2:
SELECT ST_Overlaps(ST_GeomFromText('LINESTRING(0 0,0 2)'),ST_GeomFromText('POINT(0 1)')) as overlaps;次の結果が返されます。
+----------+ | overlaps | +----------+ | false | +----------+例 3:
SELECT ST_Overlaps(ST_GeomFromText('LINESTRING(0 0,0 2)'), 0, 1) as overlaps;次の結果が返されます。
+----------+ | overlaps | +----------+ | false | +----------+
ST_Within
ST_Within 関数を呼び出して、指定した 2 番目のジオメトリオブジェクトが、指定した最初のジオメトリオブジェクト内に完全に含まれているかどうかを確認できます。2 番目のジオメトリオブジェクトが最初のジオメトリオブジェクト内に完全に含まれている場合、この関数は true を返します。
構文
ジオメトリオブジェクトが別のジオメトリオブジェクト内に完全に含まれているかどうかを確認します。
boolean ST_Within(geometry geomA, geometry geomB)指定されたポイントオブジェクトがジオメトリオブジェクト内に完全に含まれているかどうかを確認します。
bboolean ST_Within(double x, double y, geometry geom)
パラメーター
パラメーター | 説明 |
geomA | 指定する最初のジオメトリオブジェクト。 |
geomB | 指定する 2 番目のジオメトリオブジェクト。 |
geom | 指定するジオメトリオブジェクト。 |
x | ポイントオブジェクトの経度。 |
y | ポイントオブジェクトの緯度。 |
次のタイプのジオメトリオブジェクトを指定できます:Point、LineString、Polygon、MultiPoint、MultiLineString、MultiPolygon、および GeometryCollection。
ST_Within(A,B)とST_Within(B,Aの両方で true が返された場合、A と B は空間的に等しいジオメトリオブジェクトです。
例
例 1:
SELECT ST_Within(ST_GeomFromText('POINT(5 5)'), ST_GeomFromText('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))')) AS iswithin;次の結果が返されます。
+----------+ | iswithin | +----------+ | true | +----------+例 2:
SELECT ST_Within(5, 5, ST_GeomFromText('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))')) AS iswithin;次の結果が返されます。
+----------+ | iswithin | +----------+ | true | +----------+