在MySQL中使用空间点类型时的Lon/Lat顺序

在MySQL中使用空间点类型时的Lon/Lat顺序,mysql,point,Mysql,Point,在MySQL中设置点的正确顺序是什么 即使是SO问题中的答案在这一点上也有所不同: 是吗 或 据我所见,它应该是第一个版本(lat lon),因为点取参数x和y,但我无法找到确切的证据。如图所示 顺序是(lon-lat) 如果我看地球仪的话,lon基本上是y轴,lat是x轴,但是lon是沿着x轴移动的,lat是沿着y轴移动的,所以我认为这就是为什么要使用(lon-lat) 尽管如此,如果您在应用程序中保持一致,那么db中的世界是否翻转也不重要;-) 从技术上讲,这无关紧要。 将存储到点的x和y

在MySQL中设置点的正确顺序是什么

即使是SO问题中的答案在这一点上也有所不同:

是吗

据我所见,它应该是第一个版本(lat lon),因为点取参数x和y,但我无法找到确切的证据。

如图所示 顺序是(lon-lat)

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


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

从技术上讲,这无关紧要。 将存储到点的x和y坐标中。 你只要按照你写的方式来读就行了

如果您关心“正确的方式”,我只能提到这样一个事实:GoogleMapsAPI使用

var location = new google.maps.LatLng(lat, lng);
在学校里,你也学习“纬度和逻辑”,而不是相反


不过,从技术上讲,它实际上并不决定你存储它们的方式。只要确保你在回读时使用相同的约定。

在我看来就像是
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


另请参见:

您可以尝试两种方法,看看哪些方法有效,不是吗?我会相信Quassnoi的答案。不过+1,因为我搜索MySQL文档超过3分钟,找不到相关文档。我唯一找到的是示例。基本上两者都有效。当您在MySQL中使用X()和Y()访问它们时,我只能假设,该点(lat lon)的顺序是正确的。但正如你所说,它没有很好的文档记录。在编程中,你还会发现很多系统和函数需要lonlat参数而不是latlon参数。然而,在数据库中,这仍然无关紧要。您将混淆人们
lon
是x轴,其梯度垂直显示
lat
是y轴,因此其梯度是水平的。与每个2D图形一样,渐变垂直于它们测量的轴。如果您希望使用MySQL 5.7中内置的GIS功能,使用点(lon-lat)而不是点(lat-lon)是很重要的+
var location = new google.maps.LatLng(lat, lng);
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            |
+----------------------------+-----------------------+----------------------+