文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
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 物件 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)                     |
    +----------------------------------+
  • ST_X(p [, new_x_val])

    當只有一個參數代表有效的 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)                         |
    +-------------------------------------------+
  • ST_Y(p [, new_y_val])

    當只有一個參數代表有效的 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)                          |
    +-------------------------------------------+