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

AnalyticDB:空間コンストラクター

最終更新日:Mar 28, 2026

AnalyticDB for MySQL における空間コンストラクター関数は、ジオメトリオブジェクトの構築および変換を行います。これらの関数を使用して、座標またはテキストから POINT、LINESTRING、POLYGON ジオメトリを構築したり、Well-Known Text(WKT)と Well-Known Binary(WKB)表現間で相互変換したり、平面座標系と球面座標系間で変換したりできます。

ほとんどの空間関数はバイナリ形式の GEOMETRY 値を返します。SELECT を使用してこれらの値を直接クエリすると、読み取りにくい出力になります。結果を ST_AsText() でラップすることで、読みやすい WKT 文字列を取得できます。

関数一覧

カテゴリ関数説明
座標からの構築ST_Pointx 座標および y 座標からポイントを構築します
WKT からの構築ST_GeometryFromText / ST_GeomFromTextWKT 文字列から任意のジオメトリ型を構築します
ST_LineFromTextWKT 文字列から LineString を構築します
ST_PointFromTextWKT 文字列からポイントを構築します
ST_PolygonFromTextWKT 文字列からポリゴンを構築します
ポイント配列からの構築ST_LineStringポイントの配列から LineString を構築します
ST_MultiPointポイントの配列から MultiPoint を構築します
テキストへの変換ST_AsTextジオメトリをその WKT 表現に変換します
バイナリ形式への/からの変換ST_AsBinaryジオメトリをその WKB 表現に変換します
ST_GeomFromBinaryWKB 値からジオメトリを構築します
検証ST_IsValidWKT文字列が有効な WKT であるかどうかを確認します
座標系To_spherical_geography平面ジオメトリを球面ジオグラフィーオブジェクトに変換します
To_geometry球面ジオグラフィーオブジェクトを平面ジオメトリに戻して変換します
Hadoop 連携Geometry_from_hadoop_shapeSpatial 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) → GEOMETRY

WKT 文字列からジオメトリオブジェクトを構築します。ST_GeometryFromTextST_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) → GEOMETRY

WKT 文字列から 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) → GEOMETRY

WKT 文字列から 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) → GEOMETRY

WKT 文字列から 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) → GEOMETRY

Well-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) → GEOMETRY

Spatial 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 個の頂点で定義されています。