如何在MySQL中使用纬度和经度计算多行距离的函数
这是我做的函数:如何在MySQL中使用纬度和经度计算多行距离的函数,mysql,Mysql,这是我做的函数: create function Route_Distance (lat1 FLOAT, lng1 FLOAT, lat2 FLOAT, lng2 FLOAT) returns float deterministic begin return 6371 * 2 * ASIN(SQRT(POWER(SIN((lat1-lat2)*pi()/180 /2), 2) + COS(lat1 * pi()/180) * COS(lat2 * pi()/1
create function Route_Distance (lat1 FLOAT, lng1 FLOAT, lat2 FLOAT, lng2 FLOAT)
returns float
deterministic
begin
return 6371 * 2 * ASIN(SQRT(POWER(SIN((lat1-lat2)*pi()/180 /2), 2)
+ COS(lat1 * pi()/180) * COS(lat2 * pi()/180) * POWER(SIN((lng1 - lng2)
* pi()/180 /2), 2)));
End
这是我需要的表格,用于计算与被调用路线的距离。\u距离:
----------------------------------------------------
lat1 | lng1 | lat2 | lng2 |
----------------------------------------------------
59.914 | -61.111 | 43.211 | 54.231
----------------------------------------------------
所以我使用的函数是:
select route_distance(lat1,lng1,lat2, lng1)
from routes_distance;
为什么我的结果有一行零?表格要长得多,我只显示了第一行。我想使用此函数计算所有行。您的代码在中运行良好。如果我手动键入值,我发现它也适用于我。但我有大约1000个纬度和经度值。在这种情况下,我该如何计算距离?我不明白为什么1000和1会有任何不同。我认为我的表有问题,因为我使用JOIN(从两个不同的表)创建了表。当我通过函数运行它时,我得到空值。然而,如果我从头开始创建表,而不使用JOIN,并手动创建字段并键入纬度和经度值,则在这种情况下它会工作。这很奇怪。当我使用JOIN(从两个不同的表)创建表时,我的表出现了一些问题。当我通过函数运行它时,我得到空值。全部的一些编辑小提琴。添加表的结构。从数据库中转储并添加到fiddle 10-12记录中,该记录将提供空值。给链接编辑小提琴。从两个不同的表格中,这个过程可能有问题吗?创建一个源表、一些数据和查询,将数据传输到有问题的表中。