ODIAC 碳排放 - AI-Earth 或 PIE-Engine 获取长时间序列数据

ODIAC 碳排放 - AI-Earth 或 PIE-Engine 获取长时间序列数据

全球化石燃料燃烧排放的CO2数据产品(ODIAC Fossil Fuel Emission Dataset)由日本国家环境研究所制作并公开发布。ODIAC率先结合使用夜间光照数据和单个发电厂的排放/位置概况来估计化石燃料CO2排放的全球空间分布。并通过创新的排放模型方法,实现了全球化石燃料CO2排放1x1公里分辨率的数据产品。当前版本为ODIAC2022,包括2000年1月-2021年12月的估算产品。

  • 本代码主要用于计算长时间序列(月度)研究范围内的碳排放总量,并导出为排列好的 txt 文件。

AIE 代码

import aie
import numpy as np
aie.Authenticate()
aie.Initialize()
#色例
vis_params = {
    'color': '#00FF00'
}
visco2 = {
    'palette': ["#000000","#78F34A","#DEFF51","#F7D941","#FC9624","#FF0000"],
    'min': 0.0,
    'max': 500.0};
#定义研究范围
roi = aie.FeatureCollection('China_City') \
            .filter(aie.Filter.eq('city', '北京市')) .geometry()  
map = aie.Map(
    center=roi.getCenter(),
    height=800,
    zoom=6
)
map.addLayer(
    roi,
    vis_params,
    'region',
    bounds=roi.getBounds()
)
#调取影像
img = aie.ImageCollection('ODIAC_CO2_1KM') \ .filterDate('2021-01-01','2021-01-31')\ .first()\ .select(['Map']); co2 = img.clip(roi) map.addLayer(co2,visco2, 'region', bounds=roi.getBounds()) print(co2.getInfo()) map
#建立时间序列,统计城市碳排放总量
def monthdata(start, end):
        images = aie.ImageCollection('ODIAC_CO2_1KM') \
            .filterDate(start, end) \
            .select(['Map']);
        img = images.first().clip(roi)
        data = img.reduceRegion(aie.Reducer.sum(), roi,1000);
        co2data.append((start[:7],data.getInfo()))
for year in range(2016,2021):
	for i in range(1, 13):
		start_month = str(year) + '-'+str(i); 
		end_month =   str(year) + '-'+str(i); 
		monthdata(start_month, end_month)
time_list = [item[0] for item in co2data]
data_values = [item[1]['Map_sum'] for item in co2data]
time_array = np.array(time_list)
data_array = np.array(data_values).reshape(-1, 1)
co2array = np.hstack((time_array.reshape(-1, 1), data_array))
    np.savetxt('/tmp/'+'北京市'+'co2_data.txt', co2array, fmt='%s', delimiter='\t')
    aie.Export.dataset.toAsset('co2_dataset', '/tmp/'+'北京市'+'co2_data.txt')
  • 结果如下图所示:image.png|300
  • 导出栅格数据代码:(仅导出调取影像的栅格数据,需要时序数据加在循环就行)
task = aie.Export.image.toAsset(co2, 'image_export_result', 1000)
task.start()

PIE 代码(PIE-Engine 只有 2000-2019 年逐月的数据)

//研究区域
var roi = pie.FeatureCollection('NGCC/CHINA_CITY_BOUNDARY')
             .filter(pie.Filter.eq("name","北京市"))
             .first()
             .geometry();
//下载长时间序列栅格影像
for(var year = 2000;year<=2019;year++)
{
	for(var month = 1;month<=12;month++)
	{
		var carbon = pie.ImageCollection("ODIAC/CO2_1KM")
                  .filterDate(year+'-'+month+'-01', year+'-'+month+'-05')
                  .select("land")
                  .sum()
				  .clip(roi);
		//导出影像
		Export.image({
		image: carbon,
		description:"碳排放数据"+year,
		assetId: "CO2"+year,
		region: roi,
		crs:'EPSG:4326',
		scale: 1000
      });
	}

}

//时序数据(研究区域内总值)
var start = 2016;
var end = 2017;
var carbondata = [];
function monthdata (start,end){
    var images = pie.ImageCollection("ODIAC/CO2_1KM")
                .filterDate(start, end)
                .select("land");
    var img = images.first().clip(roi);
    var data = pie.Number(img.reduceRegion(pie.Reducer.sum(),roi,1000).get("land"));
    Map.addLayer(img, visParams, start)
    carbondata.push(data.getInfo());
}
function cirmonthdata(start,end){
    var year = start;
    for(var j = 0;j<end-start+1;j++)
    {   
        var year0 =year+j;   
        for(var i = 1; i <13; i++)
        {
            var start1 = (year0+"-"+i).toString(); 
            var end1 = ((year0+1)+"-01").toString();            
            monthdata(start1,end1)
        }        
    }
}
function carbonline(startyear,endyear,array)
{
    var time=[];
    for(var i=startyear;i<=endyear;i++)
    {
        for(var j = 1;j<13;j++)
        {
            var time0 =i+"-"+j
            time.push(time0);
        }
    }
    var lines = {
        title: 'CO2',
        legend: ["CO2"],
        xAxis: time,
        yAxisName: "CO2",
        xAxisName: "时间",
        series: [array],
        chartType: "line"
    };
    var chart = ui.Chart.array(lines,{width:"300px"});
    print(chart)
}
cirmonthdata(start,end)
carbonline(start,end,carbondata)
  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值