历年工企业周边年平均 PM2.5 浓度面板数据

前几天给大家分享了工企周边 1~5km 范围内的碳排放量数据:

×

很多小伙伴提出是不是可以使用类似的方法计算工企周边的 PM2.5 浓度数据。

之前给大家分享过不少关于 PM2.5 的数据:

×

×

×

×

×

×

关于这些数据是如何处理的,感兴趣的小伙伴可以参考这个课程:

×

由于工企数据是 1998~2014 年间的,所以 1、2、4、5、6 都可以用,其中 1 和 2 是卫星反演数据,4、5 和 6 是结合卫星反演数据并使用地面观测站数据进行校正。所以我觉得用下面三个可能会更好,所以我这次先选择了第 5 份,华盛顿大学圣路易斯分校来源的 PM2.5 数据。

这份数据里面的栅格数据是分辨率 0.01˚x0.01˚ 的,大概是 1 km,下图展示了 2019 年的 PM2.5 浓度分布:

使用工企的经纬度坐标构建 1km~5km 的缓冲区就可以裁剪栅格数据计算各个工企历年周边的平均 PM2.5 浓度变化了。

工企数据我使用的是之前分享的这个:

×

其中经纬度是使用高德地图地理编码接口进行解析的。

首先分别生成了工企地址周边 1km、2km、3km、4km、5km 的缓冲区(因为计算量非常大,所以这次没有计算 10km、15km 和 20km 的),例如地址 5km 的缓冲区是这样生成的:

library(tidyverse)
library(sf)
haven::read_dta("1998~2014年工企地理位置面板数据.dta") %>%
filter(年份 == 2014) %>%
select(gqid, contains("度")) -> df1

df1 %>%
st_as_sf(coords = c("经度", "纬度"), crs = 4326) -> df2

df2 %>%
st_buffer(dist = units::set_units(5, km)) -> df2_5km

这样会得到一个以每个工企为中心、半径为 5km 的圆形区域。

然后读取碳排放量栅格数据,例如 2014 年的:

library(terra)
rast("yeartif/cn2014.tif") -> rst

然后使用上面的缓冲区数据和栅格数据进行地理计算就可以得到每个缓冲区内的碳排放总量了!例如 5km 的:

terra::extract(rst, vect(df2_5km), fun = "sum", na.rm = T, exact = T) %>%
as_tibble()

按照这个思路循环各个年份的即可(不过运算量非常大,建议大家不要尝试,非常耗时)。

处理之后再整理即可得到分享给大家的 历年工企周边的平均PM2.5浓度 数据了,数据中的浓度单位是“微克/立方米”:

例如北京宏华电器有限公司周边 1~5km 范围内年平均 PM2.5 浓度变化如下:

1~5km 的差异不大,大家可以根据自己的需要选择使用。

点击这里跳转到 RStata 短书平台获取附件:历年工企业周边年平均 PM2.5 浓度面板数据

评论