【问题标题】:Google Maps API v3 will produce more than 15 digit precision(lat / long)? [duplicate]Google Maps API v3 将产生超过 15 位的精度(纬度/经度)? [复制]
【发布时间】:2014-04-22 08:13:09
【问题描述】:

我正在尝试将纬度和经度(由绘图 API 生成)作为空间数据类型存储在 mysql 数据库中。空间数据类型在 mysql 中支持 15 位精度。

根据我的用例,我必须将准确的数字精度存储在数据库中。所以我需要澄清一下谷歌地图绘图 API v3 是否会产生超过 15 位的精度? (我曾经以 16 位精度见过它,之后我就再也没有得到它了)。非常感谢任何帮助。

【问题讨论】:

  • 为什么不在写入数据库之前控制 lat-lng 值(我的意思是在你的 php-asp.net-java 或 js 或任何你使用的东西中),如果它们的长度超过15?
  • @user3280126 :在我的情况下,这将是一个糟糕的选择。我需要用户绘制的每个形状的精确纬度和经度(ITx 我的用例)。 这就是为什么我想知道 Google Maps API v3 返回的最大数字精度。如果 google maps API 超过 15 位,我将删除空间数据类型。
  • 那我建议你看stackoverflow.com/questions/15965166/…。关于它的信息不多,但我的理解是,15位应该足够准确的信息(我不知道你的情况,极端情况肯定需要15位以上)。
  • @user3280126 :谢谢老兄...这对我帮助很大。

标签: google-maps google-maps-api-3 google-maps-markers


【解决方案1】:

“用于表示一个值的位数”和“用于表示一个值的有意义的位数”是有区别的。

无论您使用什么来确定地球上某个点的位置,都会存在与您的方法相关的不准确之处。对于 GPS,如果您使用特殊的校正方法,您很幸运能得到 1 m - 或几 cm。

由于地球的周长是 40,000 公里和 360 度,因此(在赤道处)1 度对应于 111 公里;所以当你有 0.000 001 度时,你会下降到 11 厘米。换句话说,3 + 6 位数(以度为单位)与您应该关心的一样准确。

达到 15 位 (3 + 12) 意味着您处于亚微米范围内。你真的在乎吗?

顺便说一句,double 可以存储大约 15 位精度(53 位有效位)。因此,您的问题是正确的,即在不采取特殊预防措施的情况下,计算机通常可以表示哪些数字的限制。而且,当您开始对此类数字进行任何类型的计算时,您将很快失去最低有效数字的一些精度。

【讨论】:

    猜你喜欢
    • 2018-10-06
    • 2011-08-23
    • 2013-03-01
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多