AnalyticDB for MySQL における空間コンストラクター関数は、ジオメトリオブジェクトの構築および変換を行います。これらの関数を使用して、座標またはテキストから POINT、LINESTRING、POLYGON ジオメトリを構築したり、Well-Known Text(WKT)と Well-Known Binary(WKB)表現間で相互変換したり、平面座標系と球面座標系間で変換したりできます。
ほとんどの空間関数はバイナリ形式の GEOMETRY 値を返します。SELECTを使用してこれらの値を直接クエリすると、読み取りにくい出力になります。結果をST_AsText()でラップすることで、読みやすい WKT 文字列を取得できます。
関数一覧
| カテゴリ | 関数 | 説明 |
|---|---|---|
| 座標からの構築 | ST_Point | x 座標および y 座標からポイントを構築します |
| WKT からの構築 | ST_GeometryFromText / ST_GeomFromText | WKT 文字列から任意のジオメトリ型を構築します |
ST_LineFromText | WKT 文字列から LineString を構築します | |
ST_PointFromText | WKT 文字列からポイントを構築します | |
ST_PolygonFromText | WKT 文字列からポリゴンを構築します | |
| ポイント配列からの構築 | ST_LineString | ポイントの配列から LineString を構築します |
ST_MultiPoint | ポイントの配列から MultiPoint を構築します | |
| テキストへの変換 | ST_AsText | ジオメトリをその WKT 表現に変換します |
| バイナリ形式への/からの変換 | ST_AsBinary | ジオメトリをその WKB 表現に変換します |
ST_GeomFromBinary | WKB 値からジオメトリを構築します | |
| 検証 | ST_IsValidWKT | 文字列が有効な WKT であるかどうかを確認します |
| 座標系 | To_spherical_geography | 平面ジオメトリを球面ジオグラフィーオブジェクトに変換します |
To_geometry | 球面ジオグラフィーオブジェクトを平面ジオメトリに戻して変換します | |
| Hadoop 連携 | Geometry_from_hadoop_shape | Spatial Framework for Hadoop のバイナリ値からジオメトリを構築します |
| バッファ | ST_Buffer | ジオメトリから距離 d 以内のすべてのポイントを返します |
ST_Point
ST_Point(x double, y double) → GEOMETRY (サブタイプ: POINT)指定された x 座標および y 座標の値から POINT ジオメトリを返します。戻り値はバイナリ形式です。読みやすい結果を得るには、ST_AsText() でラップしてください。
例
SELECT ST_AsText(ST_Point(1, 1));実行結果:
+--------------------------+
| ST_AsText(ST_Point(1,1)) |
+--------------------------+
| POINT (1 1) |
+--------------------------+ST_AsText
ST_AsText(geometry) → WKTジオメトリの Well-Known Text(WKT)表現を返します。他の空間関数のバイナリ出力を読みやすいテキストに変換する際に使用します。
例
SELECT ST_AsText(ST_Point(1, 1));実行結果:
+--------------------------+
| ST_AsText(ST_Point(1,1)) |
+--------------------------+
| POINT (1 1) |
+--------------------------+ST_GeometryFromText / ST_GeomFromText
ST_GeometryFromText(wkt varchar) → GEOMETRY
ST_GeomFromText(wkt varchar) → GEOMETRYWKT 文字列からジオメトリオブジェクトを構築します。ST_GeometryFromText と ST_GeomFromText は同等です。戻り値はバイナリ形式です。読みやすい結果を得るには、ST_AsText() でラップしてください。
例
SELECT ST_AsText(ST_GeometryFromText('Point(1 1)'));実行結果:
+----------------------------------------------+
| ST_AsText(ST_GeometryFromText('Point(1 1)')) |
+----------------------------------------------+
| POINT (1 1) |
+----------------------------------------------+ST_IsValidWKT
ST_IsValidWKT(wkt varchar) → INT入力文字列が有効な WKT の場合に 1 を返し、無効な場合は 0 を返します。
例
SELECT ST_IsValidWKT('MULTIPOINT (1 2, 2 4, 3 6, 4 8)');実行結果:
+---------------------------------------------------+
| ST_IsValidWKT('MULTIPOINT (1 2, 2 4, 3 6, 4 8)') |
+---------------------------------------------------+
| 1 |
+---------------------------------------------------+ST_LineFromText
ST_LineFromText(wkt varchar) → GEOMETRYWKT 文字列から LineString ジオメトリを返します。戻り値はバイナリ形式です。読みやすい結果を得るには、ST_AsText() でラップしてください。
例
SELECT ST_AsText(ST_LineFromText('LINESTRING (1 1, 2 2, 1 3)'));実行結果:
+----------------------------------------------------------+
| ST_AsText(ST_LineFromText('LINESTRING (1 1, 2 2, 1 3)')) |
+----------------------------------------------------------+
| LINESTRING (1 1, 2 2, 1 3) |
+----------------------------------------------------------+ST_PointFromText
ST_PointFromText(wkt varchar) → GEOMETRYWKT 文字列から Point オブジェクトを返します。戻り値はバイナリ形式です。読みやすい結果を得るには、ST_AsText() でラップしてください。
例
SELECT ST_AsText(ST_PointFromText('POINT (1 2)'));実行結果:
+-------------------------------------------+
| ST_AsText(ST_PointFromText('POINT (1 2)')) |
+-------------------------------------------+
| POINT (1 2) |
+-------------------------------------------+ST_PolygonFromText
ST_PolygonFromText(wkt varchar) → GEOMETRYWKT 文字列から Polygon オブジェクトを返します。戻り値はバイナリ形式です。読みやすい結果を得るには、ST_AsText() でラップしてください。
例
SELECT ST_AsText(ST_PolygonFromText('POLYGON ((1 1, 1 4, 4 4, 4 1))'));実行結果:
+----------------------------------------------------------------+
| ST_AsText(ST_PolygonFromText('POLYGON ((1 1, 1 4, 4 4, 4 1))')) |
+----------------------------------------------------------------+
| POLYGON ((1 1, 1 4, 4 4, 4 1)) |
+----------------------------------------------------------------+ST_LineString
ST_LineString(array(Point)) → GEOMETRYポイントジオメトリの配列から LineString ジオメトリを構築して返します。戻り値はバイナリ形式です。読みやすい結果を得るには、ST_AsText() でラップしてください。
例
SELECT ST_AsText(ST_LineString(array[ST_Point(1, 2), ST_Point(3, 4)]));実行結果:
+------------------------------------------------------------------+
| ST_AsText(ST_LineString(array[ST_Point(1,2), ST_Point(3,4)])) |
+------------------------------------------------------------------+
| LINESTRING (1 2, 3 4) |
+------------------------------------------------------------------+ST_MultiPoint
ST_MultiPoint(array(Point)) → GEOMETRYポイントジオメトリの配列から MultiPoint ジオメトリを構築して返します。戻り値はバイナリ形式です。読みやすい結果を得るには、ST_AsText() でラップしてください。
例
SELECT ST_AsText(
ST_MultiPoint(array[
ST_GeometryFromText('POINT(1 2)'),
ST_GeometryFromText('POINT (3 4)')
])
);実行結果:
+---------------------------+
| ST_AsText(...) |
+---------------------------+
| MULTIPOINT ((1 2), (3 4)) |
+---------------------------+ST_GeomFromBinary
ST_GeomFromBinary(wkb varbinary) → GEOMETRYWell-Known Binary(WKB)値からジオメトリを返します。戻り値はバイナリ形式です。読みやすい結果を得るには、ST_AsText() でラップしてください。
例
以下の例では、まず ST_AsBinary() を使用してジオメトリを WKB に変換し、その後 ST_GeomFromBinary() および ST_AsText() を使用して再構築および読み取りを行っています。
SELECT ST_AsText(
ST_GeomFromBinary(
ST_AsBinary(ST_GeometryFromText('MULTIPOINT ((1 2), (3 4))'))
)
);実行結果:
+---------------------------+
| ST_AsText(...) |
+---------------------------+
| MULTIPOINT ((1 2), (3 4)) |
+---------------------------+Geometry_from_hadoop_shape
Geometry_from_hadoop_shape(wkb varbinary) → GEOMETRYSpatial Framework for Hadoop のバイナリ値からジオメトリを返します。戻り値はバイナリ形式です。読みやすい結果を得るには、ST_AsText() でラップしてください。
例
SELECT ST_AsText(
Geometry_from_hadoop_shape(
from_hex('000000000101000000000000000000F03F0000000000000040')
)
);実行結果:
+---------------------+
| ST_AsText(...) |
+---------------------+
| POINT (1 2) |
+---------------------+To_spherical_geography
To_spherical_geography(geometry) → GEOMETRY平面ジオメトリを球面ジオグラフィーオブジェクトに変換します。これは、2 次元空間で定義された識別子を、3 次元空間で定義されたものに変換します。戻り値はバイナリ形式です。
例
SELECT To_spherical_geography(ST_Point(-71.0882, 42.3607));To_geometry
To_geometry(geography) → GEOMETRY球面ジオグラフィーオブジェクトを平面ジオメトリに戻して変換します。各ジオグラフィーオブジェクトは有効なジオメトリオブジェクトです。戻り値はバイナリ形式です。読みやすい結果を得るには、ST_AsText() でラップしてください。
例
SELECT ST_AsText(
To_geometry(To_spherical_geography(ST_Point(61.56, -58.54)))
);実行結果:
+----------------------+
| ST_AsText(...) |
+----------------------+
| POINT (61.56 -58.54) |
+----------------------+ST_AsBinary
ST_AsBinary(geometry) → VARBINARYジオメトリの WKB 表現を VARBINARY 値として返します。この関数を使用して、ジオメトリデータをバイナリ形式で保存または送信し、その後 ST_GeomFromBinary() で再構築できます。
例
SELECT ST_AsText(
ST_GeomFromBinary(
ST_AsBinary(ST_GeometryFromText('MULTIPOINT ((1 2), (3 4))'))
)
);実行結果:
+---------------------------+
| ST_AsText(...) |
+---------------------------+
| MULTIPOINT ((1 2), (3 4)) |
+---------------------------+ST_Buffer
ST_Buffer(geometry, d double) → GEOMETRY入力ジオメトリからの距離が d 以下となるすべてのポイントを含むジオメトリを返します。ポイントを入力とした場合、結果はそのポイントを中心とする半径 d の円を近似したポリゴンとなります。戻り値はバイナリ形式です。読みやすい結果を得るには、ST_AsText() でラップしてください。
例
SELECT ST_AsText(ST_Buffer(ST_Point(0, 0), 0.5));実行結果(省略):
+--------------------------------------------------------------------+
| ST_AsText(ST_Buffer(ST_Point(0, 0), 0.5)) |
+--------------------------------------------------------------------+
| POLYGON ((0.5 0, 0.4989294616193014 0.03270156461507146, ...)) |
+--------------------------------------------------------------------+完全な実行結果は、原点を中心とする半径 0.5 の円を近似したポリゴンであり、96 個の頂点で定義されています。