このトピックでは、地理空間関数の基本的な構文と例について説明します。
地理空間の概念
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(x) |
ジオメトリの Well-Known Text (WKT) 表現を返します。 |
√ |
× |
|
|
ST_GeometryFromText(x) |
WKT 表現からジオメトリを構築します。 |
√ |
× |
||
|
ST_LineFromText(x) |
WKT 表現からラインストリングを構築します。 |
√ |
× |
||
|
ST_Polygon(x) |
WKT 表現からポリゴンを構築します。 |
√ |
× |
||
|
ST_Point(x, y) |
X 座標と Y 座標からポイントを構築します。 |
√ |
× |
||
|
演算子 |
ST_Boundary(x) |
ジオメトリの境界を返します。 |
√ |
× |
|
|
ST_Buffer(x, distance) |
入力ジオメトリから指定された距離内にあるすべてのポイントを含むジオメトリを返します。 |
√ |
× |
||
|
ST_Difference(x, y) |
最初のジオメトリのうち、2 番目のジオメトリと交差しない部分を返します。 |
√ |
× |
||
|
ST_Envelope(x) |
ジオメトリのバウンディングボックスを返します。 |
√ |
× |
||
|
ST_ExteriorRing(x) |
ポリゴンの外部リングを表すラインストリングを返します。 |
√ |
× |
||
|
ST_Intersection(x, y) |
2 つのジオメトリの交差部分を表すジオメトリを返します。 |
√ |
× |
||
|
ST_SymDifference(x, y) |
入力ジオメトリの交差しない部分を表すジオメトリを返します。 |
√ |
× |
||
|
空間関係テスト |
ST_Contains(x, y) |
最初のジオメトリが 2 番目のジオメトリを含む場合に |
√ |
× |
|
|
ST_Crosses(x, y) |
ジオメトリが交差する場合に |
√ |
× |
||
|
ST_Disjoint(x, y) |
2 つのジオメトリに共通のポイントがない場合に |
√ |
× |
||
|
ST_Equals(x, y) |
2 つのジオメトリが同一である場合に |
√ |
× |
||
|
ST_Intersects(x, y) |
2 つのジオメトリが交差する場合に |
√ |
× |
||
|
ST_Overlaps(x, y) |
2 つのジオメトリが重複する場合に |
√ |
× |
||
|
ST_Relate(x, y, patternMatrix string) |
2 つのジオメトリが指定された空間関係パターンを満たす場合に |
√ |
× |
||
|
ST_Touches(x, y) |
2 つのジオメトリが境界で接しているが、内部が交差しない場合に |
√ |
× |
||
|
ST_Within(x, y) |
最初のジオメトリが 2 番目のジオメトリ内に完全に含まれている場合に |
√ |
× |
||
|
アクセサ |
ST_Area(x) |
ジオメトリの 2D デカルト面積を返します。 |
√ |
× |
|
|
ST_Centroid(x) |
ジオメトリの幾何学的重心を返します。 |
√ |
× |
||
|
ST_CoordDim(x) |
ジオメトリの座標ディメンションを返します。 |
√ |
× |
||
|
ST_Dimension(x) |
ジオメトリの固有ディメンションを返します。これは座標ディメンション以下である必要があります。 |
√ |
× |
||
|
ST_Distance(x, y) |
2 つのジオメトリ間の最小距離を返します。 |
√ |
× |
||
|
ST_EndPoint(x) |
ラインストリングの最後のポイントを返します。 |
√ |
× |
||
|
ST_IsClosed(x) |
ラインストリングの始点と終点が同じ場合に |
√ |
× |
||
|
ST_IsEmpty(x) |
指定されたジオメトリが空の場合に |
√ |
× |
||
|
ST_IsRing(x) |
ラインストリングが閉じていて単純 (リング) である場合に |
√ |
× |
||
|
ST_Length(x) |
ラインストリングの 2D デカルト長を返します。入力がマルチラインストリングの場合、その要素の長さの合計を返します。 |
√ |
× |
||
|
ST_NumPoints(x) |
ジオメトリ内のポイント (頂点) の数を返します。 |
√ |
× |
||
|
ST_NumInteriorRing(x) |
ポリゴン内の内部リングの数を返します。 |
√ |
× |
||
|
ST_StartPoint(x) |
ラインストリングの最初のポイントを返します。 |
√ |
× |
||
|
ST_X(x) |
ポイントの X 座標を返します。 |
√ |
× |
||
|
ST_XMax(x) |
ジオメトリの最大 X 座標を返します。 |
√ |
× |
||
|
ST_XMin(x) |
ジオメトリの最小 X 座標を返します。 |
√ |
× |
||
|
ST_Y(x) |
ポイントの Y 座標を返します。 |
√ |
× |
||
|
ST_YMax(x) |
ジオメトリの最大 Y 座標を返します。 |
√ |
× |
||
|
ST_YMin(x) |
ジオメトリの最小 Y 座標を返します。 |
√ |
× |
||
|
Bing タイル |
bing_tile(x, y, zoom_level) |
指定された X 座標、Y 座標、およびズームレベルから Bing タイルを返します。 |
√ |
× |
|
|
bing_tile(quadKey) |
指定されたクアッドツリーキーから Bing タイルを返します。 |
√ |
× |
||
|
bing_tile_at(x, y, zoom_level) |
指定された緯度、経度、およびズームレベルから Bing タイルを返します。 |
√ |
× |
||
|
bing_tile_coordinates(x) |
Bing タイルの X 座標と Y 座標を返します。 |
√ |
× |
||
|
bing_tile_polygon(x) |
Bing タイルのポリゴン表現を返します。 |
√ |
× |
||
|
bing_tile_quadkey(x) |
Bing タイルのクアッドツリーキーを返します。 |
√ |
× |
||
|
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 |
ジオメトリ値。
|
戻り値の型
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 |
パラメーターは |
戻り値の型
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 |
緯度。 |
|
y |
経度。 |
|
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 |
|
戻り値の型
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。