すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:地理空間関数

最終更新日:Jun 23, 2026

このトピックでは、地理空間関数の基本的な構文と例について説明します。

地理空間の概念

ST_ プレフィックスを持つ地理空間関数は、SQL/MM 標準および Open Geospatial Consortium (OGC) の OpenGIS 仕様に準拠しています。これらの関数は、Well-Known Text (WKT) フォーマットを使用して、ポイント、ラインストリング、ポリゴンなどのジオメトリを記述します。次の表に、サポートされているジオメトリとその WKT フォーマットを示します。

ジオメトリ

WKT フォーマット

ポイント

POINT (0 0)

ラインストリング

LINESTRING (0 0, 1 1, 1 2)

ポリゴン

POLYGON((0 0, 4 0, 4 4, 0 4, 0 0), (1 1, 2 1, 2 2, 1 2, 1 1))

マルチポイント

MULTIPOINT(0 0, 1 2)

マルチラインストリング

MULTILINESTRING((0 0, 1 1, 1 2), (2 3, 3 2, 5 4))

マルチポリゴン

MULTIPOLYGON(((0 0, 4 0, 4 4, 0 4, 0 0), (1 1, 2 1, 2 2, 1 2, 1 1)), ((-1 -1, -1 -2, -2 -2, -2 -1, -1 -1)))

ジオメトリコレクション

GEOMETRYCOLLECTION(POINT(2 3), LINESTRING(2 3, 3 4))

関数

タイプ

関数

構文

説明

SQL

SPL

コンストラクタ

ST_AsText 関数

ST_AsText(x)

ジオメトリの Well-Known Text (WKT) 表現を返します。

×

ST_GeometryFromText 関数

ST_GeometryFromText(x)

WKT 表現からジオメトリを構築します。

×

ST_LineFromText 関数

ST_LineFromText(x)

WKT 表現からラインストリングを構築します。

×

ST_Polygon 関数

ST_Polygon(x)

WKT 表現からポリゴンを構築します。

×

ST_Point 関数

ST_Point(x, y)

X 座標と Y 座標からポイントを構築します。

×

演算子

ST_Boundary 関数

ST_Boundary(x)

ジオメトリの境界を返します。

×

ST_Buffer 関数

ST_Buffer(x, distance)

入力ジオメトリから指定された距離内にあるすべてのポイントを含むジオメトリを返します。

×

ST_Difference 関数

ST_Difference(x, y)

最初のジオメトリのうち、2 番目のジオメトリと交差しない部分を返します。

×

ST_Envelope 関数

ST_Envelope(x)

ジオメトリのバウンディングボックスを返します。

×

ST_ExteriorRing 関数

ST_ExteriorRing(x)

ポリゴンの外部リングを表すラインストリングを返します。

×

ST_Intersection 関数

ST_Intersection(x, y)

2 つのジオメトリの交差部分を表すジオメトリを返します。

×

ST_SymDifference 関数

ST_SymDifference(x, y)

入力ジオメトリの交差しない部分を表すジオメトリを返します。

×

空間関係テスト

ST_Contains 関数

ST_Contains(x, y)

最初のジオメトリが 2 番目のジオメトリを含む場合に true を返します。境界は交差する可能性があります。

×

ST_Crosses 関数

ST_Crosses(x, y)

ジオメトリが交差する場合に true を返します。

×

ST_Disjoint 関数

ST_Disjoint(x, y)

2 つのジオメトリに共通のポイントがない場合に true を返します。

×

ST_Equals 関数

ST_Equals(x, y)

2 つのジオメトリが同一である場合に true を返します。

×

ST_Intersects 関数

ST_Intersects(x, y)

2 つのジオメトリが交差する場合に true を返します。

×

ST_Overlaps 関数

ST_Overlaps(x, y)

2 つのジオメトリが重複する場合に true を返します。ジオメトリは、同じディメンションを持ち、その交差が同じディメンションのジオメトリになるが、等しくない場合に重複します。

×

ST_Relate 関数

ST_Relate(x, y, patternMatrix string)

2 つのジオメトリが指定された空間関係パターンを満たす場合に true を返します。

×

ST_Touches 関数

ST_Touches(x, y)

2 つのジオメトリが境界で接しているが、内部が交差しない場合に true を返します。

×

ST_Within 関数

ST_Within(x, y)

最初のジオメトリが 2 番目のジオメトリ内に完全に含まれている場合に true を返します。

×

アクセサ

