最近有小伙伴想寻找一份中国七大地理区域的 shp 数据,实际上由 R 语言就可以制作出来了。
首先我们可以查到七大地理区域的分区是这样的:
- 华东地区:包括山东省、江西省、福建省、安徽省、浙江省、江苏省和上海市。
- 华北地区:包括内蒙古自治区、山西省、河北省、天津市和北京市。
- 华南地区:包括海南省、广西壮族自治区、广东省、澳门特别行政区和香港特别行政区。
- 西北地区:包括新疆维吾尔自治区、甘肃省、青海省、宁夏回族自治区和陕西省。
- 东北地区:包括辽宁省、吉林省、黑龙江省和内蒙古自治区东部五盟市(呼伦贝尔市、兴安盟、通辽市、赤峰市和锡林郭勒盟)。
- 西南地区:包括四川省、重庆市、贵州省、云南省、西藏自治区。
- 华中地区:包括湖南省、湖北省、河南省。
由于涉及到市级层面,所以我们需要从市级地图数据出发:
library(tidyverse) library(sf) read_sf("2019行政区划/市.shp") %>% st_transform(4236) %>% st_make_valid() -> citymap
|
然后就可以依次提取合并各个区域了:
华东地区
citymap %>% filter(省 %in% c("山东省", "江西省", "福建省", "安徽省", "浙江省", "江苏省", "上海市")) %>% st_union() %>% st_sfc() %>% st_sf() %>% mutate(region = "华东地区") -> region1
|
华北地区
citymap %>% filter(省 %in% c("内蒙古自治区", "山西省", "河北省", "天津市", "北京市")) %>% filter(!市 %in% c("呼伦贝尔市", "兴安盟", "通辽市", "赤峰市", "锡林郭勒盟")) %>% st_union() %>% st_sfc() %>% st_sf() %>% mutate(region = "华北地区") -> region2
|
华南地区
citymap %>% filter(省 %in% c("海南省", "广西壮族自治区", "广东省", "澳门特别行政区", "香港特别行政区")) %>% st_union() %>% st_sfc() %>% st_sf() %>% mutate(region = "华南地区") -> region3
|
西北地区
citymap %>% filter(省 %in% c("新疆维吾尔自治区", "甘肃省", "青海省", "宁夏回族自治区", "陕西省")) %>% st_union() %>% st_sfc() %>% st_sf() %>% mutate(region = "西北地区") -> region4
|
东北地区
citymap %>% filter(省 %in% c("辽宁省", "吉林省", "黑龙江省") | 市 %in% c("呼伦贝尔市", "兴安盟", "通辽市", "赤峰市", "锡林郭勒盟")) %>% st_union() %>% st_sfc() %>% st_sf() %>% mutate(region = "东北地区") -> region5
|
西南地区
citymap %>% filter(省 %in% c("四川省", "重庆市", "贵州省", "云南省", "西藏自治区")) %>% st_union() %>% st_sfc() %>% st_sf() %>% mutate(region = "西南地区") -> region6
|
华中地区
citymap %>% filter(省 %in% c("湖南省", "湖北省", "河南省")) %>% st_union() %>% st_sfc() %>% st_sf() %>% mutate(region = "华中地区") -> region7
|
合并七个区域:
bind_rows(region1, region2, region3, region4, region5, region6, region7) -> regionall
|
绘图展示下:
library(leaflet) leaflet() %>% rstatatools::geoqmap(attribution = "微信公众号 RStata") -> map mapview::mapview(regionall, map = map)
|

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