【发布时间】:2022-08-09 04:15:23
【问题描述】:
在将POINT 等地理空间列类型与 MySQL 和 MariaDB 一起使用时,对于指定纬度和经度的顺序(1、2、3)存在很多混淆,并且不同的应用程序使用不同的约定。然而,当使用一些函数时——例如ST_DISTANCE_SPHERE——经纬度的顺序很重要。
在 MySQL 和 MariaDB 中创建 POINT 时以什么顺序指定纬度和经度?
我稍微改编了 MariaDB 文档中的一个示例,并在 MariaDB 10.6.7 和 MySQL 8.0.28 上进行了测试。两个数据库都返回数字相同的结果:
set @zenica = ST_GeomFromText(\'POINT(17.907743 44.203438)\');
set @sarajevo = ST_GeomFromText(\'POINT(18.413076 43.856258)\');
set @zenica2 = ST_GeomFromText(\'POINT(44.203438 17.907743)\');
set @sarajevo2 = ST_GeomFromText(\'POINT(43.856258 18.413076)\');
SELECT ST_Distance_Sphere(@zenica, @sarajevo), ST_Distance_Sphere(@zenica2, @sarajevo2);
-- Result: 55878.59337591705 67103.51207765185
所以在 MySQL 和 MariaDB 中,我们应该在创建 POINTS 时使用 long-lat 格式,即经度在前
MySQL 和 MariaDB 以什么顺序返回 GIS 坐标?
选择一个点时,MySQL和MariadB返回点的二进制格式。但是,根据我使用的数据库,我会得到不同的响应
标签: php mysql mariadb geospatial