使用 Stata 绘制 2020 年中国各省市行政区划地图的数据和代码

之前给大家分享过一份 2019 年版本的,很多小伙伴表示还需要 2020 年的,所以就更新一下。

总共包含 876 份数据和代码,之所以这么多是因为我提供了 未投影 和 米勒投影 两种版本,米勒投影数据的单位是米,横纵轴更协调,画出来的地图更好看。

数据被分成了下面 8 个文件夹存放:

  • prov:各省的行政区划地图(下一级是市,未投影)
  • prov-mill:各省的行政区划地图(下一级是市,米勒投影)
  • prov-county:各省的行政区划地图(下一级是县,未投影)
  • prov-county-mill:各省的行政区划地图(下一级是县,米勒投影)
  • city:各市的行政区划地图(下一级是县,未投影)
  • city-mill:各市的行政区划地图(下一级是县,米勒投影)
  • 香港特别行政区:香港的行政区划地图(未投影)
  • 澳门特别行政区:澳门的行政区划地图(未投影)

这 876 份地图数据均由代码自动生成,每一份地图数据包含如下内容:

  • 1 个文件夹:里面有 shp 格式矢量数据;
  • 1 个 geojson 文件:GEOJSON 数据;
  • 1 个 do 文件:Stata 使用该地图数据绘制地图的示例代码;
  • 4 个 dta 文件:Stata 绘制地图用的地图数据:包含两组,文件名中包含 line 的是线条数据,不包含 line 的是多边形数据。
  • 1 个 png 文件:Stata 绘制的效果预览,由于图片是自动生成的,所以比较粗糙。

为了方便大家使用,我已经把所有的 geojson 文件转成了 dta 格式的数据,同时提供了一份 Stata 示例代码,例如 郴州市 地图里面的 郴州市地图绘制方法.do 文件的内容为:

* 郴州市 地图绘制方法:
* 欢迎关注微信公众号 RStata 获取更多 Stata 相关的学习资料和资源!
* 作者:微信公众号 RStata
* 注意:运行代码前请记得把工作目录设置为 郴州市_db.dta 文件所在的文件夹。

use "郴州市_db", clear
gen value = int(runiform(1, 84))
grmap value using 郴州市_coord, id(ID) ///
fcolor("252 255 164" "252 181 25" "237 105 37" "187 55 84" ///
"120 28 109" "51 10 95") ///
ocolor("black" ...) ///
clmethod(custom) clbreaks(0 14 28 42 56 70 84) ///
graphr(margin(medlarge)) ///
caption("绘制:微信公众号 RStata", size(*0.8)) ///
osize(vvthin ...) ///
legend(size(*1.3) pos(6) ring(1) row(1) ///
order(2 "0~14" 3 "14~28" 4 "28~42" 5 "42~56" 6 "56~70" 7 "70~84") ///
ti(示例数据, size(*0.5) pos(11) color(black)) color(black)) ///
label(data(郴州市_db) x(x_centroid) y(y_centroid) l(县) color(gs10) size(*0.8 ...) length(40)) ///
line(data(郴州市_coord) size(*0.2 ...) color(black))
gr export "郴州市.png", replace

只要把工作目录切换至 郴州市_db.dta 文件所在的文件夹就可以运行上面的代码了,运行之后就可以得到这样的一张地图了:

郴州市

此外由于该数据中香港和澳门没有具体的区划,所以我额外找了份数据:

香港和澳门

注意事项

  • 如果 spmap 运行出错,可以使用 grmap;
  • geojson 格式的数据和 shp 格式的矢量数据都可以使用 GIS 软件编辑,因此即使你不使用 Stata,这份数据大礼包依然是非常有用的。
  • 如需在地图上添加经纬度坐标点,请选择未投影版本的地图。

点击这里跳转到 RStata 短书平台获取附件:使用 Stata 绘制 2020 年中国各省市行政区划地图的数据和代码

评论