ジオメトリ値関数は、さまざまな形式(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を指定しない場合、出力される点は二次元(2D)の(x, y)点です。zを指定すると、出力される点は三次元(3D)の(x, y, z)点です。
説明
_ST_MakePointは、四次元(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エラーが発生します。