ST_Area 関数

ST_Area(x)

ジオメトリの 2D デカルト面積を返します。

×

ST_Centroid 関数

ST_Centroid(x)

ジオメトリの幾何学的重心を返します。

×

ST_CoordDim 関数

ST_CoordDim(x)

ジオメトリの座標ディメンションを返します。

×

ST_Dimension 関数

ST_Dimension(x)

ジオメトリの固有ディメンションを返します。これは座標ディメンション以下である必要があります。

×

ST_Distance 関数

ST_Distance(x, y)

2 つのジオメトリ間の最小距離を返します。

×

ST_EndPoint 関数

ST_EndPoint(x)

ラインストリングの最後のポイントを返します。

×

ST_IsClosed 関数

ST_IsClosed(x)

ラインストリングの始点と終点が同じ場合に true を返します。

×

ST_IsEmpty 関数

ST_IsEmpty(x)

指定されたジオメトリが空の場合に true を返します。

×

ST_IsRing 関数

ST_IsRing(x)

ラインストリングが閉じていて単純 (リング) である場合に true を返します。

×

ST_Length 関数

ST_Length(x)

ラインストリングの 2D デカルト長を返します。入力がマルチラインストリングの場合、その要素の長さの合計を返します。

×

ST_NumPoints 関数

ST_NumPoints(x)

ジオメトリ内のポイント (頂点) の数を返します。

×

ST_NumInteriorRing 関数

ST_NumInteriorRing(x)

ポリゴン内の内部リングの数を返します。

×

ST_StartPoint 関数

ST_StartPoint(x)

ラインストリングの最初のポイントを返します。

×

ST_X 関数

ST_X(x)

ポイントの X 座標を返します。

×

ST_XMax 関数

ST_XMax(x)

ジオメトリの最大 X 座標を返します。

×

ST_XMin 関数

ST_XMin(x)

ジオメトリの最小 X 座標を返します。

×

ST_Y 関数

ST_Y(x)

ポイントの Y 座標を返します。

×

ST_YMax 関数

ST_YMax(x)

ジオメトリの最大 Y 座標を返します。

×

ST_YMin 関数

ST_YMin(x)

ジオメトリの最小 Y 座標を返します。

×

Bing タイル

bing_tile 関数

bing_tile(x, y, zoom_level)

指定された X 座標、Y 座標、およびズームレベルから Bing タイルを返します。

×

bing_tile(quadKey)

指定されたクアッドツリーキーから Bing タイルを返します。

×

bing_tile_at 関数

bing_tile_at(x, y, zoom_level)

指定された緯度、経度、およびズームレベルから Bing タイルを返します。

×

bing_tile_coordinates 関数

bing_tile_coordinates(x)

Bing タイルの X 座標と Y 座標を返します。

×

bing_tile_polygon 関数

bing_tile_polygon(x)

Bing タイルのポリゴン表現を返します。

×

bing_tile_quadkey 関数

bing_tile_quadkey(x)

Bing タイルのクアッドツリーキーを返します。

×

bing_tile_zoom_level 関数

bing_tile_zoom_level(x)

Bing タイルのズームレベルを返します。

×

ST_AsText 関数

ジオメトリの WKT を返します。

構文

ST_AsText(x)

パラメーター

パラメーター

説明

x

入力ジオメトリ。

戻り値の型

戻り値の型は varchar です。

この例では、ポイントの WKT を返します。

  • クエリ文

    * | SELECT ST_AsText(ST_Point(1,1))
  • クエリと分析の結果は POINT (1 1) です。

ST_GeometryFromText 関数

Well-Known Text (WKT) 表現からジオメトリを構築します。

構文

ST_GeometryFromText(x)

パラメーター

パラメーター

説明

x

パラメーターは varchar 型である必要があります。

戻り値の型

geometry

マルチポリゴンを構築します。

  • クエリ文

    * | SELECT ST_GeometryFromText('multipolygon(((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))')
  • クエリは MULTIPOLYGON (((10 10, 10 20, 20 20, 20 15, 10 10)), ((50 40, 50 50, 60 50, 60 40, 50 40))) を返します。

ST_LineFromText 関数

WKT テキストからラインストリングを作成します。

構文

ST_LineFromText(x)

パラメーター

パラメーター

説明

x

varchar 型の値。

戻り値の型

linestring 型

ラインストリングを構築します。

  • クエリ文

    * | SELECT ST_LineFromText('linestring(10 10,20 20)')
  • クエリ結果: LINESTRING (10 10, 20 20)

