zoukankan      html  css  js  c++  java
  • R实现地理位置与经纬度相互转换

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

    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) #绘制地图

    结果:

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

    转自:http://mp.weixin.qq.com/s?__biz=MzA3MTM3NTA5Ng==&mid=2651055492&idx=1&sn=ebeb2da28f17d4efbfc65dcb8595cc1d&chksm=84d9c413b3ae4d05c961bf19efb987cfd99a03f6f838cbc24b76e34ea06100684023a40a3e4a&scene=0#rd

  • 相关阅读:
    扫雷游戏

    set
    map
    认识了个外国友人!
    插入排序算法
    复习 C语言
    有关于我的一点想法
    linux下的内存分布
    C语言-将输入的字符输出并将多个空格按照一个空格的方式输出
  • 原文地址:https://www.cnblogs.com/payton/p/6272948.html
Copyright © 2011-2022 走看看