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) | +-------------------------------------------+