地理関数
この機能はベータ版であり、変更される可能性があります。設計とコードは公式GA機能よりも成熟しておらず、保証なしでそのまま提供されています。ベータ機能は公式GA機能のサポートSLAの対象外です。
地理関数は、geo_point
、geo_shape
、およびshape
フィールドに格納されたジオメトリ、または他の地理関数によって返されるジオメトリで動作します。
制限事項
geo_point
、geo_shape
、およびshape
とそのタイプは、SQLではジオメトリとして表現され、以下の例外を除いて互換的に使用できます:
geo_shape
およびshape
フィールドにはドキュメント値がないため、これらのフィールドはフィルタリング、グルーピング、またはソートに使用できません。geo_points
フィールドはインデックスされており、デフォルトでドキュメント値を持っていますが、緯度と経度のみが保存され、インデックスされており、元の値からいくつかの精度が失われています(緯度の4.190951585769653E-8および経度の8.381903171539307E-8)。高度成分は受け入れられますが、ドキュメント値には保存されず、インデックスされません。したがって、フィルタリング、グルーピング、またはソートでST_Z
関数を呼び出すと、null
が返されます。
ジオメトリ変換
ST_AsWKT
概要:
SQL
ST_AsWKT(
geometry
)
入力:
ジオメトリ。もしnull の場合、関数はnull を返します。 |
出力: 文字列
説明: geometry
のWKT表現を返します。
SQL
SELECT city, ST_AsWKT(location) location FROM "geo" WHERE city = 'Amsterdam';
city:s | location:s
Amsterdam |POINT (4.850312 52.347557)
ST_WKTToSQL
概要:
SQL
ST_WKTToSQL(
string
)
入力:
ジオメトリのWKT表現の文字列。もしnull の場合、関数はnull を返します。 |
出力: ジオメトリ
説明: WKT表現からジオメトリを返します。
SQL
SELECT CAST(ST_WKTToSQL('POINT (10 20)') AS STRING) location;
location:s
POINT (10.0 20.0)
ジオメトリプロパティ
ST_GeometryType
概要:
SQL
ST_GeometryType(
geometry
)
入力:
ジオメトリ。もしnull の場合、関数はnull を返します。 |
出力: 文字列
説明: geometry
のタイプを返します。例えば、POINT、MULTIPOINT、LINESTRING、MULTILINESTRING、POLYGON、MULTIPOLYGON、GEOMETRYCOLLECTION、ENVELOPE、またはCIRCLE。
SQL
SELECT ST_GeometryType(ST_WKTToSQL('POINT (10 20)')) type;
type:s
POINT
ST_X
概要:
SQL
ST_X(
geometry
)
入力:
ジオメトリ。もしnull の場合、関数はnull を返します。 |
出力: ダブル
説明: ジオメトリの最初の点の経度を返します。
SQL
SELECT ST_X(ST_WKTToSQL('POINT (10 20)')) x;
x:d
10.0
ST_Y
概要:
SQL
ST_Y(
geometry
)
入力:
ジオメトリ。もしnull の場合、関数はnull を返します。 |
出力: ダブル
説明: ジオメトリの最初の点の緯度を返します。
SQL
SELECT ST_Y(ST_WKTToSQL('POINT (10 20)')) y;
y:d
20.0
ST_Z
概要:
SQL
ST_Z(
geometry
)
入力:
ジオメトリ。もしnull の場合、関数はnull を返します。 |
出力: ダブル
説明: ジオメトリの最初の点の高度を返します。
SQL
SELECT ST_Z(ST_WKTToSQL('POINT (10 20 30)')) z;
z:d
30.0
ST_Distance
概要:
SQL
ST_Distance(
geometry,
geometry
)
入力:
ソースジオメトリ。もしnull の場合、関数はnull を返します。 |
|
ターゲットジオメトリ。もしnull の場合、関数はnull を返します。 |
出力: ダブル
説明: ジオメトリ間の距離をメートル単位で返します。両方のジオメトリはポイントである必要があります。
SQL
SELECT ST_Distance(ST_WKTToSQL('POINT (10 20)'), ST_WKTToSQL('POINT (20 30)')) distance;
distance:d
1499101.2889383635