Mysql
SRID 4326 上的 ST_X 和 ST_Y 的經度和緯度順序
我有一個 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?