gpt4 book ai didi

java - GPS:重新考虑这个答案背后的逻辑

转载 作者:行者123 更新时间:2023-11-29 07:50:55 27 4
gpt4 key购买 nike

这是一个后续问题,我认为它可以帮助那些想知道远程计算细节的人:跟进这个问题:here最佳答案以米为单位给出了 2 个给定点之间的距离。

public static float distFrom(float lat1, float lng1, float lat2, float lng2) {
double earthRadius = 3958.75;
double dLat = Math.toRadians(lat2-lat1);
double dLng = Math.toRadians(lng2-lng1);
double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *
Math.sin(dLng/2) * Math.sin(dLng/2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
double dist = earthRadius * c;

int meterConversion = 1609;

return (float) (dist * meterConversion);
}

但我的问题从这里开始:

  1. 如所选答案“地球不是一个完美的球体,因此此解决方案会导致轻微错误”下的评论。这是真的?如果是这样那么它有多精确? (以米为单位)

  2. 在这样的解决方案中,我看到地球半径从 6360 到 6379 公里不等。这种差距在产出上真的可以原谅吗?

编辑:假设我们的两个点都位于 5 公里的距离内。

最佳答案

(1) 我们无法真正以米为单位告诉您准确度,因为它取决于您计算的两点在地球上的哪个位置 - 例如,some formulas ,精度是不错的,除非这些点在地球上彼此大致相对,在这种情况下精度会迅速降低。

(注意:根据 this“因此,只要我们假设地球是球形的,地球上距离的任何单一公式都只能保证在 0.5% 以内正确” - 这让您了解涉及多少错误。)

对于haversine formula , 根据维基百科和 this page (其中包含大量有用信息),您看到的误差幅度高达 0.55%,但根据纬度,误差幅度通常低至 0.3%。这意味着,对于相距 5 KM 的两个点,误差应约为 15 M(同样,取决于纬度以及您对地球半径的近似值有多好)。

(2) 您的错误级别是否可以接受完全取决于您使用此代码执行的操作。它可能是可以接受的,也可能不是;这取决于。

有关详细信息,请阅读 this page .有很多方法可以做到这一点,准确度各不相同,维基百科对其中的一些方法有很好的描述。

关于java - GPS:重新考虑这个答案背后的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21318407/

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