【数据分享】GEE批量下载与统计1990-2020年(逐年)30m土地利用数据(whu-clcd)
(点击图片查看详情)
CLCD(China Land Cover Dataset)数据集由武汉大学黄昕老师公布,黄昕老师基于Google Earth Engine上335,709景Landsat数据,制作了中国年度土地覆盖数据集(annual China Land Cover Dataset, CLCD),包含1985+1990—2020中国逐年土地覆盖信息。为此,黄昕老师基于GEE上所有可获得的Landsat数据,构建时空特征,结合随机森林分类器得到分类结果,并提出一种包含时空滤波和逻辑推理的后处理方法进一步提高CLCD的时空一致性。最后,基于5,463个目视解译样本,CLCD的总体准确率达80%。
//论文链接
10.5281/zenodo.5210928
分为了9类
ID | CLASS |
1 | Cropland |
2 | Forest |
3 | Shrub |
4 | Grassland |
5 | Water |
6 | Sonw/Ice |
7 | Barren |
8 | Impervious |
9 | Wetland |
这边引用了GEEStudyroom上传的链接(感谢大佬)
//CLCD数据集
var CLCDCol = ee.ImageCollection("users/GEEStudyRoom/CLCDImageCollection");
可以看到该imagecollection包含了32张单波段为b1的image,所以需要写分类函数,将其分类,定义分类函数
//定义将一年影像按照类别拆分为9个单波段的image
var splitdataset = function(img){
//只有值相同的像素点才保留,并将添加一个波段的属性val,val的值为类别
//1Cropland、2Forest、3Shrub、4Grassland、5Water、6Sonw/Ice、7Barren、8Impervious、9Wetland
var class1 = img.eq(1).selfMask().set('val', 1);
var class2 = img.eq(2).selfMask().set('val', 2);
var class3 = img.eq(3).selfMask().set('val', 3);
var class4 = img.eq(4).selfMask().set('val', 4);
var class5 = img.eq(5).selfMask().set('val', 5);
var class6 = img.eq(6).selfMask().set('val', 6);
var class7 = img.eq(7).selfMask().set('val', 7);
var class8 = img.eq(8).selfMask().set('val', 8);
var class9 = img.eq(9).selfMask().set('val', 9);
//返回一个collection
return ee.ImageCollection.fromImages([
class1, class2, class3, class4, class5, class6, class7, class8, class9]);
};
批量展示与导出研究区数据
var srcFolder = 'users/GEEStudyRoom/LULC_Dataset/LULC_HuangXin/';
var feat = ee.Feature(table);
for(var year = 1990; year<=2020;year++){
var tmpImg = ee.Image(srcFolder+'CLCD_v01_'+year);
//加载逐年土地覆盖影像
Map.addLayer(tmpImg.selfMask().randomVisualizer().clip(table), null, 'landcover'+year);
//export
Export.image.toDrive({
image: tmpImg.selfMask().clip(table),
scale: 30,
region:table,
description:'landcover'+year
});
//调用上面的splitdataset函数,并返回带有9种地物image的collection
}
按区域(shp的区)导出属性,因为研究区一般很大,所以使用的锐哥分享代码,将shp中每个区分开去计算,再导出到一个excel中,可以看到导出的表中行是按shp中的区来划分的。
var dataset
var feat
var year
var nd
var CLCDCol = ee.ImageCollection("users/GEEStudyRoom/CLCDImageCollection");
print(CLCDCol)
var list = ee.List.sequence(0, 31);
//是针对每个要素进行多年统计的函数
var single_feature_static = function(feature) {
//addBands是针对每个要素进行一年统计的函数
var single_feature_single_year = function(year, feat){
//地物类别数量
var totalClass = 9;
//选择年份
year = ee.Number(year).toInt()
var actual_year = ee.Number(1989).add(year)
//选择指定年份的波段
dataset = ee.Image(CLCDCol.toList(32).get(ee.Number(year)))
//调用上面的splitdataset函数,并返回带有9种地物image的collection
nd = splitdataset(dataset);
//将待统计的矢量要素转为feature
feat = ee.Feature(feat);
//循环地物类别,统计每种地物面积
for(var a=0; a<totalClass; a++){
var showList = nd.filterMetadata('val', 'equals', a+1).map(function(img){
return img.clip(feat);
})
var combineVal = showList.toBands().reduceRegion({
reducer: ee.Reducer.sum(),
geometry: feature.geometry(),
scale: 30
});
//特定的波段的名称拼接
var cls = ee.String(ee.Number(a)).cat(ee.String("_b1"));
//统计特定地物的面积,getNumber函数的作用是获取字典中该属性的value
var area = ee.Number(combineVal.getNumber(cls).multiply(900));
//待会导出表的名称
var name = ee.String(ee.Number(actual_year)).cat(ee.String("_Class_")).cat(ee.Number(a+1))
//1Cropland、2Forest、3Shrub、4Grassland、5Water、6Sonw/Ice、7Barren、8Impervious、9Wetland
if ((a+1)===1){ var name_1 = name;var area_1 = area;}
if ((a+1)===2){ var name_2 = name;var area_2 = area;}
if ((a+1)===3){ var name_3 = name;var area_3 = area;}
if ((a+1)===4){ var name_4 = name;var area_4 = area;}
if ((a+1)===5){ var name_5 = name;var area_5 = area;}
if ((a+1)===6){ var name_6 = name;var area_6 = area;}
if ((a+1)===7){ var name_7 = name;var area_7 = area;}
if ((a+1)===8){ var name_8 = name;var area_8 = area;}
if ((a+1)===9){ var name_9 = name;var area_9 = area;}
}
//将属性值添加到矢量feat中
return feat.set(name_1, area_1, name_2, area_2, name_3, area_3, name_4, area_4, name_5, area_5,
name_6, area_6, name_7, area_7, name_8, area_8, name_9, area_9)
};
//newfeat是通过一个迭代,针对每个要素进行多年统计
var newfeat = ee.Feature(list.iterate(single_feature_single_year, feature));
return newfeat;
};
//针对多个要素进行多年统计
var result = table.map(single_feature_static);
print(result)
//导出统计结果数据
Export.table.toDrive({
collection: result,
description:'landcover_statics'
});
得出数据后,大家就可以去计算分析啦。
完整代码
/*****************************************************************
函数作用:计算长时间序列的多个要素的土地覆盖面积信息
公众号:在小岛学gis的穆
使用方法:将研究区域替换为读者的研究区域
参考公众号:GEEStudyRoom、锐多宝的地理空间
数据集:WHU——CLCD
The first way to upload the LULC dataset in China using each image
from the Folder
Note: the first is for the year 1985
and the remaining is from 1990 to 2020
*****************************************************************/
//定义将一年影像按照类别拆分为9个单波段的image
var splitdataset = function(img){
//只有值相同的像素点才保留,并将添加一个波段的属性val,val的值为类别
//1Cropland、2Forest、3Shrub、4Grassland、5Water、6Sonw/Ice、7Barren、8Impervious、9Wetland
var class1 = img.eq(1).selfMask().set('val', 1);
var class2 = img.eq(2).selfMask().set('val', 2);
var class3 = img.eq(3).selfMask().set('val', 3);
var class4 = img.eq(4).selfMask().set('val', 4);
var class5 = img.eq(5).selfMask().set('val', 5);
var class6 = img.eq(6).selfMask().set('val', 6);
var class7 = img.eq(7).selfMask().set('val', 7);
var class8 = img.eq(8).selfMask().set('val', 8);
var class9 = img.eq(9).selfMask().set('val', 9);
//返回一个collection
return ee.ImageCollection.fromImages([
class1, class2, class3, class4, class5, class6, class7, class8, class9]);
};
var srcFolder = 'users/GEEStudyRoom/LULC_Dataset/LULC_HuangXin/';
var imgList = ee.List([]);
var feat = ee.Feature(table);
for(var year = 1990; year<=2020;year++){
var tmpImg = ee.Image(srcFolder+'CLCD_v01_'+year);
//加载逐年土地覆盖影像
Map.addLayer(tmpImg.selfMask().randomVisualizer().clip(table), null, 'landcover'+year);
//export
Export.image.toDrive({
image: tmpImg.selfMask().clip(table),
scale: 30,
region:table,
description:'landcover'+year
});
//调用上面的splitdataset函数,并返回带有9种地物image的collection
}
//初始化变量
var dataset
var feat
var year
var nd
var CLCDCol = ee.ImageCollection("users/GEEStudyRoom/CLCDImageCollection");
print(CLCDCol)
var list = ee.List.sequence(0, 31);
//是针对每个要素进行多年统计的函数
var single_feature_static = function(feature) {
//addBands是针对每个要素进行一年统计的函数
var single_feature_single_year = function(year, feat){
//地物类别数量
var totalClass = 9;
//选择年份
year = ee.Number(year).toInt()
var actual_year = ee.Number(1989).add(year)
//选择指定年份的波段
dataset = ee.Image(CLCDCol.toList(32).get(ee.Number(year)))
//调用上面的splitdataset函数,并返回带有9种地物image的collection
nd = splitdataset(dataset);
//将待统计的矢量要素转为feature
feat = ee.Feature(feat);
//循环地物类别,统计每种地物面积
for(var a=0; a<totalClass; a++){
var showList = nd.filterMetadata('val', 'equals', a+1).map(function(img){
return img.clip(feat);
})
var combineVal = showList.toBands().reduceRegion({
reducer: ee.Reducer.sum(),
geometry: feature.geometry(),
scale: 30
});
//特定的波段的名称拼接
var cls = ee.String(ee.Number(a)).cat(ee.String("_b1"));
//统计特定地物的面积,getNumber函数的作用是获取字典中该属性的value
var area = ee.Number(combineVal.getNumber(cls).multiply(900));
//待会导出表的名称
var name = ee.String(ee.Number(actual_year)).cat(ee.String("_Class_")).cat(ee.Number(a+1))
//1Cropland、2Forest、3Shrub、4Grassland、5Water、6Sonw/Ice、7Barren、8Impervious、9Wetland
if ((a+1)===1){ var name_1 = name;var area_1 = area;}
if ((a+1)===2){ var name_2 = name;var area_2 = area;}
if ((a+1)===3){ var name_3 = name;var area_3 = area;}
if ((a+1)===4){ var name_4 = name;var area_4 = area;}
if ((a+1)===5){ var name_5 = name;var area_5 = area;}
if ((a+1)===6){ var name_6 = name;var area_6 = area;}
if ((a+1)===7){ var name_7 = name;var area_7 = area;}
if ((a+1)===8){ var name_8 = name;var area_8 = area;}
if ((a+1)===9){ var name_9 = name;var area_9 = area;}
}
//将属性值添加到矢量feat中
return feat.set(name_1, area_1, name_2, area_2, name_3, area_3, name_4, area_4, name_5, area_5,
name_6, area_6, name_7, area_7, name_8, area_8, name_9, area_9)
};
//newfeat是通过一个迭代,针对每个要素进行多年统计
var newfeat = ee.Feature(list.iterate(single_feature_single_year, feature));
return newfeat;
};
//针对多个要素进行多年统计
var result = table.map(single_feature_static);
print(result)
//导出统计结果数据
Export.table.toDrive({
collection: result,
description:'landcover_statics'
});
//代码链接
https://code.earthengine.google.com/765215314940a2309707ab129e4536b5?noload=true
END
8、9月份直播课程推荐
网络直播+助学群辅助+导师面对面实践工作交流
(点击课程标题了解课程详情)
免费直播
1、生态环境影响评价及其技术规范专题课程直播时间:8月20日 晚:19:30-21:302、边坡稳定分析-有限元强度拆减法【虚拟粘塑性算法与初应力法的实现】免费讲座直播时间:8月19日 晚:19:30-21:302
最新、最热视频课
全套课件+长期视频反复观看+案例数据代码+随行导师群
(点击课程标题了解课程详情)
SEE MORE →
农林生态、遥感类视频课程推荐(即买即看,点击文字查看课程内容) | |
---|---|
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | 基于MAXENT模型的生物多样性生境模拟与保护优先区甄选、自然保护区布局优化及未来气候变化情景下自然保护区优化评估中的实践技术应用及论文写作技巧高级进阶视频 |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | 基于ArcGIS农业面源污染模拟案例分享视频课程 |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | CASA(Carnegie-Ames-Stanford Approach) 模型原理及实践技术视频课程 |
33 | Noah-MP陆面过程模型建模方法与站点、区域模拟实践技术应用精品课程 |
34 | CLM 陆面过程模式实践技术应用精品课程 |
35 | 土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测技术应用专题课程 |
36 | MATLAB在生态环境数据处理与分析中的应用专题视频课程 |
37 | 城市/农村用地适宜性评价视频课程 |
38 | 合成孔径雷达干涉测量InSAR数据处理、地形三维重建、形变信息提取、监测等实践技术应用视频课程 |
39 | |
40 | 近地面无人机植被定量遥感与生理参数反演实践技术应用进阶视频课程 |
41 | |
42 | |
43 | |
视频教程+课件资料及数据代码+导师随行辅导 联系课程专员,最高享受7.5折优惠 |
土壤、地下水、地质类视频课程推荐(即买即看,点击文字查看课程内容) | |
---|---|
1 | |
2 | |
3 | |
4 | |
5 | 地下水环评(一级)实践技术Modflow地下水数值模拟精品视频课程 |
6 | 水文地球化学模拟 PHREEQC 实践技术应用高级视频课程 |
7 | 三维地质建模数据处理高级实践技术应用视频课程 |
8 | 基于Surfer与Voxler数据处理及可视化实践技术应用精品视频课程 |
9 | 全套环境土壤物理Hydrus1D2D3D模型实践技术应用精品课程 |
10 | 环境土壤物理hydrus2d 3d模型实践应用视频课程 |
11 | 全流程地下水环境影响评价方法及关键技术与化工、工业园区、固废堆积、矿山等 实际项目应用精品视频课程 |
视频教程+课件资料及数据代码+导师随行辅导 联系课程专员,最高享受7.5折优惠 |
大气科学类视频课程推荐(即买即看,点击文字查看课程内容) | |
---|---|
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | 地球科学数据(ERA5、雪深、积雪覆盖、海温、植被指数、土地利用)处理实践课程 |
21 | Python在气象与海洋中的实践技术应用精品课程 |
22 | |
23 | 分子动力学LAMMPS模拟实战技术应用精品课程 |
视频教程+课件资料及数据代码+导师随行辅导 联系课程专员,最高享受7.5折优惠 |
语言类视频课程推荐(即买即看,点击文字查看课程内容) | |
---|---|
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | R 语言数据统计分析与 ggplot2 高级绘图实践应用精品视频课程 |
27 | 基于R语言的现代线性回归实践技术方法精品课程 |
28 | 基于R语言的分位数回归实践技术高级应用精品课程 |
29 | 基于R语言的现代贝叶斯统计学方法实践技术应用 |
30 | 基于MATLAB深度学习与实践技术应用 |
视频教程+课件资料及数据代码+导师随行辅导 联系课程专员,最高享受7.5折优惠 |
水文类视频课程推荐(即买即看,点击文字查看课程内容) | |
---|---|
1 | |
2 | |
3 | |
4 | 涉河建设项目防洪评价报告编制技术精品课程 |
5 | |
6 | |
7 | “R 语言+遥感”的水环境综合评价方法实战应用视频课程 |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | 基于DEM的水文分析专题视频课程 |
14 | |
15 | |
16 | |
17 | ArcGIS在水土流失模拟及分析中的实践技术应用精品视频课程 |
18 | 基于遥感与GIS在滑坡、泥石流风险普查中的实践技术应用精品课程 |
19 | 新《生产建设项目水土保持方案技术审查要点》要求下水土保持方案编高级实践技术应用视频课程 |
20 | 实战案例精讲课程!水土保持方案编制实操与典型案例解析视频课程 |
视频教程+课件资料及数据代码+导师随行辅导 联系课程专员,最高享受7.5折优惠 |
生物信息类视频课程推荐(即买即看,点击文字查看课程内容) | |
---|---|
1 | python 生物信息多组学大数据深度挖掘与论文整理技巧视频课程 |
2 | R 语言生物信息学大数据分析与绘图技术视频课程 |
3 | 基因家族分析及SCI写作技巧实践技术应用精品课程 |
4 | 如何利用 shell 进行上万个基因组的批量分析视频课 |
视频教程+课件资料及数据代码+导师随行辅导 联系课程专员,最高享受7.5折优惠 |
添加小编微信,海量数据、视频教程免费获取
3
海量数据免费获取
(点击数据标题,直接进入)
SEE MORE →
10、【数据分享】中国2000-2010年NPP数据集11、【数据分享】2015年30m土地覆盖数据
12、【数据分享】中国100万植被类型空间分布数据13、【数据分享】更新!31个省级统计年鉴合集(12省更新至2020) 免费下载!14、【数据分享】1982年-2015年全球逐年长时序动态土地覆盖数据产品(GLASS-GLC)15、【数据分享】全网最全!34个省(市、自治区)2001-2020年统计年鉴(免费)16、好资料-百篇高光谱领域的论文,已经帮您整理收集完了,快放进自己文件夹中!!17、【数据分享】中国自然地理分区数据集(包含农业自然、农业熟制、九大农业区划,九大流域片、八大森林工程、生态功能保护区等数据)18、【数据分享】1979-2020年长时间序列遥感降水数据19、【数据分享】碳排放数据地方清单excel表格,分省、市、县(区)免费获取20、【数据资源】最新最全!市级国土空间总体规划制图规范GIS符号库(2021新版
气数据
4、【数据分享】中国九大流域矢量数据及2019版最新流域水系(免费下载)
5、【数据分享】全国电子地图SHP数据快来领取啦!(包括道路、水系、银行、绿地、高速出入口、医疗机构、餐饮、超市等信息。)
6、【数据分享】分省份水系数据7、【数据分享】2000~2019 年中国各省、市、区县分年、分月、逐日平均降水量数据8、【数据分享】6G超大超级详细矢量数据,来源于国内某地图导航基底数据
4、【数据分享】289个城市教育与卫生常有指标面板数据(1996-2020)
部分数据展示,关注Ai尚研修技术平台公众号,更多数据资源轻松下载!
超级会员专享
声明: 本号旨在传播、传递、交流,对相关文章内容观点保持中立态度。涉及内容如有侵权或其他问题,请与本号联系,第一时间做出撤回。
END
Ai尚研修丨专注科研领域
技术推广,人才招聘推荐,科研活动服务
科研技术云导师,Easy Scientific Research