1998~2014 年工企周边 1~5km 范围内碳排放总量面板数据

之前给大家分享过不少碳排放相关的数据,例如:

×

×

×

×

×

不过大多都是一些宏观层面的碳排放数据,只有最后一个是上市公司的,只是时间范围特别段,实用性有限。

在其他研究中,经常我们会使用例如样本所在城市的人口、GDP 作为该样本本身变量的一些代理变量。因此我想是不是也可以使用上市公司周边一定区域的碳排放量作为其自身碳排放量的代理(这种做法的问题会很多,但是如果实在没有更好的方法,或许也是一种手段)。

借助地理计算,我们可以构建工企周围半径一定距离的范围,然后以此来裁剪「1970~2021 年中国各省市区县 CO2 排放量面板数据 & 栅格数据」中的栅格数据得到该范围内的碳排放总量。

前不久给大家分享过上市公司周边的碳排放数据,今天再给大家分享一份工企的。

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

×

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

首先分别生成了工企地址周边 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("cntif/2014.tif") -> rst

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

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

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

处理之后再整理即可得到分享给大家的 历年工企周边的碳排放总量 数据了,数据中的碳排放量单位是“吨”:

  • 工企周边的碳排放.dta

例如 dta 格式的数据是这样的:

为了便于大家理解这个计算过程,我绘制了一副这样的图:

方格子就是栅格数据,圆圈是工企周围 5km 范围的缓冲区。例如某个缓冲区和四个格子交叉,那么就是根据交叉部分的比例计算其范围内的碳排放总量。

作为演示,下图展示了历年来中国印刷总公司周边1~5km范围内碳排放总量:

注意数据里面的碳排放单位均为吨,绘图的时候处理成了万吨。

点击这里跳转到 RStata 短书平台获取附件:1998~2014 年工企周边 1~5km 范围内碳排放总量面板数据

评论