ST_Polygon 関数

ST_Polygon 関数は、WKT 表現からポリゴンを作成します。

構文

ST_Polygon(x)

パラメーター

パラメーター

説明

x

varchar 値である必要があります。

戻り値の型

polygon

ポリゴンを作成します。

  • クエリと分析文

    * | SELECT ST_Polygon('polygon((10 10,10 20,20 20,20 15,10 10))')
  • 結果は POLYGON ((10 10, 20 15, 20 20, 10 20, 10 10)) です。

ST_Point 関数

指定された X 座標と Y 座標からポイントを構築します。

構文

ST_Point(x, y)

パラメーター

パラメーター

説明

x

ポイントの X 座標。データの型は DOUBLE である必要があります。

y

ポイントの Y 座標。データの型は DOUBLE である必要があります。

戻り値の型

point

ポイントを構築します。

  • クエリ文

    * | SELECT ST_Point(0,0)
  • クエリ結果は WKT フォーマットです: POINT (0 0)

ST_Boundary 関数

ST_Boundary 関数は、ジオメトリの境界を返します。

  • ポイントの境界は空です。関数は POINT EMPTY を返します。

  • ラインストリングの境界は、その終点で構成されます。

  • ポリゴンの境界は、その外部リングとすべての内部リングを形成するラインストリングで構成されます。

構文

ST_Boundary(x)

パラメーター

パラメーター

説明

x

geography 型の値。

戻り値の型

geography 型

ST_Polygon 関数を使用してポリゴンを構築し、ST_Boundary 関数でその境界を返します。

  • クエリ文

    * | SELECT  ST_Boundary(ST_Polygon('polygon((10 10,10 20,20 20,20 15,10 10))'))
  • クエリは LINESTRING (10 10, 20 15, 20 20, 10 20, 10 10) を返します。

ST_Buffer 関数

ST_Buffer 関数は、入力ジオメトリから指定された距離内にあるすべてのポイントを含むジオメトリを返します。

構文

ST_Buffer(x, distance)

パラメーター

パラメーター

説明

x

入力ジオメトリ。

distance

バッファー距離。

戻り値の型

geometry

この例では、ST_Point 関数を使用してポイントを構築し、ST_Buffer 関数を使用してそのポイントから指定された距離にポリゴンを作成します。

  • クエリ文

    * | SELECT ST_Buffer(ST_Point(1,1),1)
  • クエリは円を近似する POLYGON 値を返します。このポリゴンは多くの座標点で構成され、(2 1, 1.9978589232386...) で始まります。

ST_Difference 関数

2 つのジオメトリの点集合の差を表すジオメトリを返します。

構文

ST_Difference(x, y)

パラメーター

パラメーター

説明

x

ジオメトリ値。

y

ジオメトリ値。

戻り値の型

ジオメトリ値。

ST_GeometryFromText 関数で 2 つのジオメトリを構築し、ST_Difference 関数でそれらの点集合の差を計算します。

  • クエリと分析文

    * |
    SELECT
      ST_Difference(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,0 15,0 10), (50 40,50 50,60 50,60 40,50 40)))'
        ),
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 50)))'
        )
      ) AS "Difference"
  • クエリは次の結果を返します: MULTIPOLYGON (((0 10, 10 10, 10 17.5, 0 15, 0 10)), ((50 40, 60 40, 50 50, 50 40)))

ST_Envelope 関数

ジオメトリのバウンディングボックスを返します。

構文

ST_Envelope(x)

パラメーター

パラメーター

説明

x

ジオメトリ値。

戻り値の型

geometry

この例では、ST_GeometryFromText 関数でジオメトリを作成し、ST_Envelope 関数でそのバウンディングボックスを返します。

  • クエリと分析文

    * |
    SELECT
      ST_Envelope(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        )
      ) 
  • クエリは POLYGON ((10 10, 60 10, 60 50, 10 50, 10 10)) を返します。

ST_ExteriorRing 関数

ジオメトリの外部リングをラインストリングとして返します。

構文

ST_ExteriorRing(x)

パラメーター

パラメーター

説明

x

入力ポリゴンまたはマルチポリゴンジオメトリ。

戻り値の型

geometry

この例では、ST_GeometryFromText を使用してジオメトリを構築し、ST_ExteriorRing を使用してその外部リングを返します。

  • クエリ文

    * |
    SELECT
      ST_ExteriorRing(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        )
      )
  • クエリは LINESTRING (10 10, 10 20, 20 20, 20 15, 10 10) を返します。

