options(remap.ak="MY07CLhm3wKi4N2tQ6WP4kzz21BBZagI")
安装包
library(devtools)
install_github('badbye/baidumap')
install_github('lchiffon/REmap')
baidumap包函数说明
getBaiduMap函数
getBaiduMap(location, width = 400, height = 400, zoom = 10, scale = 2, color = "color", messaging = TRUE) 参数: location:包含经度和维度的向量或者是一个矩阵,或者可以是一个字符串表示地址;经纬度和地址将作为地图的中心点 width,height:map的宽和高 zoom:map的缩放比例,是一个整数,从3(洲)到21(building),默认值是10 scale:像素数 color:"color" or "bw",表示有色或者是黑白 messaging:逻辑语句,决定是否输出下载数据的信息 |
案例:
library(baidumap) library(ggmap) #获取北京大学的地图信息 q <- getBaiduMap('北京大学', width=600, height=600, zoom=18, scale = 2, messaging=FALSE) ggmap(q) #绘制地图 |
getCoordinate函数
根据地址得到经纬度 # 参考文档 getCoordinate(address, city = NULL, output = "json", formatted = F) 参数: address:地址 city:可选项,地质所在的城市 output:json或者xml格式 formatted:F返回原有的json或者xml格式,而T返回的是经纬度的矩阵 |
案例
getCoordinate('北京大学',output='xml') #xml格式 getCoordinate('北京大学',output='json') #json格式 getCoordinate('北京大学',output='xml',formatted = T) #矩阵形式 #可以同时多个地点 getCoordinate(c('北京大学', '清华大学', '人民大学'), formatted = T) |
getLocation
通过经纬度得到地址 # 参考文档 getLocation(location, output = "json", formatted = F, pois = 0) 参数: location:经纬度 output:json或者xml格式 formatted:是否返回一个较好的结果 pois:是否返回这个位置周围的PIO |
案例
getLocation(c(118.12845, 24.57232),formatted = T) #同样可以返回多个位置 getLocation(c(118.12845, 24.57232,116.31234,40.56125),formatted = T)
#fromJSON函数的用法 library(rjson) js <- getLocation(c(116.31617,39.99775),output='json') #json格式 fromJSON(js) #返回一个列表,包含了该地址下的
## 对于含多个经纬度的矩阵 loc = matrix(c(117.93780, 24.55730, 117.93291, 24.57745, 117.23530, 24.64210, 117.05890, 24.74860), byrow=T, ncol=2)
### 得到json格式 location_json = getLocation(loc, output='json')
### 设计一个函数返回district,即所属的区
getDistrict = function(x_json){ x_list = fromJSON(x_json) #json转化为list x_list$result$addressComponent$district #返回所属的区 }
location_district = sapply(location_json, getDistrict) #运用上面的函数到这个json对象上 location_district |
getPlace函数
返回地图搜索结果 getPlace(place = NULL, city = "北京")
参数: place:你想要搜索的地方 city:城市
返回值:数据框dataframe:包含名字、经纬度、地址等 |
案例
#查找北京的大学 bj_college = getPlace('大学','北京') ## Mcdonald's in shanghai sh_mcdonald = getPlace('麦当劳', '上海') |
getRoute函数
通过搜索得到路线 getRoute(...) 参数: origin:起点 destination:终点 mode:出行方式,'walk','transit' region:起点和终点所在区域,若不在同一地区,分别用origin_region和destination_region tactics:10(不走高速), 11(默认, 最短时间), 12(最短路径). coord_type:'bd09ll'(default), 'gcj02'(which Google map and Soso map are using), 'wgs84' for GPS devices. 返回值:dataframe:包含经纬度 |
案例
bjMap = getBaiduMap('北京',color = 'bw') df = getRoute('首都国际机场', '北京南苑机场') ggmap(bjMap) + geom_path(data = df, aes(lon, lat), alpha = 0.5, col = 'red') |
REmap函数
绘制地图使用的是主函数remap
remap(mapdata, title = "", subtitle = "", theme =get_theme("Dark")) mapdata一个数据框对象,第一列为出发地点,第二列为到达地点 title标题 subtitle副标题 theme控制生成地图的颜色,具体将会在get_theme部分说明 |
制作迁徙地图
origin = rep("北京",10) destination = c('上海','广州','大连','南宁','南昌', '拉萨','长春','包头','重庆','常州') dat = data.frame(origin,destination) out = remap(dat,title = "REmap实例数据",subtitle = "theme:Dark") plot(out) |
out = remap(dat,title = "REmap实例数据",subtitle = "theme:Bright", theme = get_theme("None", lineColor = "orange")) plot(out) |
## Set Region Color out = remap(dat,title = "REmap实例数据",subtitle = "theme:Bright", theme = get_theme("None", lineColor = "orange", backgroundColor = "#FFC1C1", titleColor = "#1b1b1b", regionColor |