我有一个包含一系列条目(不超过数千个)的数据库,其中一个字段是邮政编码。
我正在创建一个脚本,当给定邮政编码和英里半径(如 50 英里、100 英里)时,我可以找到该范围内的所有条目。
我在网络上看到了许多允许人们执行此操作的文章和脚本,但他们通常通过包含自己的一个相当庞大的数据库来实现这一点。
有没有一种方法可以使用不需要数据库的简单计算来实现这一点?
注意:准确性并不重要。如果输入 50 英里时它可以运行 60 英里,那就完全没问题。
编辑
我注意到很多答案都涉及获取邮政编码的经纬度,但是,数据库只存储了邮政编码,所以我可以假设这包括追溯获取/存储每个条目的经纬度数据库也是如此?
最佳答案
没有。邮政编码遵循 certain logic at a high level ,但邮政编码和位置之间没有算法映射(即邮政编码分配到某个位置,而不是计算为某个位置 - 此过程由邮政监督权威机构(美国的 USPS),但它始终会考虑非地理因素,例如人口密度;因此不可能从某个位置计算邮政编码,反之亦然)。
因此,您将需要那个“庞大的数据库”来告诉您哪个邮政编码属于哪个位置;一旦获得位置,您就可以像往常一样计算哪些条目在半径内。
(您可以查询网络服务,但这只是将数据库隐藏在云中 - 在某些时候,有人必须检查90210
的物理位置。)
关于php - 一定范围内的邮政编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6278507/