GEE相关介绍: GEE(Google earth engine)是由谷歌推出的地理信息数据处理以及可视化的综合平台。对于科研人员来说有以下几个优点:
- 免费
- 免费
- 将PB级卫星图像和地理空间数据集与行星尺度分析功能相结合,可轻松的进行全球层面的分析与出图
- 面对的对象是科研人员,并非专业的程序员,相对来说比较简单,不需要配置复杂的环境,只需要掌握一些基本的js知识以及gee的api即可
- 处理大型图像速度比较快,能够快速分析,具有较好的展示效果
- 需要科学上网
- 下载数据比较麻烦
文章图片
GEE数据仓库
如果有自己的数据可以上传到Google drive 或者GEE上的Assets,之后再进行导入即可。本次就以如何使用GEE免费数据,筛选并下载的代码为例进行分享。
以Landsat8表面反射率影像为例,
文章图片
连接到GEE code页面以后,你将得到以下界面,这个将是我们主要的工作阵地:
文章图片
其代码如下:
//定义存储的google drive文件位置
var dir_name = "test";
//定义区域范围
var geometry = ee.Geometry.Rectangle(115, 38, 117, 40);
function maskL8sr(image) {
// 第3位和第5位分别是云影和云。
var cloudShadowBitMask = (1 << 3);
var cloudsBitMask = (1 << 5);
// 获取QA值
var qa = image.select('pixel_qa');
// 两种值都应该为零,才能保证成像清晰
var mask = qa.bitwiseAnd(cloudShadowBitMask).eq(0)
.and(qa.bitwiseAnd(cloudsBitMask).eq(0));
return image.updateMask(mask);
}var dataset = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR')//导入数据集
.filterDate('2016-01-01', '2016-12-31')//筛选特定时间的数据
.map(maskL8sr)//筛选云量多的数据
.filterBounds(geometry);
//按区域筛选数据var img = dataset.mosaic().clip(geometry);
//镶嵌图像集中的图片并将其按照区域裁剪
var bandNameList = img.bandNames();
//获取波段名称
print(bandNameList);
var bandName = ["B1", "B2", "B3", "B4","B5","B6", "B7","B8","B9","B10","B11"];
//定义要下载的波段//循环下载各个波段的数据
for (var num in bandName){
var bn = bandName[num];
var download_img = img.select(bn);
download(download_img, bn);
}
//定义下载函数
function download(img,file_name){
Export.image.toDrive({
image: img,//导出的图片对象
description: file_name,//文件描述
fileNamePrefix: file_name,//文件名称
folder: dir_name,//目标文件位置
scale: 30,//图像分辨率
region: geometry,//图像范围(可能会裁剪,但并未尝试)
maxPixels: 1e13,//最大像素值
crs: "EPSG:4326"//参考坐标
});
}
//展示参数
var visParams = {
bands: ['B4', 'B3', 'B2'],//合成需要的波段
min: 0,//像素最小值
max: 3000,//像素最大值
gamma: 1.4,//伽马系数
};
Map.centerObject(geometry, 8);
//设置图像中心以及缩放等级
Map.addLayer(dataset.median(), visParams);
//将数据集的中值作为展示图
点击run执行代码之后,tasks就会有下载任务出现,点击run即可将图片传输到google drive,之后就可以下载啦
文章图片
【GEE(google earth engine)学习交流1】上面的的区域数据是我在地图上随便画的一个区域,如果想要某地区的数据,可以上传某个区域的边界矢量数据,将上传的矢量数据替换掉我画的geometry即可。