当前位置:天才代写 > tutorial > 其他教程 > 用R语言查询ip经纬度及google舆图标注

用R语言查询ip经纬度及google舆图标注

2017-12-04 08:00 星期一 所属: 其他教程 浏览:628

用R语言查询ip经纬度及google地图标注

先是从http://geolite.maxmind.com下载了有关ip信息查询的数据库,下载的csv文件,由于免费的数据库只较准确到都市,这点实在有点惋惜了,因为我们的集群实在是小范畴的利用。

wget
http://geolite.maxmind.com/download/geoip/database/GeoLiteCity_CSV/GeoLiteCity-latest.zip

unzip GeoLiteCity-latest.zip

 

这内里有两个文件,一个GeoLiteCity-Blocks.csv和GeoLiteCity-Location.csv,Block文件中是提供的ip对应到locid信息,location文件中提供的是locid和经纬度信息。

从http://devblog.icans-gmbh.com/using-the-maxmind-geoip-api-with-r/偷了它的一个函数,

ipAddressToIpnum <- function(x) {
  s <- data.frame(
   
do.call(rbind,
           
lapply(strsplit(x, “.”, fixed=TRUE),
                  
“as.numeric”)))
  s <- transform(s,
                
ipnum = 16777216*X1 + 65536*X2 + 256*X3 + X4)
 
  return(s$ipnum)
}
这个函数认真将字符型的ip转换为数字。
load(“../TEST/IP.RData”)
City_location =
read.csv(“GeoLiteCity_20131001/GeoLiteCity-Location.csv”,skip=1)

City =
read.csv(“GeoLiteCity_20131001/GeoLiteCity-Blocks.csv”,skip=1)

ipAddressToIpnum <- function(x) {
  s <- data.frame(
   
do.call(rbind,
           
lapply(strsplit(x, “.”, fixed=TRUE),
                  
“as.numeric”)))
  s <- transform(s,
                
ipnum = 16777216*X1 + 65536*X2 + 256*X3 + X4)
 
  return(s$ipnum)
}

ip = ipAddressToIpnum(“202.197.111.112”)
ip = ipAddressToIpnum(as.character(IP.info))
ip = c(ip,ipAddressToIpnum(c(“202.103.0.117″,”
243.168.158.1″,”36.7.255.255″,”220.170.64.96″)))
#IP.info =
c(“188.143.232.193″,”37.140.141.2″,”66.249.75.18″,”5.10.83.2”)

#ip = c(ip,ipAddressToIpnum(IP.info))

inquery <- function(ip){
  index1 =
ip>=City$startIpNum
  index2 = ip<=City$endIpNum
  index = index1&index2
  match(T,index)
}

loc = unlist(lapply(X=ip,FUN=inquery))

loc = loc[!duplicated(loc)]

loc = City[loc,]

loc =
City_location[match(loc$locId,table=City_location$locId),]

#loc =
City_location[City_location$locId==City[index,]$locId,]

marker = data.frame(lat=loc$latitude,lon=loc$longitude)
bb = qbbox(marker[,1],marker[,2])
tp = GetMap.bbox(bb$lonR,bb$latR,marker=marker)
PlotOnStaticMap(tp,maptype=”mobile”)

 

    关键字:

天才代写-代写联系方式