【问题标题】:How can I get a list of postcodes (GB) given a postcode (or coordinates) and a radius?如何在给定邮政编码(或坐标)和半径的情况下获取邮政编码 (GB) 列表?
【发布时间】:2017-05-20 14:34:16
【问题描述】:

关于这个主题的文章很多,但我找不到适合我需要的文章。我唯一需要的是获取另一个邮政编码 x 英里半径范围内的邮政编码列表。我没有邮政编码数据库,虽然有一个免费服务可以满足我的需要 (http://postcodes.io/),但它确实有一个交易破坏者限制(最大半径 = 2 公里),所以我不能真正使用它。

我想也许我需要更详细地查看 google maps API,我相信它可能会提供我需要的东西,但从文档中并不清楚,而且它非常专注于地图(我现在不关心)。如果有人能提供一些启发,我将不胜感激。

这是针对 C# 项目的,因此欢迎任何有用的库。

【问题讨论】:

    标签: c# google-maps postal-code google-geolocation


    【解决方案1】:

    为了补充接受的答案,postcodes.io 还提供了它使用的数据集的pg_dump(需要启用 Postgis 的 Postgresql)。

    一旦你下载并解压文件,一个 Postgresql 恢复程序,例如$ cat postcodeiodb.sql | psql postcodesiodb 是导入整个数据集所需的全部内容。不需要额外的导入脚本。此外,pg_dump 将为您创建所有必要的架构和索引。

    项目在此处保留指向最新数据集的指针:https://github.com/ideal-postcodes/postcodes.io/blob/master/latest

    免责声明:我维护 postcodes.io

    【讨论】:

      【解决方案2】:

      下载邮政编码数据库,例如this one 或 this one。如果您对数据的准确性和完整性要求较高,请考虑buying access to the official database。您可以使用Google's GeoCoding API 检索丢失的坐标。如果您需要解析超过每日免费配额的代码,我建议您购买更大的配额,这很便宜。 Google 在文档中对此进行了介绍。

      拥有数据库后,将其存储在具有地理扩展名的 SQL 数据库中,例如Postgis,然后使用 SQL 进行查找,或将其预处理为允许快速查找相邻邮政编码的形式。根据我的经验,按邮政编码查找的最佳选择是添加一些开销并存储postcode → [ (postcode, distance), (postcode, distance), .. ] 关系的哈希图,列表包含您要查找的最大半径的每个邮政编码。也就是说,不要在搜索中使用树遍历。对于坐标到邮政编码的关系,您可以对空间数据使用复杂的数据结构,例如BSP tree,或者保持简单并使用粗略的 2D 网格结构,其中每个节点包含所有邮政编码网格。

      【讨论】:

        猜你喜欢
        • 2013-04-05
        • 1970-01-01
        • 2014-08-31
        • 2016-09-29
        • 1970-01-01
        • 1970-01-01
        • 2011-05-10
        • 1970-01-01
        相关资源
        最近更新 更多