相信大家一定都有和家人一起旅行的难忘经历,值此七夕佳节,给大家分享使用 使用 R 语言制作旅程地图的方法。
![]()
在附件中我给大家准备了制作该地图的所有文件和代码。
- get_coords.R:根据地址生成经纬度的 R 语言函数;
- get_route.R:生成旅行路线的 R 语言代码;
- main.R:生成地图的代码;
- icon 文件夹:地图上图标的文件;
- path:存放旅行路线的文件夹(简化后);
- path_rawdata:存放旅行路线的文件夹(简化后);
- photo:存放照片的文集那句;
- photodata.xlsx:照片经纬度、描述数据;
- routedata.xlsx:旅行路线描述数据。
根据地址解析经纬度:get_coords.R
为了把重要地点标注在地图上,首先我们就需要把地址转换成经纬度:
library(jsonlite) |
注意上面代码里面的 Sys.getenv(“amap.key”) 需要替换成自己的高德地图密钥。关于该密钥的申请可以学习平台上的地理编码课程:
- 使用 Stata 进行地理编码:地址解析经纬度、坐标转换 & 根据经纬度判断所处的省市区县: https://rstata.duanshu.com/#/brief/course/537300af1a9947edb758789785c600f3
- 使用 R 语言进行地理编码:地址解析经纬度、坐标转换 & 根据经纬度判断所处的省市区县: https://rstata.duanshu.com/#/brief/course/6f8633b486ed49e398c486d0d9f0f59a
根据起点、终点、途径点获取旅行路线数据:get_route.R
下面的代码展示了三条旅行路线的获取和保存:
library(jsonlite) |
关于这部分内容,感兴趣的小伙伴可以学习平台上的这个课程:
- 中国各城市间的交通距离是如何解析的?——以各城市与上海的驾车交通路线规划为例: https://rstata.duanshu.com/#/brief/course/e35a78b8555143749245c9de51f9aa48
path_rawdata 文件夹就是存放路径数据的。不过如果旅行路线非常多的话,绘制出来的地图渲染会非常慢,所以还是简化下路径:
# 简化所有的路线 |
简化后的数据会被存放到 path 文件夹里。
为旅行路线数据添加文本注解
routedata.xlsx 文件存放的是对每条路径的注解:
readxl::read_xlsx("routedata.xlsx") |
popup 变量是路线的文本提示框(HTML 代码);color 表示线条的颜色、weight 表示线条的粗细、opacity 表示线条的透明度、group 表示线条的组别,因此可以设定家里不同人的旅行路线不同的颜色、粗细和透明度。group 是最后用于设定图例的。
照片经纬度和描述数据
照片可以存放到 photo 文件夹里面,也可以直接使用在线的网址链接。
photodata.xlsx 存放的是照片的经纬度和描述数据:
readxl::read_xlsx("photodata.xlsx") |
xy 分别表示经度和纬度,可以使用上述的 get_coord() 函数获得,img 表示图片的链接,如果是本地图片可以使用 photo/图片文件的名称后缀,如果是互联网图片,直接使用 http 开头的链接即可。type 变量是图片的类别,也是用来后面设置不同类别的图片使用不同的图标。
icon 文件夹:存放不同类别打卡点的图标
由于我家有两个孩子,一个男孩,一个女孩,所以我使用了下面几种图标:
tibble::tibble( |
![]()
大家也可以替换成自己喜欢的。
绘图旅行地图
做好上面的准备之后就可以绘制旅行地图了~
library(sf) |
![]()
使用 RPubs 发布为在线网页
绘制出来地图之后就可以点击 Viewer 窗口右上角的 Publish 选择 RPubs 进行发表了:
![]()
如果遇到报错,也可以运行下面的代码发表:
rsconnect::rpubsUpload("水蛋一家人的旅程", "index.html", originalDoc = "index.html") |
然后把 continueUrl 的内容复制到浏览器、进行后续操作就可以了。
例如我发布的在线网页:https://rpubs.com/rstata/path
另外如果大家其他掌握静态网页的部署方法,也可以把这个 index.html 文件部署到自己的博客网站上。
点击这里跳转到 RStata 短书平台获取附件:七夕特别推文:使用 R 语言制作旅程地图
评论