ST_Intersection

2 つのジオメトリの交差部分を返します。

構文

ST_Intersection(x, y)

パラメーター

パラメーター

説明

x

最初のジオメトリ。

y

2 番目のジオメトリ。

戻り値の型

geometry

この例では、ST_GeometryFromText 関数を使用して 2 つのジオメトリを構築し、ST_Intersection 関数を使用してそれらの交差部分を計算します。

  • クエリ文

    * |
    SELECT
      ST_Intersection(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        ),
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        )
      ) 
  • クエリ結果: MULTIPOLYGON (((10 10, 10 20, 20 20, 20 15, 10 10)), ((50 40, 50 50, 60 50, 60 40, 50 40)))

ST_SymDifference 関数

2 つのジオメトリの対称差を表すジオメトリを返します。

構文

ST_SymDifference(x, y)

パラメーター

パラメーター

説明

x

ジオメトリ。

y

ジオメトリ。

戻り値の型

geometry

この例では、ST_GeometryFromText 関数を使用して 2 つのジオメトリを構築し、ST_SymDifference 関数を使用してそれらの対称差を計算します。

  • クエリ文

    * |
    SELECT
      ST_SymDifference(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        ),
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        )
      )
  • クエリは GEOMETRYCOLLECTION EMPTY を返します。

ST_Contains 関数

ST_Contains は、最初のジオメトリが 2 番目のジオメトリを含む場合に true を返します。2 つのジオメトリは境界で交差する可能性があります。

構文

ST_Contains(x, y)

パラメーター

パラメーター

説明

x

最初の入力ジオメトリ。

y

2 番目の入力ジオメトリ。

戻り値の型

boolean

この例では、ポリゴンがポイントを含むかどうかを確認します。

  • クエリ文

    * |
    SELECT
      ST_Contains(
        ST_GeometryFromText(
          'polygon((10 10,10 20,20 20,20 15,10 10))'
        ),
        ST_GeometryFromText(
          'point(11 11)'
        )
      )
  • クエリは true を返します。

ST_Crosses 関数

ST_Crosses 関数は、2 つのジオメトリが内部で共通のポイントを持つ場合に true を返します。

構文

ST_Crosses(x, y)

パラメーター

パラメーター

説明

x

ジオメトリ値。

y

ジオメトリ値。

戻り値の型

ブール値。

この例では、ST_GeometryFromText 関数を使用して 2 つのジオメトリを構築し、ST_Crosses 関数を使用してそれらが内部で共通のポイントを共有するかどうかを判断します。

  • クエリ文

    * |
    SELECT
      ST_Crosses(
        ST_GeometryFromText(
          'multipolygon (((10 10, 10 20, 20 20, 20 15 , 10 10), (50 40, 50 50, 60 50, 60 40, 50 40)))'
        ),
        ST_GeometryFromText(
          'multipolygon (((10 10, 10 20, 20 20, 20 15 , 10 10), (50 40, 50 50, 60 50, 60 40, 50 50)))'
        )
      )
  • クエリは false を返します。

ST_Disjoint

ST_Disjoint 関数は、2 つのジオメトリが互いに素であるかどうかをチェックします。ジオメトリが交差しない場合、true を返します。

構文

ST_Disjoint(x, y)

パラメーター

パラメーター

説明

x

ジオメトリ値。

y

ジオメトリ値。

戻り値の型

boolean

この例では、ST_GeometryFromText で 2 つのジオメトリを構築し、ST_Disjoint を使用してそれらが交差するかどうかをチェックします。

  • クエリ文

    * |
    SELECT
       ST_Disjoint(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        ),
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 50)))'
        )
      )
  • クエリは false を返します。

ST_Equals 関数

ST_Equals 関数は、2 つのジオメトリが同一であるかどうかを判断し、同一であれば true を返します。

構文

ST_Equals(x, y)

パラメーター

パラメーター

説明

x

最初のジオメトリ。

y

2 番目のジオメトリ。

戻り値の型

boolean

