10

在 MySQL 中设置 POINT 时正确的顺序是什么?

甚至 SO 问题中的答案也有所不同: Moving lat/lon text columns into a 'point' type column

是吗

POINT(lat lon)

或者

POINT(lon lat)

据我所知,它应该是第一个版本(经纬度),因为 POINT 将参数 x 和 y 用作参数,但我无法找到明确的证据。

4

3 回答 3

2

正如人们可以在这里看到的那样https://stackoverflow.com/a/5757054/1393681 顺序是(经纬度)。

如果我看我的地球仪,lon基本上是 y 轴,lat是 x,但是lon 沿着 x 轴移动lat 沿着 y 轴移动,所以我认为这就是你使用 (lon lat)的原因

尽管如此,如果您在应用程序中保持一致,那么世界是否在您的数据库中翻转并不重要;-)

于 2012-10-18T14:56:35.423 回答
1

在我看来lat lon。你可以从你的 mysql shell 中检查:

mysql> SELECT ST_ASTEXT(coords), ST_LONGITUDE(coords), ST_LATITUDE(coords) FROM table;

+----------------------------+-----------------------+----------------------+
| ST_ASTEXT(coords)          | ST_LONGITUDE(coords)  | ST_LATITUDE(coords)  |
+----------------------------+-----------------------+----------------------+
| POINT(33.520571 -18.20072) | -18.20072             | 33.520571            |
+----------------------------+-----------------------+----------------------+

注意:使用了 SRID 4326。

另见:https ://dev.mysql.com/doc/refman/8.0/en/gis-point-property-functions.html#function_st-latitude

于 2020-11-29T22:04:51.490 回答
-2

从技术上讲,这并不重要。您正在存储到一个点的 x 和 y 坐标中。您只需要以与编写它们相同的方式阅读它们。

如果您关心“正确的方式”,我只能指 Google Maps API 使用创建坐标的事实

var location = new google.maps.LatLng(lat, lng);

在学校里,你也会学习“纬度和登录度”,而不是相反。

尽管如此,从技术上讲,它确实并不影响您存储它们的方式。只需确保在回读它们时使用相同的约定。

于 2013-05-06T22:20:07.440 回答