ジオメトリ形式変換関数は、内部ジオメトリ形式からWKTまたはWKB形式への変換、またはX座標とY座標の順序を入れ替えるために使用されます。OceanBaseデータベースの現在のバージョンでサポートされているジオメトリ形式変換関数には、ST_AsBinary()、ST_AsWKB、ST_AsText()、およびST_AsWKT()が含まれます。
ST_AsBinaryとST_AsWKB
ST_AsBinary()とST_AsWKB()は、内部ジオメトリ形式の値をそのWKB表現に変換し、バイナリ結果を返します。構文は以下のとおりです:
ST_AsBinary(g [, options]), ST_AsWKB(g [, options])
関数の戻り値には地理座標(緯度、経度)が含まれ、その順序はジオメトリパラメータに適用された空間参照システムによって指定されます。オプションのoptionsパラメータを指定することで、デフォルトの軸の順序を上書きできます。
SELECT ST_AsText(ST_GeomFromWKB(ST_AsWKB(@geo, 'axis-order=long-lat')));
ST_AsTextとST_AsWKT
ST_AsText()とST_AsWKT()関数は、内部ジオメトリ形式の値をそのWKT表現に変換し、文字列結果を返します。構文は以下のとおりです:
ST_AsText(g [, options]), ST_AsWKT(g [, options])
関数の戻り値には地理座標(緯度、経度)が含まれ、その順序はジオメトリパラメータに適用された空間参照システムによって指定されます。オプションのoptionsパラメータを指定することで、デフォルトの軸の順序を上書きできます。
obclient [test]> SET @geo = 'LINESTRING(0 6,6 12,12 18)';
Query OK, 0 rows affected
obclient [test]> SELECT ST_AsText(ST_GeomFromText(@geo));
+----------------------------------+
| ST_AsText(ST_GeomFromText(@geo)) |
+----------------------------------+
| LINESTRING(0 6,6 12,12 18) |
+----------------------------------+
1 row in set
パラメータの注意点
ジオメトリ形式変換関数におけるジオメトリパラメータの戻り値は、以下の場合を除き、NULLではありません:
- いずれかのジオメトリパラメータの構文が正しくない場合、
ER_GIS_INVALID_DATAエラーが発生します。 - いずれかのジオメトリパラメータが定義されていない空間参照システム内にある場合、軸はジオメトリ内で現れる順序で出力され、
ER_WARN_SRS_NOT_FOUND_AXIS_ORDER警告が表示されます。 - デフォルトでは、地理座標(緯度、経度)はジオメトリパラメータの空間参照システムで指定された順序で解釈されます。オプションの
optionsパラメータを指定することで、デフォルトの軸の順序を上書きできます。optionsはカンマ区切りのkey=valueリストです。keyの値はaxis-orderのみ可能で、許容される値はlat-long、long-lat、srid-defined(デフォルト値)です。optionsパラメータがNULLの場合、戻り値はNULLです。オプションパラメータが無効な場合、エラーが発生します。