2018 年中国各省市级行政区划矢量数据(附带邻近区域)

如何使用 R 语言绘制附带邻近区域的中国各省行政区划地图?

今天给大家分享一份非常有意思的地图数据,通常我们画地图的时候都是只画某个部分的,这样就会很单调,如果能把该省附近的区域也简单标示出来就会显得丰富一些,例如这样:

当然不只是新疆地图的了,今天分享给大家的是从民政部(http://xzqh.mca.gov.cn/map) 获取的中国各省的市级行政区划地理数据:

一共 32 个文件夹,其中一个是全国的,剩下的 31 个是各个省市自治区的(不含港澳台),每个文件夹里面包含 3 个 GEOJSON 文件和一个 png 图片:

例如河北省的文件夹里面包含下面四个文件:

  • 河北省.png
  • 130000.geojson
  • 130000_Point.geojson
  • 130000_Line.geojson

各个省的预览图如下:

安徽省 北京市
重庆市 福建省
甘肃省 广东省
广西壮族自治区 贵州省
海南省 河北省
河南省 黑龙江省
湖北省 湖南省
吉林省 江苏省
江西省 辽宁省
内蒙古自治区 宁夏回族自治区
青海省 山东省
山西省 陕西省
上海市 四川省
天津市 西藏自治区
新疆维吾尔自治区 云南省
浙江省 全国

绘图代码

这份数据在 R 语言中如何使用呢,这里我以辽宁省的为例:

library(tidyverse)
library(sf)
library(hrbrthemes)
library(ggplot2)

# 注意:代码里面的 cnfont 是我自己设置的字体,如果你没有设置,可以把相应的字体设置删除
read_sf("210000.geojson") -> df
read_sf("210000_Point.geojson") -> dfpoint
read_sf("210000_Line.geojson") -> dfline
ggplot() +
geom_sf(data = subset(df, FillColor == "" & QUHUADAIMA != "hai"),
aes(geometry = geometry), fill = "gray",
size = 0.2, alpha = 0.6) +
geom_sf(data = subset(df, FillColor == "" & QUHUADAIMA == "hai"),
aes(geometry = geometry), fill = "#6AA7DF", alpha = 0.6,
size = 0.2) +
geom_sf(data = subset(df, FillColor != ""),
aes(geometry = geometry,
fill = I(FillColor)), color = "white", size = 0.3) +
geom_sf(data = dfpoint,
aes(geometry = geometry),
shape = 1) +
geom_sf_text(data = dfpoint,
aes(geometry = geometry, label = paste0('\n\n', NAME)),
family = 'STSong', size = 2,
check_overlap = TRUE) +
geom_sf_text(data = subset(dfline, QUHUADAIMA != "other"), aes(geometry = geometry,
label = NAME),
family = "STSong", size = 3) +
theme_ipsum(base_family = cnfont) +
labs(title = "辽宁省行政区划",
subtitle = "地图数据来源于中华人民共和国民政部",
caption = "绘制:微信公众号 RStata") +
theme(legend.title = element_blank(),
axis.text.x = element_blank(),
axis.text.y = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.title.x = element_blank(),
axis.title.y = element_blank())

全国市级行政区划的绘制需要六个文件:

provcity <- read_sf("全国/provcity.geojson")
provline <- read_sf("全国/provline.geojson")
provpoint <- read_sf("全国/provpoint.geojson")

boundary <- read_sf("全国/quanguo_Line.geojson")
provboundary <- read_sf("全国/quanguo.geojson")
point <- read_sf("全国/quanguo_Point.geojson")

ggplot() +
geom_sf(data = subset(boundary, NAME == ""),
aes(geometry = geometry),
color = "gray", size = 0.5) +
geom_sf(data = subset(provcity, FillColor != "" & FillColor != "#000022"),
aes(geometry = geometry, fill = I(FillColor)),
color = "white", size = 0.08) +
geom_sf(data = subset(provboundary, FillColor == ""),
aes(geometry = geometry),
color = "gray", size = 0.5) +
geom_sf_text(data = subset(boundary, NAME != "" & str_length(QUHUADAIMA) != 7 & !str_detect(QUHUADAIMA, "hai")),
aes(geometry = geometry, label = NAME),
color = "black", size = 2, family = cnfont) +
geom_sf_text(data = subset(boundary, NAME != "" & str_length(QUHUADAIMA) != 7 & str_detect(QUHUADAIMA, "hai")),
aes(geometry = geometry, label = NAME),
color = "#6AA7DF", size = 3, family = cnfont) +
theme_ipsum(base_family = cnfont) +
coord_sf(crs = "+proj=laea +lat_0=23 +lon_0=113 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +units=m +no_defs") +
labs(title = "中华人民共和国行政区划(市级)",
subtitle = "绘制:微信公众号 RStata",
caption = "地图数据来源:民政部") +
theme(legend.title = element_blank(),
axis.text.x = element_blank(),
axis.text.y = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.title.x = element_blank(),
axis.title.y = element_blank())

点击这里跳转到 RStata 短书平台获取附件:2018 年中国各省市级行政区划矢量数据(附带邻近区域)

评论