MySQL 支援本節列出的函數,用於將幾何值從內部幾何格式轉換為 WKT 或 WKB 格式,或用於交換 X 和 Y 座標的順序。
還有一些函數可以將字串從 WKT 或 WKB 格式轉換為內部幾何格式。請參閱章節 14.16.3,「從 WKT 值建立幾何值的函數」和章節 14.16.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)) | +---------------------------------+
接受內部幾何格式的引數,交換幾何內每個座標對的 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) | +----------------------------+