mySql中hasrsine公式的正确数据类型是什么

时间:2017-07-13 00:29:26

标签: php mysql pdo haversine

当我将经度和纬度保存到数据库中时,它将存储为数据类型Decimal。 经度保存为34,纬度保存为118 这将与hasrsine公式一起使用。我正在尝试在距离用户当前位置20英里的范围内找到位置。

1 个答案:

答案 0 :(得分:1)

不,这肯定行不通。

一度纬度大约为70英里。这比你想要的精度要大得多。

如果你想计算20英里分辨率的距离,你的纬度和经度至少需要一个小数位 - 0.1°纬度是7英里,0.1°经度和大约相同10英里(√2x7 = 9.8)。当然,使用源数据中提供的精度会更好。

这里可能出现的问题是您在没有指定宽度的情况下使用DECIMAL类型作为纬度和经度。在MySQL中,默认为DECIMAL(10,0) - 十位数,所有这些都在小数位之前(例如,1234567890.)。你可能想要的更像是DECIMAL(10,6),它允许列存储一个十位数字,其中六位数字位于小数点后面(例如1234.123456)。 Six decimal places of latitude/longitude gives you a resolution of about 4 inches,所以存储的内容没有意义。