目录
在进行gee批量下载modis(NDVI)数据时,发现不同的裁剪区域(不止面积大小,还有内外边界复杂度等)对代码执行的效率极大,选择简单的区域边界可提高代码运行效率。
在google earth engine下载大文件时,由于浏览器下载限制或者网速过慢,必须采用一些其他方法。
Google Earth Engine 申请教程:
https://www.notion.so/GEE-Google-Earth-Engine-d096617828904d5dae84c24b2f5df9f1
shp上传
在Asset中上传shp时,需要上传.shp .dbf .shx (.prj) 文件,有的文件.prj不需要
数据下载代码
var province = ee.FeatureCollection("users/gis418670826/province_ALL"),
country = ee.FeatureCollection("users/gis418670826/country");
// 按区域进行裁剪
// 方法一:按(70,15)到(140,55)的矩形区域进行裁剪
//var roiChina = ee.Geometry.Rectangle(70, 15,140, 55);
// 方法二:按中国国界进行裁剪
//var roiChina = ee.FeatureCollection(country)
// 方法三:按中国省界组成国界进行裁剪
//var roiChina = ee.FeatureCollection(province);
// 方法二的改进:求包含中国国界的矩形要素
var country = ee.FeatureCollection(country).geometry()
var roiChina = country.bounds()
Map.centerObject(roiChina, 2)
Map.addLayer(roiChina)
// 设置时间范围
var timeStart = '2020-01-01'
var timeEnd = '2022-01-01'
// 选择数据
var dateSet = ee.ImageCollection('MODIS/006/MOD13A2')
.filterDate(timeStart, timeEnd);
var images = dateSet.select('NDVI');
print(dateSet)
// 查看数据中含有多少幅影像(NDVI是单波段),getInfo把object转化为number
var num = images.size().getInfo();
print(num)
// 把ImageCollection转化为List
var list = images.toList(num);
print(list);
for (var i=0; i<num; i++){
// 把List转化为Image,方便一幅一幅导入云盘
var image = ee.Image(list.get(i));
var type = image.bandNames().get(0).getInfo();
// 设置每幅影像的名称
var nameOut = ee.String(type+'_')
.cat(image.id().getInfo())
.getInfo();
print(nameOut)
// 设置输出文件夹的名称,例如NDVI_2000
var time = image.id().getInfo().substring(0, 4);
var folder = type + '_' + time;
print(folder);
// 将数据下载到Google云盘上
Export.image.toDrive({
image: image, // 要下载的影像
description: nameOut, // 下载任务描述
fileNamePrefix: nameOut, // 文件的名称
folder: folder, // 选择要下载到云盘的哪个文件夹
region: roiChina, // 裁剪区域
scale: 1000, // 分辨率,默认值是1000m
crs: 'EPSG:4326', //坐标是坐标系84
});
}
// function runTaskList() {
// var tasklist = document.getElementsByClassName('awaiting-user-config');
// for (var i = 0; i < tasklist.length; i++)
// tasklist[i].children[2].click();
// }
// function confirmAll() {
// var ok = document.getElementsByClassName('goog-buttonset-default goog-buttonset-action');
// for (var i = 0; i < ok.length; i++)
// ok[i].click();
// }
// runTaskList();
// confirmAll();
区域裁剪(裁剪对代码执行效率影响极大)
// 方法一:按(70,15)到(140,55)的矩形区域进行裁剪
var roiChina = ee.Geometry.Rectangle(70, 15,140, 55);
// 方法二:按中国国界进行裁剪
//var roiChina = ee.FeatureCollection(country)
// 方法三:按中国省界组成国界进行裁剪
//var roiChina = ee.FeatureCollection(province);
这里有三个不同的范围,
一:边界平滑的矩形: 速度最快 54.8 MB
二:中国国界 速度较快 45.2 MB
三:各省份组成的国界 速度很慢 45.2 MB 不推荐使用
凭感觉来说推荐第一种,因为第二种还是有零碎的面,第三种是真的慢
国界→矩形
我们可以使用bounds()得到完全包含中国国界的矩形区域
var country = ee.FeatureCollection(country).geometry()
var roiChina = country.bounds()
批量RUN
打开浏览器控制台(F12-Console),粘贴代码即可批量点击RUN
function runTaskList() {
var tasklist = document.getElementsByClassName('awaiting-user-config');
for (var i = 0; i < tasklist.length; i++)
tasklist[i].children[2].click();
}
function confirmAll() {
var ok = document.getElementsByClassName('goog-buttonset-default goog-buttonset-action');
for (var i = 0; i < ok.length; i++)
ok[i].click();
}
runTaskList();
confirmAll();
Google Drive下载大文件
Google Drive→MultCloud→百度网盘
MultCloud:https://www.multcloud.com/
国内可访问!!!
在云盘之间传输文件、保持两个云服务同步、在一个地方管理所有的云盘账号。
免费帐户每月获得MultCloud提供的30GB数据流量,以将文件从一个云盘传输到其他云盘。
不行就使用临时邮箱白嫖把
IDM
安装教程:https://www.bilibili.com/video/BV1uy4y1U7um?t=1
使用教程:https://zhuanlan.zhihu.com/p/143950267
注:如果是选择了多个文件之后,drive会进行自动压缩形成临时压缩包,下载的文件是没有办法进行断点续传的。
其他
https://zhuanlan.zhihu.com/p/328414025