Mysql

SRID 4326 上的 ST_X 和 ST_Y 的經度和緯度順序

  • June 6, 2019

我有一個 MySQL 8.0.15,我正在試驗地理空間定位功能。我已將 SRID 4326 應用於“loc”列。

除了原始 Point() 之外,文件中沒有任何內容建議輸入為“x,y”或“long,lat”,但如果我執行以下查詢:

INSERT INTO organization 
(loc, spots, name, phone, website, account_id, category_id) 
VALUES 
(
 ST_PointFromText("POINT(-113.532000 54.733000)", 4326), 
 10,
 "Baptiste",
 " ",
 null,
 null,
 null
); 

SQL 錯誤 (3617):緯度 -113.532000 超出函式 st_pointfromtext 的範圍。

$$ It must be within -90 > +90 $$

這很有意義,因為沒有 113 度的緯度 - 但是當我交換緯度/經度參數時 - 一切正常!但是,當我查詢緯度/經度時,結果是向後的。

SELECT 
  *, 

   ST_Y(loc) as lat,   
   ST_X(loc) as lng 

FROM 
 organization;

我對這些功能和座標的工作方式有什麼不明白的地方?

似乎 POINT() 實際上在輸入時接受LAT、LON - 但是在查詢時必須記住 Y 是緯度,而 X 是經度???

射線

這很有意義,因為沒有 113 度的緯度 - 但是當我交換緯度/經度參數時 - 一切正常!但是,當我查詢緯度/經度時,結果是向後的。

那是因為 MySQL 和 Microsoft 在地理表示中交換順序是絕對瘋狂的事情,因為這就是 EPSG 所說的。Oracle 和 PostGIS 沒有。MySQL 地理表示中沒有 X/Y。使用 MySQL v8時,他們試圖解決這個問題,同時通過引入

有關更多資訊,請查看MySQL 是否將點數據類型儲存為 LAT LNG 或 LNG LAT?

引用自:https://dba.stackexchange.com/questions/229647