ジオメトリ形式変換関数は、内部のジオメトリ形式から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です。オプションパラメータが無効な場合、エラーが発生します。