この例では、ST_GeometryFromText 関数を使用して 2 つのジオメトリを構築し、ST_Equals 関数を使用してそれらが同一であるかどうかを確認します。

  • クエリ文

    * |
    SELECT
       ST_Equals(
        ST_GeometryFromText(
          'multipolygon(((10 10,10 20,20 20,20 15,10 10),(50 40,50 50,60 50,60 40,50 40)))'
        ),
        ST_GeometryFromText(
          'multipolygon(((10 10,10 20,20 20,20 15,10 10),(50 40,50 50,60 50,60 40,50 50)))'
        )
      )
  • クエリは false を返します。

ST_Intersects 関数

2 つのジオメトリの平面投影が交差する場合に true を返します。

構文

ST_Intersects(x, y)

パラメーター

パラメーター

説明

x

geometry 型の値。

y

geometry 型の値。

戻り値の型

boolean

ST_GeometryFromText 関数を使用して 2 つのジオメトリを構築し、ST_Intersects 関数を使用してそれらが交差するかどうかを確認します。

  • クエリ例

    * |
    SELECT
       ST_Intersects(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        ),
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 50)))'
        )
      )
  • クエリと分析の結果は true です。

ST_Overlaps 関数

ST_Overlaps 関数は、同じディメンションの 2 つのジオメトリが重複しているが、どちらも他方を完全に含んでいない場合に true を返します。

構文

ST_Overlaps(x, y)

パラメーター

パラメーター

説明

x

最初の入力ジオメトリ。

y

2 番目の入力ジオメトリ。

戻り値の型

boolean

この例では、ST_GeometryFromText 関数を使用して 2 つのジオメトリを構築し、ST_Overlaps 関数を使用してそれらが重複するかどうかを確認します。

  • クエリと分析文

    * |
    SELECT
      ST_Overlaps(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        ),
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 50)))'
        )
      )
  • クエリは false を返します。

ST_Relate 関数

ST_Relate 関数は、2 つのジオメトリの内部または境界が交差するかどうかをチェックして、それらが関連しているかどうかを判断します。関連している場合は true を返します。

構文

ST_Relate(x, y, patternMatrix string)

パラメーター

パラメーター

説明

x

ジオメトリ値。

y

ジオメトリ値。

patternMatrix string

DE-9IM パターンマトリックス文字列。値は varchar 型です。

戻り値の型

boolean

この例では、ST_GeometryFromText 関数で 2 つのジオメトリを構築し、ST_Relate 関数を使用してそれらが空間的に関連しているかどうかを確認します。

  • クエリ文

    * |
    SELECT
      ST_Relate(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        ),
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 50)))'
        ),  '****T****'
      )
  • クエリは true を返します。

ST_Touches 関数

ST_Touches 関数は、2 つのジオメトリが境界で接しているが、内部が交差しない場合に true を返します。

構文

ST_Touches(x, y)

パラメーター

パラメーター

説明

x

最初のジオメトリ。

y

2 番目のジオメトリ。

戻り値の型

boolean 値を返します。

次のクエリでは、ST_GeometryFromText 関数を使用して 2 つのジオメトリを作成し、ST_Touches 関数を使用してそれらが接しているかどうかを確認します。

  • クエリ文

    * |
    SELECT
       ST_Touches(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        ),
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 50)))'
        )
      )
  • クエリは false を返します。

ST_Within 関数

ST_Within 関数は、最初のジオメトリが 2 番目のジオメトリ内に完全に含まれ、それらの境界が交差しない場合に true を返します。

構文

ST_Within(x, y)

パラメーター

パラメーター

説明

x

最初の入力ジオメトリ。

y

2 番目の入力ジオメトリ。

戻り値の型

boolean

この例では、ST_GeometryFromText 関数を使用して 2 つのジオメトリを構築し、ST_Within 関数を使用して最初のジオメトリが 2 番目のジオメトリ内に完全に含まれているかどうかを判断します。

  • クエリと分析文

    * |
    SELECT
      ST_Within(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        ),
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 50)))'
        )
      )
  • クエリは false を返します。

ST_Area 関数

ST_Area 関数は、ユークリッド距離を使用して、2 次元平面上のジオメトリの投影面積を計算します。

構文

ST_Area(x)

パラメーター

パラメーター

説明

x

入力ジオメトリ。

戻り値の型

double

この例では、マルチポリゴンの面積を計算します。

  • クエリ文

    * |
    SELECT
      ST_Area(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        )
      )
  • -25.0 を返します。

ST_Centroid 関数

ST_Centroid 関数は、入力ジオメトリの数学的な重心をポイントとして返します。

構文

ST_Centroid(x)

パラメーター

パラメーター

説明

x

入力ジオメトリ。

戻り値の型

