R语言实现地理位置与经纬度相互转换

  • A+
所属分类:R语言

本实例要实现目标通过输入城市名或者地名,然后找出其经度纬度值,以及通过可视化展现其线路流向以及周边地图展示

本实例参考文章主要来自金大侠博客:http://user.qzone.qq.com/675229288/main

address_list数据:

山西省太原市小店区亲贤北街77号

贵州省贵阳市云岩区书香门第B栋3单元

北京市通州区神树商业街168号

贵州省贵阳市南明区兴关路51

北京市东城区长巷二条乙5号

山西省太原市杏花岭区北肖墙12号

北京

北京市通州区

北京市的的的的的

天津市武清区

1、生成可视化地图

  1. library(devtools)
  2. #install_github('lchiffon/REmap')
  3. library(REmap)
  4. city_vec = c("北京","Shanghai","广州")
  5. get_city_coord("Shanghai")
  6. get_geo_position (city_vec)
  7. set.seed(125)
  8. origin = rep("杭州",5)
  9. destination = c('台州','丽水','金华','温州','乡宁')
  10. dat = data.frame(origin,destination)
  11. out = remap(dat,title = "REmap实例数据",subtitle = "theme:Dark")
  12. plot(out)
  13. mapNames("杭州")

结果:

R语言实现地理位置与经纬度相互转换

2、根据地名,生成其经纬度

  1. #############使用百度API######################
  2. ############地理位置→经纬度###################
  3. ##############################################
  4. library(REmap)
  5. #library(RCurl)
  6. #library(rjson)
  7. #get_city_coord('杭州')
  8. #导入地址列表
  9. address <- read.table('address_list.txt',header = F, col.names=c('address'),as.is = c(1))
  10. address <- address$address   #转化为向量格式,备for循环使用
  11. head(address)
  12. #建立备用向量,包括空向量及百度地图api秘钥
  13. baidu_lng <- c()
  14. baidu_lat <- c()
  15. ak <- 'V5dWHCeG7jdMhcElzW自己的APIAK'     #百度地图api的秘钥,需自己申请
  16. #加载包
  17. library(rjson)
  18. library(RCurl)
  19. location <-address[1]
  20. #循环解析过程
  21. for (location in address) {
  22.   #生成规则的url地址(具体参数可参考Geocoding API文档)
  23.   url <- paste('http://api.map.baidu.com/geocoder/v2/?ak=',ak,'&callback=renderOption&output=json&address=',location,sep='')
  24.   #利用URLencode()转换为可解析的URL地址
  25.   url_string <- URLencode(url)
  26.   #通过readLines读取URL地址,并解析JSON格式的结果
  27.   json<- readLines(url_string, warn=F)
  28.   geo <- fromJSON(substr(json,regexpr('\\(',json)+1,nchar(json)-1))
  29.   #在解析结果中提取经纬度
  30.   lng<-geo$result$location$lng
  31.   lat<-geo$result$location$lat
  32.   #存储到已经建好的字段中
  33.   baidu_lng <- c(baidu_lng,lng)
  34.   baidu_lat <- c(baidu_lat,lat)
  35. }
  36. #整理结果
  37. result <- data.frame(address=address,longitude=baidu_lng,latitude=baidu_lat)
  38. result

结果(对应address_list文件位置经纬度):

R语言实现地理位置与经纬度相互转换

3、获取输入名字的百度地图展现

  1. library(devtools)
  2. #install_github('badbye/baidumap')
  3. #install_github('lchiffon/REmap')
  4. library(baidumap)
  5. library(ggmap)
  6. ## Loading required package: ggplot2
  7. #获取浙江中医药大学的地图信息
  8. ####http://www.gpsspg.com/maps.htm
  9. q <- getBaiduMap(c(120.2230040000,30.2154520000), width=600, height=600, zoom=18, scale = 2, messaging=FALSE)
  10. ggmap(q) #绘制地图
  11. q <- getBaiduMap('浙江中医药大学', width=600, height=600, zoom=18, scale = 2, messaging=FALSE)
  12. ggmap(q) #绘制地图

结果:

R语言实现地理位置与经纬度相互转换

华青莲日常点滴,方便自己,成长他人!!!

华青莲
误差分位数的默示有效估计与\ 自回归时间序列的预测区间
中国大数据生态图谱&大数据交易市场专题研究报告
深入浅出数据分析(中文版)
数学建模教材(包括十大算法、matlab、lingo、spss、exce以及多种实例模型)

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: