MySQL 支援本節列出的函數,用於將幾何值從內部幾何格式轉換為 WKT 或 WKB 格式,或用於交換 X 和 Y 座標的順序。
還有一些函數可將字串從 WKT 或 WKB 格式轉換為內部幾何格式。請參閱第 14.16.3 節「從 WKT 值建立幾何值的函數」和第 14.16.4 節「從 WKB 值建立幾何值的函數」。
諸如ST_GeomFromText()
等接受 WKT 幾何集合引數的函數,理解 OpenGIS 'GEOMETRYCOLLECTION EMPTY'
標準語法和 MySQL 'GEOMETRYCOLLECTION()'
非標準語法。產生空幾何集合的另一種方法是呼叫不帶引數的GeometryCollection()
。諸如ST_AsWKT()
等產生 WKT 值的函數會產生 '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)) | +---------------------------------+
接受內部幾何格式的引數,交換幾何圖形中每個座標對的 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) | +----------------------------+