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

Rav*_*avi 3 r ip-address latitude-longitude

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

谢谢.

拉维

Spa*_*man 10

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

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

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

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

startIpNum,endIpNum,locId
"16777216","16777471","17"
"16777472","16777727","104084"
"16777728","16778239","49"
Run Code Online (Sandbox Code Playgroud)

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

104084,"CN","07","Fuzhou","",26.0614,119.3061,,
Run Code Online (Sandbox Code Playgroud)

因此,您需要做的就是编写一些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文件,或者它可能是最新的.该程序包无需其他下载即可运行.


Osi*_*ris 5

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

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