我刚刚为我的爸爸公司开发了一个邮政编码距离计算器,我们所有的客户都在档案中,每当有新的潜在客户进行查询时,系统都会检查所有其他客户的邮政编码。问题是它还没有做距离计算。在距离设置为5英里的DT1邮政编码中键入,表示DT1,2和3靠近。 DT2表示DT1和2,DT3表示DT1,3和4.这没有任何意义。然而,如果我将BH2放在50英里的距离内,它将带回伯恩茅斯,多尔切斯特,朴次茅斯,巴斯,南安普敦和其他几个城镇。这些都是正确的 - 但我不知道DT邮编发生了什么。 DT11不会带回任何(不到5英里),DT10也不会带回(除了他们自己)。邮政编码距离计算
我首先使用了(x * x + y * y)的根 - 我相信这就是所谓的毕达哥拉斯定理。不知道,因为我使用这个词已经有多年了!
我也曾尝试以下操作:
$sinstuff = sin(deg2rad($latitude))*sin(deg2rad($latitude2));
$cosstuff = cos(deg2rad($latitude))*cos(deg2rad($latitude2))*cos(deg2rad($longitude-$longitude2));
$sumstuff = $sinstuff + $cosstuff;
$acosstuff = rad2deg(acos($sumstuff));
$distance = $acosstuff*60*1.1515; //dunno what the 60 and 1.1515 is all about - I got this formula off a website.
这是似乎是造就了奇怪的结果的公式。我还注意到,DT11和DT11之间的确切距离大约是+/- 0.00000989 {和许多其他数字}。这也似乎有点奇怪,因为,当然,DT11和它本身之间的距离是0 ...
有没有人曾经成功地做过类似这样的事情?
我确实有一大批文件 - 总共约158MB - 包含每个英国邮政编码全部,以及相应的经度和纬度。我的目标是,不是将指定的全部邮政编码与其他全部邮政编码进行比较,以确定哪些区号小于一定距离,然后将指定的邮政编码与这些区域内的所有邮政编码进行比较。这是否有效?有没有更高效的方法?
任何帮助,这将不胜感激。
问候,
理查德
PS我知道有一些网站在那里,告诉你如何计算出的距离,但我不似乎能够得到其中的任何工作正常(因为你可以从上面告诉)。
PPS我知道我可以为此使用Google API - 但这不是一个选项,因为这将成为在本地安装的wamp服务器上运行的离线应用程序。它适用于我们无法保证互联网连接的贸易展会。
约+/- 0.00000989 {和很多其他数字}',这只是一个舍入误差 – 2010-09-07 09:21:01
它应该仍然是0,当然...无论计算是如果数字是相同的,它应该是0 .. 。当我把它变成2dp时,我发现了它,它在0时表示它只是四舍五入 - 但它不应该需要四舍五入。 – ClarkeyBoy 2010-09-07 09:33:32