效果展示
上图即为最终效果一些必备的工具
一张json格式的我农地图,或者杨陵地图,可从我的github仓库下载
1
| download.file("https://raw.githubusercontent.com/QGQ931001/git-tutorial/master/yangling_map/yangling.json", destfile = "~/文档/yangling.json" )
|
绘制路网地图
导入以下R 包:
1 2 3 4
| library(osmdata) library(dodgr) library(tidyverse) library(sf)
|
读入杨陵区的数据:
1 2
| yl <- read_sf("~/文档/yangling.json") %>% st_make_valid()
|
获取杨陵区的经纬度范围:
1 2 3 4 5
| st_bbox(yl) %>% matrix(nrow = 2, dimnames = list(c("x", "y"), c("min", "max"))) -> ebox ebox
|
1 2 3
| #> min max #> x 107.94598 108.13869 #> y 34.22145 34.33377
|
提取杨陵区的街道路线:
1
| sraw <- dodgr_streetnet(ebox)
|
把数据保存为rds:
1 2
| sraw %>% write_rds('sraw.rds')
|
提取ebox和yl相交的区域:
1 2 3
| streets <- sraw %>% st_make_valid() %>% st_intersection(yl)
|
然后绘图:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| ggplot() + geom_sf(data = streets, show.legend = F, size = 0.2 ,color = "#DDE080" ) + theme_ipsum(base_family = "Times New Roman") + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), axis.text.x = element_blank(), axis.text.y = element_blank(), axis.title.x = element_blank(), axis.title.y = element_blank(), plot.background = element_rect(fill = "#140035", color = "#140035"), panel.background = element_rect(fill = "#140035", color = "#140035")) + labs(y = "")
|