使用 Stata 绘制长三角地图城市地图(带指北针和比例尺)

最近有小伙伴想要使用 Stata 绘制长三角 26 个城市的地图,所以我就制作了一份数据。

在使用本数据前请确保你已经学习过下面两个课程:

×

×

该套数据包含如下文件:

  • csjcity_db.dta:长三角各城市属性数据;
  • csjcity_coord.dta:底图矢量数据;
  • csjcity_line_db.dta:边界线条属性数据;
  • csjcity_line_coord.dta:边界线条矢量数据(还有比例尺和指北针的线条);
  • csjcity_label.dta:各城市文本标签坐标数据(还有比例尺和指北针的文本);
  • csjpolygon.dta:比例尺和指北针中黑色区域的矢量数据。

这里所说的长三角城市是指如下 26 个城市:上海市, 南京市, 南通市, 台州市, 合肥市, 嘉兴市, 宁波市, 安庆市, 宣城市, 常州市, 扬州市, 无锡市, 杭州市, 池州市, 泰州市, 湖州市, 滁州市, 盐城市, 绍兴市, 舟山市, 芜湖市, 苏州市, 金华市, 铜陵市, 镇江市, 马鞍山市。

绘制填充地图

use csjcity_db.dta, clear
encode 市, gen(city)
codebook city

grmap city using csjcity_coord.dta, ///
id(ID) osize(vvthin ...) ocolor(white ...) ///
clmethod(unique) ///
fcolor("80 80 255" "206 61 50" "116 155 88" "240 230 133" ///
"70 105 131" "186 99 56" "93 177 221" "128 34 104" ///
"107 215 107" "213 149 167" "146 72 34" "131 123 141" ///
"199 81 39" "213 143 92" "122 101 165" "228 175 105" ///
"59 27 83" "205 222 183" "97 42 121" "174 31 99" ///
"231 199 111" "90 101 94" "204 153 0" "153 204 0" ///
"169 169 169" "204 153 0") ///
leg(off) ///
graphr(margin(medium)) ///
line(data(csjcity_line_coord.dta) ///
size(*0.5) pattern(solid) ///
color(black)) ///
polygon(data(csjpolygon) fcolor(black) ///
osize(vvthin)) ///
label(data(csjcity_label) x(X) y(Y) ///
label(cname) length(20) size(*0.7)) ///
ti("使用 Stata 绘制长三角城市地图") ///
subti("绘制:微信公众号 RStata")

gr export pic1a.png, replace width(4800)

在地图上添加散点图

该地图底图的坐标系是“+proj=aea +lat_0=0 +lon_0=105 +lat_1=25 +lat_2=47 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs”,因此不能直接把经纬度添加上去,需要先进行坐标转换。这里以长三角区域内的工企分布为例:

*- 安装 geo2xy: ssc install geo2xy
use 长三角工企, clear
geo2xy 纬度 经度, gen(lat lon) projection(albers, 6378137 298.257223563 25 47 0 105) replace
save pointdata, replace

use csjcity_db.dta, clear
grmap using csjcity_coord.dta, ///
id(ID) osize(thin ...) ocolor(black ...) ///
fcolor("white") ///
leg(off) ///
graphr(margin(medium)) ///
line(data(csjcity_line_coord.dta) ///
size(*0.5) pattern(solid) ///
color(black)) ///
polygon(data(csjpolygon) fcolor(black) ///
osize(vvthin)) ///
label(data(csjcity_label) x(X) y(Y) ///
label(cname) length(20) size(*0.7)) ///
point(data(pointdata) x(lon) y(lat) size(vtiny) fcolor(gray%30)) ///
ti("长三角城市工企业地理分布") ///
subti("绘制:微信公众号 RStata") ///
caption("数据来源:工企数据库,使用高德地图地理编码接口解析经纬度", size(*0.7))
gr export pic2a.png, replace width(4800)

点击这里跳转到 RStata 短书平台获取附件:使用 Stata 绘制长三角地图城市地图(带指北针和比例尺)

评论