geometry

この例では、マルチポリゴンジオメトリの重心を計算します。

  • クエリと分析文

    * |
    SELECT
      ST_Centroid(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        )
      )
  • この文は POINT (176.66666666666669 131.66666666666669) を返します。

ST_CoordDim 関数

ST_CoordDim 関数は、ジオメトリの座標ディメンションを返します。

構文

ST_CoordDim(x)

パラメーター

パラメーター

説明

x

ジオメトリ値。

戻り値の型

bigint

ST_GeometryFromText 関数を使用してジオメトリを構築し、ST_CoordDim 関数を使用してその座標ディメンションを返します。

  • クエリ文

    * |
    SELECT
      ST_CoordDim(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        )
      )
  • クエリは 2 を返します。

ST_Dimension 関数

ジオメトリの固有ディメンションを返します。これは座標ディメンションを超えることはできません。

構文

ST_Dimension(x)

パラメーター

パラメーター

説明

x

ジオメトリ値。

  • x がポイントまたは空のジオメトリの場合、関数は 0 を返します。

  • x がラインストリングの場合、関数は 1 を返します。

  • x がポリゴンの場合、関数は 2 を返します。

  • x がジオメトリコレクションの場合、関数はコレクション内のジオメトリの最大ディメンションを返します。

戻り値の型

bigint

この例では、ST_Dimension を使用して、ST_GeometryFromText によって作成されたジオメトリの固有ディメンションを検索します。

  • クエリ文

    * |
    SELECT
      ST_Dimension(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        )
      )
  • クエリは 2 を返します。

ST_Distance 関数

2 つのジオメトリ間の最小距離を返します。

構文

ST_Distance(x, y)

パラメーター

パラメーター

説明

x

ジオメトリ値。

y

ジオメトリ値。

戻り値の型

double

この例では、ST_GeometryFromText 関数を使用して 2 つのジオメトリを作成し、ST_Distance 関数を使用してそれらの間の最小距離を計算します。

  • クエリ文

    * |
    SELECT
      ST_Distance(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 50)))'
        ),
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        )
      )
  • クエリ結果は 0.0 です。

ST_EndPoint 関数

ST_EndPoint は、ラインストリングの最後のポイントを返します。

構文

ST_EndPoint(x)

パラメーター

パラメーター

説明

x

geometry 型の値。

戻り値の型

point 型の値。

ST_LineFromText でラインストリングを構築し、ST_EndPoint を使用して最後のポイントを返します。

  • クエリと分析文

    * |
    SELECT
      ST_EndPoint(
        ST_LineFromText(
          'linestring (10 10,20 20)'
        )
      )
  • POINT (20 20) を返します。

ST_IsClosed

ST_IsClosed 関数は、ジオメトリが閉じている場合に true を返します。

構文

ST_IsClosed(x)

パラメーター

パラメーター

説明

x

チェックするジオメトリ。

戻り値の型

ブール値。

この例では、ST_LineFromText を使用してラインストリングを構築し、ST_IsClosed を使用してラインストリングが閉じているかどうかを確認します。

  • クエリ文

    * |
    SELECT
      ST_IsClosed(
        ST_LineFromText(
          'linestring (10.05 10.28 , 20.95 20.89 )'
        )
      )
  • クエリ結果: false

ST_IsEmpty 関数

ST_IsEmpty 関数は、入力ジオメトリが空の場合に true を返します。

構文

ST_IsEmpty(x)

パラメーター

パラメーター

説明

x

入力は geometry 型の値である必要があります。

戻り値の型

ブール値。

ST_Point 関数を使用してポイントを作成し、ST_IsEmpty 関数を使用してそれが空かどうかを確認します。

  • クエリ文

    * | SELECT ST_IsEmpty(ST_Point(1,1))
  • クエリと分析の結果は false です。

ST_IsRing 関数

ST_IsRing 関数は、入力ジオメトリがリング (閉じた単純なラインストリング) である場合に true を返します。

構文

ST_IsRing(x)

パラメーター

パラメーター

説明

x

パラメーターは geometry 型である必要があります。

戻り値の型

Boolean

この例では、ST_LineFromText でラインストリングを構築し、ST_IsRing でそれがリングであるかどうかを確認します。

  • クエリ文

    * |
    SELECT
      ST_IsRing(
        ST_LineFromText(
          'linestring (10.05 10.28,20.95 20.89 )'
        )
      )
  • クエリは false を返します。

