Point
由 X 和 Y 坐標組成,可以使用 ST_X()
和 ST_Y()
函數分別取得。這些函數也允許使用選用的第二個引數,指定 X 或 Y 坐標值,在此情況下,函數結果是來自第一個引數的 Point
物件,其適當的坐標已修改為等於第二個引數。
對於具有地理空間參考系統 (SRS) 的 Point
物件,可以使用 ST_Longitude()
和 ST_Latitude()
函數分別取得經度和緯度。這些函數也允許使用選用的第二個引數,指定經度或緯度值,在此情況下,函數結果是來自第一個引數的 Point
物件,其經度或緯度已修改為等於第二個引數。
除非另有指定,否則本章節中的函數會依如下方式處理其幾何引數
如果任何引數為
NULL
,則傳回值為NULL
。如果任何幾何引數是有效的幾何圖形,但不是
Point
物件,則會發生ER_UNEXPECTED_GEOMETRY_TYPE
錯誤。如果任何幾何引數不是語法正確的幾何圖形,則會發生
ER_GIS_INVALID_DATA
錯誤。如果任何幾何引數是未定義空間參考系統 (SRS) 中語法正確的幾何圖形,則會發生
ER_SRS_NOT_FOUND
錯誤。如果提供 X 或 Y 坐標引數,且值為
-inf
、+inf
或NaN
,則會發生ER_DATA_OUT_OF_RANGE
錯誤。如果經度或緯度值超出範圍,則會發生錯誤
如果經度值不在 (−180, 180] 範圍內,則會發生
ER_LONGITUDE_OUT_OF_RANGE
錯誤。如果緯度值不在 [−90, 90] 範圍內,則會發生
ER_LATITUDE_OUT_OF_RANGE
錯誤。
顯示的範圍以度為單位。由於浮點運算,確切的範圍限制略有偏差。
否則,傳回值為非
NULL
。
這些函數可用於取得點屬性
ST_Latitude(
p
[,new_latitude_val
])使用代表具有地理空間參考系統 (SRS) 的有效
Point
物件p
的單一引數,ST_Latitude()
會將p
的緯度值傳回為雙精度數字。使用代表有效緯度值的選用第二個引數,
ST_Latitude()
會傳回一個Point
物件,類似於第一個引數,其緯度等於第二個引數。ST_Latitude()
依照本節介紹中的描述處理其參數,此外,如果Point
物件有效,但沒有地理空間參考系統 (SRS),則會發生ER_SRS_NOT_GEOGRAPHIC
錯誤。mysql> SET @pt = ST_GeomFromText('POINT(45 90)', 4326); mysql> SELECT ST_Latitude(@pt); +------------------+ | ST_Latitude(@pt) | +------------------+ | 45 | +------------------+ mysql> SELECT ST_AsText(ST_Latitude(@pt, 10)); +---------------------------------+ | ST_AsText(ST_Latitude(@pt, 10)) | +---------------------------------+ | POINT(10 90) | +---------------------------------+
ST_Longitude(
p
[,new_longitude_val
])若使用單一參數,代表具有地理空間參考系統 (SRS) 的有效
Point
物件p
,ST_Longitude()
會傳回p
的經度值,以雙精度數字表示。若使用選擇性的第二個參數,代表有效的經度值,
ST_Longitude()
會傳回一個Point
物件,其與第一個參數相似,但經度等於第二個參數。ST_Longitude()
依照本節介紹中的描述處理其參數,此外,如果Point
物件有效,但沒有地理空間參考系統 (SRS),則會發生ER_SRS_NOT_GEOGRAPHIC
錯誤。mysql> SET @pt = ST_GeomFromText('POINT(45 90)', 4326); mysql> SELECT ST_Longitude(@pt); +-------------------+ | ST_Longitude(@pt) | +-------------------+ | 90 | +-------------------+ mysql> SELECT ST_AsText(ST_Longitude(@pt, 10)); +----------------------------------+ | ST_AsText(ST_Longitude(@pt, 10)) | +----------------------------------+ | POINT(45 10) | +----------------------------------+
若使用單一參數,代表有效的
Point
物件p
,ST_X()
會傳回p
的 X 座標值,以雙精度數字表示。X 座標被認為是指Point
空間參考系統 (SRS) 定義中第一個出現的軸。若使用選擇性的第二個參數,
ST_X()
會傳回一個Point
物件,其與第一個參數相似,但 X 座標等於第二個參數。如果Point
物件具有地理空間參考系統 (SRS),則第二個參數必須在經度或緯度值的正確範圍內。ST_X()
依照本節介紹中的描述處理其參數。mysql> SELECT ST_X(Point(56.7, 53.34)); +--------------------------+ | ST_X(Point(56.7, 53.34)) | +--------------------------+ | 56.7 | +--------------------------+ mysql> SELECT ST_AsText(ST_X(Point(56.7, 53.34), 10.5)); +-------------------------------------------+ | ST_AsText(ST_X(Point(56.7, 53.34), 10.5)) | +-------------------------------------------+ | POINT(10.5 53.34) | +-------------------------------------------+
若使用單一參數,代表有效的
Point
物件p
,ST_Y()
會傳回p
的 Y 座標值,以雙精度數字表示。Y 座標被認為是指Point
空間參考系統 (SRS) 定義中第二個出現的軸。若使用選擇性的第二個參數,
ST_Y()
會傳回一個Point
物件,其與第一個參數相似,但 Y 座標等於第二個參數。如果Point
物件具有地理空間參考系統 (SRS),則第二個參數必須在經度或緯度值的正確範圍內。ST_Y()
依照本節介紹中的描述處理其參數。mysql> SELECT ST_Y(Point(56.7, 53.34)); +--------------------------+ | ST_Y(Point(56.7, 53.34)) | +--------------------------+ | 53.34 | +--------------------------+ mysql> SELECT ST_AsText(ST_Y(Point(56.7, 53.34), 10.5)); +-------------------------------------------+ | ST_AsText(ST_Y(Point(56.7, 53.34), 10.5)) | +-------------------------------------------+ | POINT(56.7 10.5) | +-------------------------------------------+