このトピックでは、Lindorm GanosBase でサポートされている測定関数について説明します。
該当するエンジンとバージョン
このトピックで説明する測定関数は、LindormTable にのみ適用されます。
このトピックで説明する集計関数は、LindormTable 2.6.5 以降のバージョンでサポートされています。 LindormTable のバージョンを表示またはアップグレードする方法の詳細については、「LindormTable のリリースノート」および「Lindorm インスタンスのマイナーエンジンバージョンをアップグレードする」をご参照ください。
Lindorm SQL のバージョンは 2.6.8 以降である必要があります。 Lindorm SQL バージョンの表示方法の詳細については、「SQL バージョン」をご参照ください。
関数
次の表に、Lindorm GanosBase でサポートされている測定関数を示します。
関数 | 説明 |
指定されたポリゴンオブジェクトの面積を計算します。 | |
指定された 2 つのジオメトリオブジェクト間の 2 次元ユークリッド距離を計算します。 | |
指定された 2 つのジオメトリオブジェクト間の最小球面距離を計算します。 戻り値の距離の単位はメートルです。 | |
ジオメトリオブジェクトが有効かどうかを確認します。 | |
指定されたジオメトリオブジェクトの 2 次元長を計算します。 | |
指定されたジオメトリオブジェクトの球面長を計算します。 |
ST_Area
ST_Area 関数は、指定されたポリゴンオブジェクトの面積を計算します。
構文
double ST_Area(geometry g)パラメーター
パラメーター | 説明 |
g | ジオメトリオブジェクト。 |
Point、LineString、Polygon、MultiPoint、MultiLineString、MultiPolygon、GeometryCollection などのジオメトリオブジェクトを指定できます。
ジオメトリオブジェクトを指定すると、この関数は、ジオメトリオブジェクトの空間参照系で指定された単位でジオメトリオブジェクトの 2 次元デカルト面積を返します。 Lindorm GanosBase SQL は、SRID が 4326 の空間参照系を使用します。このシステムでは、距離は度単位で測定されます。
指定されたポリゴンオブジェクトの点が複数の閉じた図形を囲んでいる場合、この関数は時計回りおよび反時計回りに点で囲まれた閉じた図形の面積の差を計算し、差の絶対値を返します。
ポリゴンオブジェクトを指定しない場合、値 0 が返されます。
例
例 1:ポリゴンオブジェクトの面積を計算します。
SELECT ST_Area(ST_GeomFromText('POLYGON((2 2, 2 8, 8 8, 8 2, 2 2))')) AS area; // ポリゴンの面積を計算します。次の結果が返されます。
+------+ | area | +------+ | 36.0 | +------+例 2:LineString オブジェクトの面積を計算します。
SELECT ST_Area(ST_GeomFromText('LINESTRING(1 3,5 6)')) AS area; // LineString の面積を計算します。次の結果が返されます。
+------+ | area | +------+ | 0.0 | +------+
ST_Distance
ST_Distance 関数は、指定された 2 つのジオメトリオブジェクト間の 2 次元ユークリッド距離を計算します。 戻り値の距離の単位は度です。
構文
double ST_Distance(geometry geomA, geometry geomB)パラメーター
パラメーター | 説明 |
geomA | 最初のジオメトリオブジェクト。 |
geomB | 2 番目のジオメトリオブジェクト。 |
Point、LineString、Polygon、MultiPoint、MultiLineString、MultiPolygon、GeometryCollection などのジオメトリオブジェクトを指定できます。
ジオメトリオブジェクトのいずれかが空の場合、値 0 が返されます。
例
例 1
SELECT ST_Distance(ST_GeomFromText('POINT(-72.1235 42.3521)'),ST_GeomFromText('LINESTRING(-72.1260 42.45, -72.123 42.1546)')) AS d; // 2 つのジオメトリオブジェクト間の距離を計算します。次の結果が返されます。
+-----------------------+ | d | +-----------------------+ | 0.0015056772638228177 | +-----------------------+例 2
SELECT ST_Distance(ST_GeomFromText('POINT(-72.1235 42.3521)'),ST_GeomFromText('LINESTRING EMPTY')) AS d; // 空の LineString と点との距離を計算します。次の結果が返されます。
+---+ | d | +---+ |0.0| +---+
ST_DistanceSphere
ST_DistanceSphere 関数は、指定された 2 つのジオメトリオブジェクト間の最小球面距離を計算します。 戻り値の距離の単位はメートルです。
構文
double ST_DistanceSphere(geometry geomA, geometry geomB)パラメーター
パラメーター | 説明 |
geomA | 最初のジオメトリオブジェクト。 |
geomB | 2 番目のジオメトリオブジェクト。 |
Point、LineString、Polygon、MultiPoint、MultiLineString、MultiPolygon、GeometryCollection などのジオメトリオブジェクトを指定できます。
ジオメトリオブジェクトのいずれかが空の場合、値 0 が返されます。
指定されたジオメトリオブジェクトのいずれかがポリゴンまたは LineString オブジェクトの場合、結果にセンチメートル単位の誤差が生じる可能性があります。
例
例 1
SELECT ST_DistanceSphere(ST_GeomFromText('POINT(-72.1235 42.3521)'),ST_GeomFromText('LINESTRING(-72.1260 42.45, -72.123 42.1546)')) AS d; // 2 つのジオメトリオブジェクト間の球面距離を計算します。次の結果が返されます。
+--------------------+ | d | +--------------------+ | 124.53287523764577 | +--------------------+例 2
SELECT ST_DistanceSphere(ST_GeomFromText('POINT(-72.1235 42.3521)'),ST_GeomFromText('LINESTRING EMPTY')) AS d; // 空の LineString と点との球面距離を計算します。次の結果が返されます。
+---+ | d | +---+ |0.0| +---+
ST_IsValid
ST_IsValid 関数は、ジオメトリオブジェクトが有効かどうかを確認します。 無効なジオメトリオブジェクトには、自己交差ポリゴン、重複するポリゴンを含む MultiPolygon オブジェクト、および定義に準拠していないその他のオブジェクトが含まれます。
構文
boolean ST_IsValid(geometry g)パラメーター
パラメーター | 説明 |
g | ジオメトリオブジェクト。 |
例
ID が 110000 のジオメトリオブジェクトが有効かどうかを確認します。
SELECT ST_IsValid(geom) FROM mapdata WHERE id=110000;
// 指定されたジオメトリが有効かどうかを確認します。次の結果が返されます。
+------------------+
| st_isvalid(geom) |
+------------------+
| true |
+------------------+返される結果は true です。これは、ID が 110000 のジオメトリオブジェクトが有効であることを示します。 false が返された場合、ID が 110000 のジオメトリオブジェクトは無効です。
ST_Length
ST_Length 関数は、指定されたジオメトリオブジェクトの 2 次元長を計算します。 戻り値の長さの単位は度です。
構文
double ST_Length(geometry g)パラメーター
パラメーター | 説明 |
g | ジオメトリオブジェクト。 |
指定されたジオメトリオブジェクトが LineString オブジェクトの場合、デカルト座標系でのオブジェクトの 2 次元長が返されます。
指定されたジオメトリオブジェクトがポリゴンオブジェクトの場合、値 0 が返されます。
例
例 1
SELECT ST_Length(ST_GeomFromText('LINESTRING(1 3,5 6)')) AS length; // LineString の長さを計算します。次の結果が返されます。
+--------+ | length | +--------+ | 5.0 | +--------+例 2
SELECT ST_Length(ST_GeomFromText('POLYGON((2 2, 2 8, 8 8, 8 2, 2 2))')) AS length; // ポリゴンの長さを計算します。次の結果が返されます。
+--------+ | length | +--------+ | 0.0 | +--------+
ST_LengthSphere
ST_LengthSphere 関数は、指定されたジオメトリオブジェクトの球面長を計算します。 戻り値の長さの単位はメートルです。
構文
double ST_LengthSphere(geometry g)パラメーター
パラメーター | 説明 |
g | ジオメトリオブジェクト。 |
指定されたジオメトリオブジェクトが LineString オブジェクトの場合、オブジェクトの球面長が返されます。
指定されたジオメトリオブジェクトがポリゴンオブジェクトの場合、値 0 が返されます。
例
例 1
SELECT ST_LengthSphere(ST_GeomFromText('LINESTRING(1 3,5 6)')) AS length; // LineString の球面長を計算します。次の結果が返されます。
+------------------+ | length | +------------------+ | 554137.283806292 | +------------------+例 2
SELECT ST_LengthSphere(ST_GeomFromText('POLYGON((2 2, 2 8, 8 8, 8 2, 2 2))')) AS length; // ポリゴンの球面長を計算します。次の結果が返されます。
+--------+ | length | +--------+ | 0.0 | +--------+