最近有小伙伴想寻找一份中国六大地理区域的 shp 数据,实际上由 R 语言就可以制作出来了。
首先我们可以查到六大地理区域的分区是这样的:

从市级地图数据出发:
library(tidyverse) library(sf) read_sf("2019行政区划/省.shp") %>% st_transform(4236) %>% st_make_valid() -> provmap
|
然后就可以依次提取合并各个区域了:
华东地区
provmap %>% filter(省 %in% c("山东省", "江西省", "福建省", "安徽省", "浙江省", "江苏省", "上海市")) %>% st_union() %>% st_sfc() %>% st_sf() %>% mutate(region = "华东地区") -> region1
|
华北地区
provmap %>% filter(省 %in% c("内蒙古自治区", "山西省", "河北省", "天津市", "北京市")) %>% st_union() %>% st_sfc() %>% st_sf() %>% mutate(region = "华北地区") -> region2
|
西北地区
provmap %>% filter(省 %in% c("新疆维吾尔自治区", "甘肃省", "青海省", "宁夏回族自治区", "陕西省")) %>% st_union() %>% st_sfc() %>% st_sf() %>% mutate(region = "西北地区") -> region3
|
东北地区
provmap %>% filter(省 %in% c("辽宁省", "吉林省", "黑龙江省")) %>% st_union() %>% st_sfc() %>% st_sf() %>% mutate(region = "东北地区") -> region4
|
西南地区
provmap %>% filter(省 %in% c("四川省", "重庆市", "贵州省", "云南省", "西藏自治区")) %>% st_union() %>% st_sfc() %>% st_sf() %>% mutate(region = "西南地区") -> region5
|
中南地区
provmap %>% filter(省 %in% c("湖南省", "湖北省", "河南省", "海南省", "广西壮族自治区", "广东省", "澳门特别行政区", "香港特别行政区")) %>% st_union() %>% st_sfc() %>% st_sf() %>% mutate(region = "中南地区") -> region6
|
合并七个区域:
bind_rows(region1, region2, region3, region4, region5, region6) -> regionall
|
绘图展示下:
library(leaflet) leaflet() %>% rstatatools::geoqmap(attribution = "微信公众号 RStata") -> map mapview::mapview(regionall, map = map)
|

最后,保存成 shp 数据:
dir.create("region6") regionall %>% st_write("region6/region6.shp", layer_options = "ENCODING=UTF-8", delete_layer = TRUE, layer = "MULTIPOLYGON")
|
点击这里跳转到 RStata 短书平台获取附件:使用 R 语言制作六大地理区域 shp 数据
评论