使用R的IP地址的纬度和经度

时间:2013-04-22 05:45:44

标签: r ip-address latitude-longitude

我有一个庞大的IP地址列表。有没有办法用R来获得这些地址的相应纬度和经度?

谢谢。

拉​​维

3 个答案:

答案 0 :(得分:10)

这是一个有价值的商业流程,因此任何在线API查找都将是a)昂贵,或b)缓慢。

您最好的选择可能是下载MaxMind City IP数据库:

http://dev.maxmind.com/geoip/geolite

并获取GeoLite City - 其中的CSV版本包含两个文件,一个将IP地址块映射到位置ID,另一个将locationID映射到城镇和lat-long坐标。 e.g:

startIpNum,endIpNum,locId
"16777216","16777471","17"
"16777472","16777727","104084"
"16777728","16778239","49"

告诉您第二个块范围内的IP位于:

104084,"CN","07","Fuzhou","",26.0614,119.3061,,

所以你需要做的就是写一些R代码来读取这些数据库,将你拥有的点分IP地址编码到这里使用的形式(可能是32位整数)并进行几次查找。您可以通过使用data.table,或者将它全部放在SQL数据库中,或者将一些带有C API的C代码写入文件的二进制版本并通过Rcpp或其他魔法将其与R链接来获得最佳性能。

OMG有人已经这样做了!!

http://devblog.icans-gmbh.com/using-the-maxmind-geoip-api-with-r/

和OMG2 !!有人把它变成了一个包裹:

http://www.rforge.net/GeoIP/files/

请注意,最后两个解决方案使用数据库的本地副本,而不是对网页进行查询,因此不会受到限制。

我刚刚让GeoIP包非常简单,而且速度很快。您可能希望更新它附带的DB文件,或者它可能是最新的。该软件包不需要其他下载工作。

答案 1 :(得分:5)

查看 http://ipinfodb.com/ http://freegeoip.net/

他们提供API以从IP地址获取lat / long。 (但不是R特定的)

答案 2 :(得分:4)

geoPlot package有一个函数ipListLookup