地理関数

この機能はベータ版であり、変更される可能性があります。設計とコードは公式GA機能よりも成熟しておらず、保証なしでそのまま提供されています。ベータ機能は公式GA機能のサポートSLAの対象外です。

地理関数は、geo_pointgeo_shape、およびshapeフィールドに格納されたジオメトリ、または他の地理関数によって返されるジオメトリで動作します。

制限事項

geo_pointgeo_shape、およびshapeとそのタイプは、SQLではジオメトリとして表現され、以下の例外を除いて互換的に使用できます:

  • geo_shapeおよびshapeフィールドにはドキュメント値がないため、これらのフィールドはフィルタリング、グルーピング、またはソートに使用できません。
  • geo_pointsフィールドはインデックスされており、デフォルトでドキュメント値を持っていますが、緯度と経度のみが保存され、インデックスされており、元の値からいくつかの精度が失われています(緯度の4.190951585769653E-8および経度の8.381903171539307E-8)。高度成分は受け入れられますが、ドキュメント値には保存されず、インデックスされません。したがって、フィルタリング、グルーピング、またはソートでST_Z関数を呼び出すと、nullが返されます。

ジオメトリ変換

ST_AsWKT

概要:

SQL

  1. ST_AsWKT(
  2. geometry
  3. )

入力:

ジオメトリ。もしnullの場合、関数はnullを返します。

出力: 文字列

説明: geometryのWKT表現を返します。

SQL

  1. SELECT city, ST_AsWKT(location) location FROM "geo" WHERE city = 'Amsterdam';
  2. city:s | location:s
  3. Amsterdam |POINT (4.850312 52.347557)

ST_WKTToSQL

概要:

SQL

  1. ST_WKTToSQL(
  2. string
  3. )

入力:

ジオメトリのWKT表現の文字列。もしnullの場合、関数は
nullを返します。

出力: ジオメトリ

説明: WKT表現からジオメトリを返します。

SQL

  1. SELECT CAST(ST_WKTToSQL('POINT (10 20)') AS STRING) location;
  2. location:s
  3. POINT (10.0 20.0)

ジオメトリプロパティ

ST_GeometryType

概要:

SQL

  1. ST_GeometryType(
  2. geometry
  3. )

入力:

ジオメトリ。もしnullの場合、関数はnullを返します。

出力: 文字列

説明: geometryのタイプを返します。例えば、POINT、MULTIPOINT、LINESTRING、MULTILINESTRING、POLYGON、MULTIPOLYGON、GEOMETRYCOLLECTION、ENVELOPE、またはCIRCLE。

SQL

  1. SELECT ST_GeometryType(ST_WKTToSQL('POINT (10 20)')) type;
  2. type:s
  3. POINT

ST_X

概要:

SQL

  1. ST_X(
  2. geometry
  3. )

入力:

ジオメトリ。もしnullの場合、関数はnullを返します。

出力: ダブル

説明: ジオメトリの最初の点の経度を返します。

SQL

  1. SELECT ST_X(ST_WKTToSQL('POINT (10 20)')) x;
  2. x:d
  3. 10.0

ST_Y

概要:

SQL

  1. ST_Y(
  2. geometry
  3. )

入力:

ジオメトリ。もしnullの場合、関数はnullを返します。

出力: ダブル

説明: ジオメトリの最初の点の緯度を返します。

SQL

  1. SELECT ST_Y(ST_WKTToSQL('POINT (10 20)')) y;
  2. y:d
  3. 20.0

ST_Z

概要:

SQL

  1. ST_Z(
  2. geometry
  3. )

入力:

ジオメトリ。もしnullの場合、関数はnullを返します。

出力: ダブル

説明: ジオメトリの最初の点の高度を返します。

SQL

  1. SELECT ST_Z(ST_WKTToSQL('POINT (10 20 30)')) z;
  2. z:d
  3. 30.0

ST_Distance

概要:

SQL

  1. ST_Distance(
  2. geometry,
  3. geometry
  4. )

入力:

ソースジオメトリ。もしnullの場合、関数はnullを返します。
ターゲットジオメトリ。もしnullの場合、関数はnullを返します。

出力: ダブル

説明: ジオメトリ間の距離をメートル単位で返します。両方のジオメトリはポイントである必要があります。

SQL

  1. SELECT ST_Distance(ST_WKTToSQL('POINT (10 20)'), ST_WKTToSQL('POINT (20 30)')) distance;
  2. distance:d
  3. 1499101.2889383635