我需要检查两个地理点之间的距离是否小于 N km 。我正在尝试执行此查询:
select st_distance(
ST_GeomFromText('point(45.764043 4.835658999999964)', 4326),
ST_GeomFromText('point(45.750371 5.053963)', 4326)
) < :n
但它不起作用,因为:
到目前为止,SRID属性只是MySQL中的虚拟对象,它存储为几何元数据的一部分,但所有实际计算都忽略它,并且假设欧几里得(平面)几何进行计算。
(https://mariadb.com/kb/en/mariadb/st_transform-missing/)
我的目标是将此距离转换为公制距离或将 N 转换为度数。
我怎么做? 也许,你知道一个更好的解决方案吗?
P.S。我需要一个基于空间方法的解决方案(或者更好的性能)。
答案 0 :(得分:0)
我认为SPATIAL
中的“距离”功能尚不可用。 https://mariadb.com/kb/en/latitudelongitude-indexing/中的常规FUNCTION
可以完成工作。但是,args和输出的比例为lat / lng(10000 *度)。可以更改代码以避免缩放,但在该博客页面的上下文中需要它。