*- 把 shp 文件转换成 dta 文件 local name = "gdmap" shp2dta using `name'/`name', database(`name'_db) coordinates(`name'_coord) genid(ID) gencentroids(centroids) replace shp2dta using `name'/`name'_line, database(`name'_line_db) coordinates(`name'_line_coord) genid(ID) gencentroids(centroids) replace
这样就会得到四个文件:
gdmap_db.dta
gdmap_coord.dta
gdmap_line_db.dta
gdmap_line_coord.dta
其中前两个是底图的属性数据和坐标系数据,后面两个是线条的。
下面还需要对数据进行下调整。
首先是删除底图上的比例尺和指北针数据,因为这两个元素计划使用线条和多边形选项绘制:
use gdmap_db.dta, clear *- 删除比例尺和指北针 dropifindex(县, "_") save gdmap_db.dta, replace
再创建比例尺和指北针的多边形数据:
use gdmap_coord.dta, clear *- 保留指北针和比例尺对应的观测值 keepif _ID > 21 gen value = 1 save gdmap_polyon, replace
再对线条进行分组:
*- 线条 use gdmap_line_db.dta, clear *- 分组 dropin 1/21 drop 县* gen group = 1 ifindex(市, "边界") // 市边界 replace group = 2 ifindex(省, "边界") // 省边界 replace group = 3 ifindex(省, "_") // 指北针和比例尺的线条 keep ID group ren ID _ID save temp, replace
use gdmap_line_coord.dta, clear mergem:1 _ID using temp keepif _m == 3 drop _m save gdmap_line_coord, replace
这里我把线条分为四类:
城市边界;
省份边界;
比例尺和指北针的线条。
后面的代码中也会根据不同的线条类型使用不同的颜色和粗细。
统计 2022 年每个城市的年均 PM2.5 浓度:
import excel using "2000~2022年中国各城市PM2_5面板数据.xlsx", clear first keepifinlist(省, "广东省") & 年份 == 2022 drop 年份 sum min max sd renmean PM2_5 keep 市代码 PM2_5 save"PM2_5", replace
标签数据也需要处理下:
use labeldf.dta, clear encodeclass, gen(classnum) save labeldf2, replace codebook classnum
然后就可以绘制地图了:
use gdmap_db.dta, clear merge 1:1 市代码 using PM2_5 dropif _m == 2 drop _m
评论