按经纬度查找电话区号
Posted
技术标签:
【中文标题】按经纬度查找电话区号【英文标题】:Lookup telephone area code by latitude and longitude 【发布时间】:2010-10-28 22:37:11 【问题描述】:寻找一种方法来获取给定纬度和经度的电话区号列表(如果需要,还可以提供给定的国际代码。)注意,我不是在谈论国际拨号前缀,而是其中的区号。
例如,科罗拉多州丹佛市的区号为 303 和 720。它位于 39.739 -104.985 并且位于 NANP 1 中。所以给定 39.739,-104.985,1 我想返回 [303,720]。
库、Web 服务、DB 或需要解析为 DB 的原始数据(例如,形状点的网页)都可以,而且覆盖范围越广越好,但只要 NANP 1 就可以了帮助。
请注意,我已经使用 MaxMind 并且可以将 lat-lng 转换为假 IP 并将其用作查找键,但 MaxMind 仅声称美国区号(无论它们是真的意味着美国还是实际上我没有测试过的 NANP)和似乎每个地点只有 1 个(例如丹佛只有 303 个。)所以这是一种可能性,只是不是很好。
更新:我找到了一些更相关的信息,但没有明确的解决方案,所以我在这里列出而不是在答案中:
我能够找到两个美国数据库 http://www.area-codes.com/area-code-database.asp 和 http://www.nationalnanpa.com/area_codes/index.html(页面下方的 50%,MS Access 文件。)前者包括 lat/lng,价格为 450 美元,后者需要最近邻匹配,正如 KeithS 所说关于(这可能是他发现的 NANPA City Query 的底层数据库。)
此外,我发现暗示 Teleatlas 具有区号边界地图并且 ESRI 包含带有 ArcGIS 副本的区号形状文件的信息。 Maponics 似乎有可用的数据:在 http://www.usnaviguide.com/areacode.htm 有一个 Maponics 数据的 Google Maps 实现。
【问题讨论】:
【参考方案1】:哇。您肯定需要某种预先存在的积分数据库。我的第一个想法是ZIPList5 Geocode。它包括每个有效的美国邮政编码的经纬度数据,因此您可以将这些数据放入数据库表中,从其中索引地狱,并根据您可以访问的任何地理信息进行搜索。您可以花 40 美元购买一份,企业级使用只需 100 美元。唯一的问题是,这个 DB 只有每个邮政编码的“主要”区号,所以有多个邮政编码的都市区(达拉斯、芝加哥、纽约市)不会显示所有邮政编码。
您可以使用我发现的一些免费数据尝试双管齐下的方法:对于给定的纬度和经度,对USGS Geographic Names Information System 中的数据进行最近邻搜索;它包括有关每个人类居住中心和每个命名的地标特征的信息,以及它们中心的纬度/经度坐标。您现在已将纬度/经度点映射到最近的城镇/城市、邮政编码、县和州。现在,您可以将其与此U.S. Area Codes 列表进行比较,以查找与来自 USGS 的任何或所有识别信息相匹配的区号。这一切都是免费的,最终会为您提供所需的东西,但您可能需要做一些工作才能将两组数据“按摩”成您可以有效交叉引用的东西,和/或您需要实现一个好的“搜索引擎”,它可以准确地找到最近邻的命名点,然后找到与名称匹配的位置的区号。
另一件值得关注的事情是 NANPA,它从一开始就管理区号分配。我确信他们有一个更全面的可下载数据库,但我能找到的唯一免费公共访问是这个搜索页面,它可以找到任何人口超过 2 万人的城市的区号。您可以将纬度/经度数据转换为城市和州,然后点击此搜索页面:NANPA City Query
【讨论】:
只是为了扩展第二段;使用 Geonames 的网络服务或免费数据库是进行最近邻搜索的另一种选择。【参考方案2】:这是一个选项: http://geocoder.ca/39.739,-104.985?geoit=xml
<TimeZone>America/Denver</TimeZone>
<AreaCode>720,303</AreaCode
【讨论】:
geocoder.ca 截至 2020 年似乎不再有电话区号数据。 现在又回来了:以上是关于按经纬度查找电话区号的主要内容,如果未能解决你的问题,请参考以下文章