gpt4 book ai didi

java - Location.getLatitude 方法返回非精度 double ,这对 GPS 坐标不利

转载 作者:行者123 更新时间:2023-12-01 18:48:04 27 4
gpt4 key购买 nike

状态:大约一周后接受最佳可用答案并表示感谢。等待/邀请更多答案并引用

这件事很复杂。我真的很感谢所有评论员,特别是 asciimo、Gabe Sechan、AlexWien。请在适当研究后进一步投票和/或回答。

塞纳里奥:

Android 中的 Location.getLatitude() 返回 double,其精度较低

Api http://developer.android.com/reference/android/location/Location.html

示例:

编辑2开始

我只是尝试通过模拟器发送 GPS 坐标,并在 Double dlongi = loc.getLongitude(); 中将 111.422006 自动转换为 111.422004999999998;字符串 longi = dlati.toString(); System.out.println(longi);

编辑2结束

编辑3开始

我通过模拟器(实际上是通过GPS设备)发送坐标为111.422006,android API以 double 值111.42004999999998接收它

编辑3结束

为时已晚:BigDecimal 类对此来说太晚了,因为它已经给出了 d/Double。

问题:如果需要完全准确怎么办?

有什么方法可以以良好的精度或以除 double 以外的其他形式获得它?

只是想分享并让其他人也注意到这一点。

请求:在通过 引用 确定正确答案之前,请不要回答。这将对社区有所帮助。

编辑:

看起来普通 GPS 设备的 GPS 坐标本身并不是 100% 完全准确,例如在 3 米附近,但看起来双倍进一步降低了准确性。这实际上是我的问题。

最佳答案

您的帖子显示 111.422006 变为 111.422004999999,这是 0.00001 的差异,由于双重类型转换而不会发生这种情况。

这清楚地表明,精度的降低来自于仿真器输入和/或内部 GPS 处理,最有可能是出于仿真目的(仿真器可以在需要时进行插值)

肯定不是double类型引起的。

对于真实的 GPS,即使 Android 在小数点后 6 位进行截断或四舍五入,这也不会影响位置精度。 gsp 位置的物理限制为 3m。当 android 删除该数字时,位置可能会改变几厘米。但这可以安全地忽略,这是设备所显示的位置,这是众所周知的事实。你无法进​​步。增加位数并不能提高 GPS 精度,您需要更好的 GPS 天线来提高精度。

更新:
这里以米为单位的坐标粒度与所使用的纬度/经度位数相关:

这种情况是最坏的情况:赤道上从 (0.0,0.0) 到 (0.0, lon2) 的距离

lon2= 0.1, meters = 11131.94558870502
lon2= 0.01, meters = 1113.194558870502
lon2= 0.0010, meters = 111.3194558870502
lon2= 1.0E-4, meters = 11.131945588705022
lon2= 1.0E-5, meters = 1.1131945588705023
lon2= 1.0E-6, meters = 0.11131945588705022

所以 0.000001 是 11 厘米

你也可以自己计算一下:
地球周长(大约)= 40.000 公里
除以360度=111.111公里=每度111111米(确切地说是111319m)

1 digit  after comma: 0.1:   divide by  10=  11131.9 m  
2 digits after comma: 0.01: divide by 100= 1113.19m

等等,看上表。

如果您想要更正式的结果:请查看 asciimo 发布的链接:

Coordinates in Decimal degrees

关于java - Location.getLatitude 方法返回非精度 double ,这对 GPS 坐标不利,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16864395/

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