- A+
所属分类:R语言
本实例要实现目标通过输入城市名或者地名,然后找出其经度纬度值,以及通过可视化展现其线路流向以及周边地图展示
本实例参考文章主要来自金大侠博客:http://user.qzone.qq.com/675229288/main
address_list数据:
山西省太原市小店区亲贤北街77号
贵州省贵阳市云岩区书香门第B栋3单元
北京市通州区神树商业街168号
贵州省贵阳市南明区兴关路51
北京市东城区长巷二条乙5号
山西省太原市杏花岭区北肖墙12号
北京
北京市通州区
北京市的的的的的
天津市武清区
1、生成可视化地图
- library(devtools)
- #install_github('lchiffon/REmap')
- library(REmap)
- city_vec = c("北京","Shanghai","广州")
- get_city_coord("Shanghai")
- get_geo_position (city_vec)
- set.seed(125)
- origin = rep("杭州",5)
- destination = c('台州','丽水','金华','温州','乡宁')
- dat = data.frame(origin,destination)
- out = remap(dat,title = "REmap实例数据",subtitle = "theme:Dark")
- plot(out)
- mapNames("杭州")
结果:
2、根据地名,生成其经纬度
- #############使用百度API######################
- ############地理位置→经纬度###################
- ##############################################
- library(REmap)
- #library(RCurl)
- #library(rjson)
- #get_city_coord('杭州')
- #导入地址列表
- address <- read.table('address_list.txt',header = F, col.names=c('address'),as.is = c(1))
- address <- address$address #转化为向量格式,备for循环使用
- head(address)
- #建立备用向量,包括空向量及百度地图api秘钥
- baidu_lng <- c()
- baidu_lat <- c()
- ak <- 'V5dWHCeG7jdMhcElzW自己的APIAK' #百度地图api的秘钥,需自己申请
- #加载包
- library(rjson)
- library(RCurl)
- location <-address[1]
- #循环解析过程
- for (location in address) {
- #生成规则的url地址(具体参数可参考Geocoding API文档)
- url <- paste('http://api.map.baidu.com/geocoder/v2/?ak=',ak,'&callback=renderOption&output=json&address=',location,sep='')
- #利用URLencode()转换为可解析的URL地址
- url_string <- URLencode(url)
- #通过readLines读取URL地址,并解析JSON格式的结果
- json<- readLines(url_string, warn=F)
- geo <- fromJSON(substr(json,regexpr('\\(',json)+1,nchar(json)-1))
- #在解析结果中提取经纬度
- lng<-geo$result$location$lng
- lat<-geo$result$location$lat
- #存储到已经建好的字段中
- baidu_lng <- c(baidu_lng,lng)
- baidu_lat <- c(baidu_lat,lat)
- }
- #整理结果
- result <- data.frame(address=address,longitude=baidu_lng,latitude=baidu_lat)
- result
结果(对应address_list文件位置经纬度):
3、获取输入名字的百度地图展现
- library(devtools)
- #install_github('badbye/baidumap')
- #install_github('lchiffon/REmap')
- library(baidumap)
- library(ggmap)
- ## Loading required package: ggplot2
- #获取浙江中医药大学的地图信息
- ####http://www.gpsspg.com/maps.htm
- q <- getBaiduMap(c(120.2230040000,30.2154520000), width=600, height=600, zoom=18, scale = 2, messaging=FALSE)
- ggmap(q) #绘制地图
- q <- getBaiduMap('浙江中医药大学', width=600, height=600, zoom=18, scale = 2, messaging=FALSE)
- ggmap(q) #绘制地图
结果:
华青莲日常点滴,方便自己,成长他人!!!
支付宝打赏
微信打赏
赏