gpt4 book ai didi

mysql - 半正矢距离 - MySQL 和 PHP 对于相同的公式返回不同的结果

转载 作者:行者123 更新时间:2023-11-29 14:15:51 25 4
gpt4 key购买 nike

距离(直线)

来自:(纬度)48.73233(经度)2.36618

至:lat() 48.84647(长)2.41026

等于一些:13096.16米

如果我使用 PHP 公式,我会得到正确的结果。

但是当我将相同的 PHP 公式直接转换为 MySQL 查询时 - 我得到 5904.2757 等。

这是代码:

php:

 $distance = atan2(sqrt(pow(sin((($to_lat - $from_lat) * M_PI / 180) / 2), 2) +         cos(($from_lat * M_PI / 180)) * cos(($to_lat * M_PI / 180)) *         pow(sin((($to_long - $from_long) * M_PI / 180) / 2), 2)), sqrt(1 - (pow(sin((($to_lat - $from_lat) * M_PI / 180) / 2), 2) +         cos(($from_lat * M_PI / 180)) * cos(($to_lat * M_PI / 180)) *         pow(sin((($to_long - $from_long) * M_PI / 180) / 2), 2)))) * 2 * $radiusOfEarth;

mysql:

atan2(sqrt(pow(sin(((ap.Latitude - $from_lat) * pi() / 180) / 2), 2) +             cos(($from_lat * pi() / 180)) * cos((ap.Latitude * pi() / 180)) *             pow(sin(((ap.Longitude - $from_long) * pi() / 180) / 2), 2)), sqrt(1 - (pow(sin(((ap.Latitude - $from_lat) * pi() / 180) / 2), 2) +             cos(($from_lat * pi() / 180)) * cos((ap.Latitude * pi() / 180)) *             pow(sin(((ap.Longitude - $from_long) * pi() / 180) / 2), 2)))) * 2 * 6371000 as Distance 

最佳答案

正是您想要的东西。

SELECT ((ACOS(SIN(48.73233 * PI() / 180) * SIN(48.84647 * PI() / 180) + COS(48.73233 * PI() / 180) *
COS(48.84647 * PI() / 180) * COS((2.36618 - 2.41026) * PI() / 180)) * 180 / PI()) * 60 *1.1515 * 1.609344 *1000)
AS distance FROM dual;

关于mysql - 半正矢距离 - MySQL 和 PHP 对于相同的公式返回不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12691944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com