文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美國 Letter) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


14.16.7.2 點屬性函數

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+infNaN,則會發生 ER_DATA_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 物件 pST_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)                     |
    +----------------------------------+
  • ST_X(p [, new_x_val])

    若使用單一參數,代表有效的 Point 物件 pST_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)                         |
    +-------------------------------------------+
  • ST_Y(p [, new_y_val])

    若使用單一參數,代表有效的 Point 物件 pST_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)                          |
    +-------------------------------------------+