我在这里读到这个问题:
What datatype to use when storing latitude and longitude data in SQL databases?
似乎普遍的共识是使用Decimal(9,6)是可行的。对我来说,问题是,我真正需要它的准确性是多少?
例如,Google的API返回如下结果:
"lat": 37.4219720,
"lng": -122.0841430
在-122.0841430中,我需要几位数?我已经读过几本指南了,但是我不能理解他们的意思来解决这个问题。
更准确地说,我的问题是:如果我想要精确到距离精确位置50英尺的范围内,我需要存储多少个小数点?
也许一个更好的问题实际上是一个非编程问题,但它会是:每个小数点给你多精确多少?
有这么简单吗?
发布于 2012-11-27 03:02:35
精度与赤道小数位数
decimal degrees distance
places
-------------------------------
0 1.0 111 km
1 0.1 11.1 km
2 0.01 1.11 km
3 0.001 111 m
4 0.0001 11.1 m
5 0.00001 1.11 m
6 0.000001 0.111 m
7 0.0000001 1.11 cm
8 0.00000001 1.11 mm
发布于 2011-08-24 08:14:17
+----------------+-------------+
| Decimals | Precision |
+----------------+-------------+
| 5 | 1m |
| 4 | 11m |
| 3 | 111m |
+----------------+-------------+
如果你想要50英尺(15米)的精度,去4位数。所以decimal(9,6)
发布于 2014-04-30 02:43:48
我设计数据库,研究这个问题已经有一段时间了。我们使用现成的应用程序和Oracle后端,其中数据字段定义为允许17位小数。太可笑了!也就是千分之一英寸。世界上没有一台GPS仪器是如此精确的。因此,让我们把17位小数放在一边,并处理实际问题。政府保证他们的系统在“最坏的情况下,在95%的置信水平下,伪距精度为7.8米”,但接着又说,实际的联邦航空局(使用他们的高质量仪器)显示的GPS读数通常好到一米以内。
因此,您必须问自己两个问题: 1)您的值的来源是什么? 2)数据将用于什么?
手机并不是特别准确,Google/MapQuest的读数可能只有4到5位小数。一台高质量的GPS仪器可能会让你得到6美元(在美国境内)。但是,捕获比这更多的内容是对键入和存储空间的浪费。此外,如果对值执行任何搜索,用户最好知道6是他/她应该查找的最大值(显然,输入的任何搜索值都应该首先四舍五入到与要搜索的数据值相同的精度)。
此外,如果你要做的只是在谷歌地图中查看一个位置或将其放入GPS中才能到达,那么四五个就足够了。
我不得不嘲笑周围的人输入所有这些数字。他们到底在哪里进行测量呢?前门把手?信箱在前面吗?建筑的中心?手机发射塔的顶部?还有..。每个人都一直在同一个地方使用它吗?
作为一个好的数据库设计,我会接受来自用户的值,可能会超过五位小数,然后为了一致性,只舍入和捕获五位,如果你的仪器很好,并且你的最终用途允许的话,可能是六位。
https://stackoverflow.com/questions/7167604
复制相似问题