ジオメトリ関数は、さまざまな形式(Well-Known Text (WKT)やWell-Known Binary (WKB)など)でジオメトリ図形を作成するために使用されます。OceanBaseデータベースの現行バージョンでサポートされているジオメトリ関数には、ST_GeomFromText()、ST_GeometryFromText()、ST_GeomFromWKB()、ST_GeometryFromWKB()、_ST_MakePointが含まれます。
ST_GeomFromText():WKT形式の文字列からジオメトリ図形を作成します。ST_GeometryFromText():機能的にはST_GeomFromText()と同様であり、WKT形式の文字列からジオメトリ図形を作成します。異なるデータベースシステムでは、機能が類似していても関数名が異なる場合があります。ST_GeomFromWKB():WKB形式のバイナリデータからジオメトリ図形を作成します。ST_GeometryFromWKB():機能的にはST_GeomFromWKB()と同様であり、WKB形式のバイナリデータからジオメトリ図形を作成します。_ST_MakePoint:新しい点ジオメトリオブジェクトを作成するために使用されます。
ST_GeomFromTextとST_GeometryFromText
ST_GeomFromText()およびST_GeometryFromText()関数は、Well-Known Text (WKT)表現とオプションの空間参照系識別子(SRID)をパラメータとして受け取り、対応する幾何図形を返します。WKT形式の説明については、空間データ形式を参照してください。
ST_GeomFromText()は、任意の幾何タイプのWKT値を最初のパラメータとして受け入れます。他の関数は、各幾何タイプの幾何値を構築するための特定のタイプのコンストラクターを提供します。 関数の構文は次のとおりです:
ST_GeomFromText(wkt [, srid [, options]]), ST_GeometryFromText(wkt [, srid [, options]])
例:
obclient [test]> SET @geo = "MULTILINESTRING((10 10, 11 11), (9 9, 10 10))";
Query OK, 0 rows affected
obclient [test]> SELECT ST_AsText(ST_GeomFromText(@geo));
+--------------------------------------------+
| ST_AsText(ST_GeomFromText(@geo)) |
+--------------------------------------------+
| MULTILINESTRING((10 10,11 11),(9 9,10 10)) |
+--------------------------------------------+
1 row in set
ST_GeomFromWKBとST_GeometryFromWKB
ST_GeomFromWKB()およびST_GeometryFromWKB()関数は、Well-Known Binary (WKB)表現とオプションの空間参照系識別子(SRID)を含むBLOBをパラメータとして受け取り、対応する幾何図形を返します。WKB形式の説明については、空間データ形式を参照してください。
関数の構文は次のとおりです:
ST_GeomFromWKB(wkb [, srid [, options]]), ST_GeometryFromWKB(wkb [, srid [, options]])
_ST_MakePoint
_ST_MakePointは、点オブジェクトを作成するために使用されます。この関数は通常、地図データを処理したり、地理的位置を正確に表現する必要があるアプリケーションで使用されます。
構文は次のとおりです:
_ST_MakePoint(x, y, [z])
パラメータの説明:
x:X座標値。y:Y座標値。z:オプション。Z座標値。zを指定しない場合、出力される点は(x, y)の2次元(2D)点です。zを指定した場合、出力される点は(x, y, z)の3次元(3D)点です。
説明
_ST_MakePointは、現在4次元(4D)点の作成をサポートしていません。_ST_MakePoint関数は、整数(int)、浮動小数点数(double)、および文字列形式の入力を受け取り、これらの入力を倍精度浮動小数点数(double)に変換して点オブジェクトを作成します。
例:
2D点を作成します。
obclient [test]> SELECT ST_ASTEXT(_st_makepoint(10, 20));実行結果は次のとおりです:
+----------------------------------+ | ST_ASTEXT(_st_makepoint(10, 20)) | +----------------------------------+ | POINT(10 20) | +----------------------------------+ 1 row in set3D点を作成します。
obclient [test]> SELECT ST_ASTEXT(_st_makepoint(10, -20, 5));実行結果は次のとおりです:
+--------------------------------------+ | ST_ASTEXT(_st_makepoint(10, -20, 5)) | +--------------------------------------+ | POINT Z (10 -20 5) | +--------------------------------------+ 1 row in set
パラメータの注意点
幾何学的値を作成する関数において、幾何学的パラメータのいずれかの戻り値がNULLでない場合、以下の例外があります:
いずれかの幾何学的パラメータが
NULLであるか、構文が正しくない場合、戻り値はNULLとなります。オプションの
optionsパラメータは、地理座標の緯度と経度を、幾何学的パラメータの空間参照系で指定された順序で解釈することができます。optionsはカンマで区切られたkey=valueのリストです。key値はaxis-orderのみであり、許容される値はlat-long、long-lat、およびsrid-defined(デフォルト値)です。optionsパラメータがNULLの場合、戻り値はNULLとなります。オプションパラメータが無効な場合、エラーが発生します。SRIDパラメータが定義されていない空間参照系(SRS)を参照する場合、ER_SRS_NOT_FOUNDエラーが発生します。地理SRS幾何学的パラメータについて、いずれかのパラメータの経度または緯度が範囲を超える場合(範囲は度単位であり、SRSが他の単位を使用する場合は、その単位の対応する値を使用します)、エラーが発生します:
経度値が[-180, 180]の範囲外の場合、
ER_LONGITUDE_OUT_OF_RANGEエラーが発生します。緯度値が[−90, 90]の範囲外の場合、
ER_LATITUDE_OUT_OF_RANGEエラーが発生します。