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文件,或者它可能是最新的.该程序包无需其他下载即可运行.
| 归档时间: |
|
| 查看次数: |
3842 次 |
| 最近记录: |