ST_Length 関数

ST_Length 関数は、ユークリッド距離を使用してラインストリングの 2D 投影長を計算します。マルチラインストリングの場合、コンポーネントのラインストリングの長さの合計を返します。

構文

ST_Length(x)

パラメーター

パラメーター

説明

x

ジオメトリ値。

戻り値の型

double 値。

ST_LineFromText を使用してラインストリングを構築し、ST_Length を使用してその長さを計算します。

  • クエリ文

    * |
    SELECT
      ST_Length(
        ST_LineFromText(
          'linestring (10.05 10.28,20.95 20.89)'
        )
      )
  • クエリは 15.211249126879752 を返します。

ST_NumPoints 関数

ジオメトリ内のポイントの数を返します。

構文

ST_NumPoints(x)

パラメーター

パラメーター

説明

x

ジオメトリ値。

戻り値の型

bigint

この例では、まず ST_LineFromText 関数でラインストリングを構築し、次に ST_NumPoints 関数を使用してその中のポイントの数を返します。

  • クエリ文

    * |
    SELECT
      ST_NumPoints(
        ST_LineFromText('linestring (10 10,20 20)')
      )
  • クエリ結果: 2

ST_NumInteriorRing 関数

ジオメトリ内の内部リングの数を返します。

構文

ST_NumInteriorRing(x)

パラメーター

パラメーター

説明

x

ジオメトリオブジェクト。

戻り値の型

bigint 値。

この例では、ST_GeometryFromText を使用してジオメトリを構築し、ST_NumInteriorRing を使用してその内部リングの数を計算します。

  • クエリ文

    * |
    SELECT
      ST_NumInteriorRing(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        )
      )
  • クエリは 1 を返します。

ST_StartPoint 関数

ラインストリングの最初のポイントを返します。

構文

ST_StartPoint(x)

パラメーター

パラメーター

説明

x

入力ラインストリングを指定します。

戻り値の型

point

この例では、ST_LineFromText 関数でラインストリングを作成し、ST_StartPoint 関数を使用して最初のポイントを返します。

  • クエリ文

    * |
    SELECT
      ST_StartPoint(
        ST_LineFromText(
          'linestring (10 10,20 20 )'
        )
      )
  • クエリと分析の結果: POINT (10 10)

ST_X 関数

入力ポイントの X 座標を返します。

構文

ST_X(x)

パラメーター

パラメーター

説明

x

パラメーターはポイントである必要があります。

戻り値の型

戻り値の型は double です。

この例では、ST_Point 関数を使用してポイントを構築し、ST_X を使用してその X 座標を返します。

  • クエリ文

    * | SELECT ST_X(ST_Point(1,3))
  • クエリは 1.0 を返します。

ST_XMax 関数

ST_XMax は、ジオメトリの最大 x 座標を返します。

構文

ST_XMax(x)

パラメーター

パラメーター

説明

x

ジオメトリ値。

戻り値の型

double を返します。

ST_GeometryFromText 関数を使用してジオメトリを構築し、ST_XMax 関数を使用してその最大 x 座標を返します。

  • クエリ文

    * |
    SELECT
      ST_XMax(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        )
      )
  • クエリは 60.0 を返します。

ST_XMin 関数

ST_XMin 関数は、ジオメトリの最小 x 座標を返します。

構文

ST_XMin(x)

パラメーター

パラメーター

説明

x

入力ジオメトリ。

戻り値の型

double

この例では、ST_GeometryFromText 関数でジオメトリを構築し、ST_XMin 関数を使用してその最小 x 座標を返します。

  • クエリ文

    * |
    SELECT
      ST_XMin(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        )
      )
  • クエリ結果: 10.0

ST_Y 関数

入力ポイントの y 座標を返します。

構文

ST_Y(x)

パラメーター

パラメーター

説明

x

point 型の値。

戻り値の型

double 型の値。

この例では、ST_Point 関数を使用してポイントを作成し、ST_Y 関数を使用してその y 座標を取得します。

  • クエリと分析文

    * | SELECT ST_Y(ST_Point(1,3))
  • クエリと分析の結果: 3.0

ST_YMax 関数

ST_YMax 関数は、ジオメトリの最大 y 座標を返します。

構文

ST_YMax(x)

パラメーター

パラメーター

説明

x

ジオメトリ値。

戻り値の型

double

