MySQL では、ジオメトリ値を内部ジオメトリフォーマットから WKT フォーマットまたは WKB フォーマットに変換したり、X 座標と Y 座標の順序を入れ替えるために、このセクションにリストされている関数がサポートされています。
文字列を WKT または WKB 形式から内部ジオメトリ形式に変換する関数もあります。 セクション12.17.3「WKT 値からジオメトリ値を作成する関数」およびセクション12.17.4「WKB 値からジオメトリ値を作成する関数」を参照してください。
WKT ジオメトリコレクション引数を受け入れる ST_GeomFromText()
などの関数は、OpenGIS 'GEOMETRYCOLLECTION EMPTY'
標準構文と MySQL 'GEOMETRYCOLLECTION()'
非標準構文の両方を理解します。 空のジオメトリコレクションを生成する別の方法は、引数を指定せずに GeometryCollection()
をコールすることです。 WKT 値を生成する ST_AsWKT()
などの関数は、'GEOMETRYCOLLECTION EMPTY'
標準構文を生成します:
mysql> SET @s1 = ST_GeomFromText('GEOMETRYCOLLECTION()');
mysql> SET @s2 = ST_GeomFromText('GEOMETRYCOLLECTION EMPTY');
mysql> SELECT ST_AsWKT(@s1), ST_AsWKT(@s2);
+--------------------------+--------------------------+
| ST_AsWKT(@s1) | ST_AsWKT(@s2) |
+--------------------------+--------------------------+
| GEOMETRYCOLLECTION EMPTY | GEOMETRYCOLLECTION EMPTY |
+--------------------------+--------------------------+
mysql> SELECT ST_AsWKT(GeomCollection());
+----------------------------+
| ST_AsWKT(GeomCollection()) |
+----------------------------+
| GEOMETRYCOLLECTION EMPTY |
+----------------------------+
特に指定がないかぎり、このセクションの関数はジオメトリ引数を次のように処理します:
いずれかの引数が
NULL
の場合、戻り値は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
です。options
引数が無効な場合は、理由を示すエラーが発生します。 それ以外の場合、戻り値は
NULL
以外です。
次の関数は、フォーマット変換または座標の入替えに使用できます:
-
ST_AsBinary(
,g
[,options
])ST_AsWKB(
g
[,options
])内部ジオメトリ形式の値を WKB 表現に変換し、そのバイナリの結果を返します。
関数の戻り値には、ジオメトリ引数に適用される空間参照システムで指定された順序で地理座標 (緯度、経度) が含まれます。 オプションの
options
引数を指定して、デフォルトの軸の順序をオーバーライドできます。ST_AsBinary()
およびST_AsWKB()
は、このセクションの概要で説明されているように引数を処理します。mysql> SET @g = ST_LineFromText('LINESTRING(0 5,5 10,10 15)', 4326); mysql> SELECT ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g))); +-----------------------------------------+ | ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g))) | +-----------------------------------------+ | LINESTRING(5 0,10 5,15 10) | +-----------------------------------------+ mysql> SELECT ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g, 'axis-order=long-lat'))); +----------------------------------------------------------------+ | ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g, 'axis-order=long-lat'))) | +----------------------------------------------------------------+ | LINESTRING(0 5,5 10,10 15) | +----------------------------------------------------------------+ mysql> SELECT ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g, 'axis-order=lat-long'))); +----------------------------------------------------------------+ | ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g, 'axis-order=lat-long'))) | +----------------------------------------------------------------+ | LINESTRING(5 0,10 5,15 10) | +----------------------------------------------------------------+
-
ST_AsText(
,g
[,options
])ST_AsWKT(
g
[,options
])内部ジオメトリ形式の値を WKT 表現に変換し、その文字列の結果を返します。
関数の戻り値には、ジオメトリ引数に適用される空間参照システムで指定された順序で地理座標 (緯度、経度) が含まれます。 オプションの
options
引数を指定して、デフォルトの軸の順序をオーバーライドできます。ST_AsText()
およびST_AsWKT()
は、このセクションの概要で説明されているように引数を処理します。mysql> SET @g = 'LineString(1 1,2 2,3 3)'; mysql> SELECT ST_AsText(ST_GeomFromText(@g)); +--------------------------------+ | ST_AsText(ST_GeomFromText(@g)) | +--------------------------------+ | LINESTRING(1 1,2 2,3 3) | +--------------------------------+
MultiPoint
値の出力では、各点の周囲にカッコが含まれます。 例:mysql> SELECT ST_AsText(ST_GeomFromText(@mp)); +---------------------------------+ | ST_AsText(ST_GeomFromText(@mp)) | +---------------------------------+ | MULTIPOINT((1 1),(2 2),(3 3)) | +---------------------------------+
-
ST_SwapXY(
g
)内部ジオメトリ形式の引数を受け入れ、ジオメトリ内の各座標ペアの X 値と Y 値を入れ替えて、結果を返します。
ST_SwapXY()
は、このセクションの概要で説明されているように引数を処理します。mysql> SET @g = ST_LineFromText('LINESTRING(0 5,5 10,10 15)'); mysql> SELECT ST_AsText(@g); +----------------------------+ | ST_AsText(@g) | +----------------------------+ | LINESTRING(0 5,5 10,10 15) | +----------------------------+ mysql> SELECT ST_AsText(ST_SwapXY(@g)); +----------------------------+ | ST_AsText(ST_SwapXY(@g)) | +----------------------------+ | LINESTRING(5 0,10 5,15 10) | +----------------------------+