通过纬度和经度查找电话区号

9
寻找一种方法,可以根据给定的纬度和经度(如果必要还有国际代码),获取电话区号列表。请注意,我所说的不是国际拨号前缀,而是其中的区号。
例如,科罗拉多州丹佛市由303和720区号覆盖。它位于39.739 -104.985,属于NANP 1。因此,给定39.739,-104.985,1,我想得到[303,720]。
图书馆、网络服务、数据库或需要解析为数据库的原始数据,例如形状点的网页,都可以接受,覆盖面越广越好,但仅限于NANP 1也会很有帮助。
请注意,我已经使用了MaxMind,并可以将纬度和经度转换为虚假IP,并将其用作查找键,但MaxMind声称仅支持美国地区码(无论它们是否真正意味着美国,或者实际上是NANP,我尚未测试),似乎每个位置仅限一个区号(例如丹佛市仅限303)。因此这是一种可能性,但并不是太好的选择。
更新: 我找到了一些更相关的信息,但没有明确的解决方案,所以我在这里列出来,而不是在答案中:

我能够找到两个美国数据库http://www.area-codes.com/area-code-database.asphttp://www.nationalnanpa.com/area_codes/index.html (页面下方50%,MS Access文件)。前者包括$450的纬度/经度信息,而后者需要最近邻匹配,就像KeithS所说的那样(它可能是NANPA City Query发现的相同DB)。

此外,我发现Teleatlas拥有区号边界地图,ESRI随ArcGIS副本一起提供区号形状文件。 Maponics似乎有可用的数据:Maponics' 的数据在Google Maps上实现,网址为http://www.usnaviguide.com/areacode.htm

2个回答

6

哇,你绝对需要一个预先存在的点数据库。我首先想到的是ZIPList5 Geocode。它包括每个活动的美国邮政编码的纬度和经度数据,因此您可以将此数据放入数据库表中,对其进行大量索引,并通过几乎任何地理信息进行搜索。您可以花费$40购买一份副本,企业级使用为$100。唯一的问题是,该数据库仅包含每个邮政编码的“主要”区号,因此具有多个区号的都市区域(例如达拉斯、芝加哥、纽约)不会全部显示。

您可以尝试使用我找到的一些免费数据来采用双管齐下的方法:对于给定的纬度和经度,请在USGS地理名称信息系统中查找数据的最近邻居;它包括每个人类居住中心和每个命名的地标特征的信息,以及它们的中心的纬度/经度坐标。现在,您已经将纬度/经度点映射到最近的城镇/城市、邮政编码、县和州。现在,您可以将其与此美国区号列表进行比较,以查找与USGS的任何或所有标识信息匹配的区号。这一切都是免费的,并最终为您提供所需的内容,但您可能需要努力“加工”两组数据,使其成为您可以有效交叉参考的内容和/或您需要实现一个良好的“搜索引擎”,以准确地查找最近邻居命名点,然后查找匹配名称的位置的区号。

再看一件事就是NANPA,它负责区号分配。我肯定他们有更全面的可下载数据库,但我找到的唯一免费公共访问是这个搜索页面,它将为具有>20k人的任何城市查找区号。您可以将您的纬度/经度数据转换为城市和州,然后访问此搜索页面:NANPA城市查询


仅仅是为了扩展第二段内容;使用Geonames的Web服务或免费数据库是进行最近邻搜索的另一种选择。 - Yuri Gadow

2

1
从2020年开始,geocoder.ca似乎不再具有电话区号数据。 - lysdexia
1
现在已经返回:<geodata> <latt>39.738653</latt> <longt>-104.985467</longt> <city>阿瓦达</city> <prov>科罗拉多州</prov> <postal>80214</postal> <stnumber>101</stnumber> <staddress>第14大道</staddress> <inlatt>39.739</inlatt> <inlongt>-104.985</inlongt> <distance>0.056</distance> <neighborhood>市政中心</neighborhood> <neighborhoods> <neighborhoodname>市政中心,丹佛科罗拉多州</neighborhoodname> </neighborhoods> <TimeZone>美国/丹佛</TimeZone> <AreaCode>720,303</AreaCode> <confidence>0.9</confidence> - Ervin Ruci

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接