この例では、ST_GeometryFromText 関数でジオメトリを構築し、ST_YMax 関数でその最大 y 座標を返します。

  • クエリと分析文

    * |
    SELECT
      ST_YMax(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        )
      )
  • クエリと分析の結果は 50.0 です。

ST_YMin 関数

ジオメトリの最小 Y 座標を返します。

構文

ST_YMin(x)

パラメーター

パラメーター

説明

x

入力ジオメトリ。

戻り値の型

double

この例では、ST_GeometryFromText 関数を使用してジオメトリを構築し、ST_YMin 関数を使用してその最小 Y 座標を返します。

  • クエリと分析文

    * |
    SELECT
      ST_YMin(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        )
      )
  • 結果は 10.0 です。

bing_tile

bing_tile 関数は Bing タイルを作成します。

構文

  • x 座標、y 座標、およびズームレベルから Bing タイルを作成します。

    bing_tile(x, y, zoom_level)
  • クアッドツリーキーから Bing タイルを作成します。

    bing_tile(quadKey)

パラメーター

パラメーター

説明

x

x 座標。整数である必要があります。

y

y 座標。整数である必要があります。

zoom_level

ズームレベル。1 から 23 までの整数である必要があります。

quadKey

クアッドツリーキー。

戻り値の型

Bing タイルを返します。

  • 例 1: x 座標、y 座標、およびズームレベルから Bing タイルを作成します。

    • クエリ文

      * | SELECT bing_tile(10, 20, 20)
    • クエリと分析の結果: {"x":10,"y":20,"zoom":20}

  • 例 2: クアッドツリーキーから Bing タイルを作成します。

    • クエリ文

      * | SELECT bing_tile(bing_tile_quadkey(bing_tile(10, 20, 20)))
    • クエリと分析の結果: {"x":10,"y":20,"zoom":20}

Bing_tile_at 関数

bing_tile_at 関数は、緯度、経度、およびズームレベルから Bing タイルを作成します。

構文

bing_tile_at(x, y, zoom_level)

パラメーター

パラメーター

説明

x

緯度。[-85.05112878, 85.05112878] の範囲の double 値。

y

経度。[-180, 180] の範囲の double 値。

zoom_level

ズームレベル。1 から 23 までの整数。

戻り値の型

BingTile オブジェクト。

この例では、Bing タイルを作成します。

  • クエリ

    * | SELECT bing_tile_at(47.265511, -122.465691, 12)
  • クエリは {"x":654,"y":1436,"zoom":12} を返します。

bing_tile_coordinates 関数

指定された Bing タイルの X 座標と Y 座標を返します。

構文

bing_tile_coordinates(x)

パラメーター

パラメーター

説明

x

BingTile 値。

戻り値の型

2 つの整数の配列を返します: [X, Y]。

この例では、指定された Bing タイルの座標を取得します。

  • クエリ文

    * | SELECT bing_tile_coordinates(bing_tile_at(47.265511, -122.465691, 12))
  • 結果: [654,1436]

bing_tile_polygon

Bing タイルのポリゴン表現を返します。

構文

bing_tile_polygon(x)

パラメーター

パラメーター

説明

x

BingTile 値。

戻り値の型

polygon

Bing タイルのポリゴン表現を返します。

  • クエリ文

    * | SELECT bing_tile_polygon(bing_tile_at(30.26, 120.19, 12))
  • クエリ結果: POLYGON ((120.146484375 30.297017883372042, 120.146484375 30.221101852485987, 120.234375 30.221101852485987, 120.234375 30.297017883372042, 120.146484375 30.297017883372042))

Bing_tile_quadkey

bing_tile_quadkey 関数は、Bing タイルのクアッドツリーキーを返します。

構文

bing_tile_quadkey(x)

パラメーター

パラメーター

説明

x

BingTile 値。

戻り値の型

varchar

この例では、座標 (10, 20) とズームレベル 20 のタイルを、対応するクアッドツリーキーに変換します。

  • クエリ文

    * | SELECT bing_tile_quadkey(bing_tile(10, 20, 20))
  • クエリはクアッドツリーキー 000000000000021210 を返します。

bing_tile_zoom_level 関数

Bing タイルのズームレベルを返します。

構文

bing_tile_zoom_level(x)

パラメーター

パラメーター

説明

x

BingTile オブジェクト。

戻り値の型

double

次の例では、特定の Bing タイルのズームレベルを計算します。

  • クエリ文

    * | SELECT bing_tile_zoom_level(bing_tile(10, 20, 20))
  • クエリ結果: 20