// 设置研究区 var roi = /*ee.Geometry*/(your_geometry); // 导入降水数据集 var precip = ee.ImageCollection('UCSB-CHG/CHIRPS/DAILY') .filterBounds(roi) .filterDate('2005-01-01', '2020-12-31'); // 将降水数据集转换为年数据集 var precipYearly = precip .filter(ee.Filter.calendarRange(1,12,'month')) .filter(ee.Filter.calendarRange(2005,2020,'year')) .reduce(ee.Reducer.sum()) .multiply(365) .rename('precip'); // 将数据集裁剪至研究区 var precipClipped = precipYearly.clip(roi); // 循环导出每一年的降水量数据 for (var i = 2005; i <= 2020; i++) { var year = ee.String(i).slice(2,4); var precipYear = precipClipped.filter(ee.Filter.calendarRange(i,i,'year')); Export.image.toDrive({ image: precipYear, description: 'precipitation_data_' + year, folder: 'my_folder', scale: 30, region: roi, crs: 'EPSG:4326', maxPixels: 1e13, fileFormat: 'GeoTIFF' }); }运行以上代码后,在 var year = ee.String(i).slice(2,4);行报错Line 22: Invalid argument specified for ee.String(): 2005,是什么原因?我该如何修改代码
时间: 2024-02-28 17:54:44 浏览: 93
这个错误是因为在 `ee.String()` 函数中使用了一个数值类型的参数,它只能接受字符串类型的参数。因此,你需要将 `i` 转换为字符串类型才能使用 `ee.String()` 函数。可以使用 `ee.String(i)` 来将 `i` 转换为字符串类型。修改后的代码如下所示:
```
var getNDVI = function(image) {
var date = ee.Date(image.get('system:time_start'));
var i = ee.Number.parse(date.format('YYYYMMdd'));
var year = ee.String(i.toString()).slice(2,4);
var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI_' + year);
return ndvi.set('system:time_start', date.millis());
};
// 设置研究区
var roi = /*ee.Geometry*/(your_geometry);
// 导入降水数据集
var precip = ee.ImageCollection('UCSB-CHG/CHIRPS/DAILY')
.filterBounds(roi)
.filterDate('2005-01-01', '2020-12-31');
// 将降水数据集转换为年数据集
var precipYearly = precip
.filter(ee.Filter.calendarRange(1,12,'month'))
.filter(ee.Filter.calendarRange(2005,2020,'year'))
.reduce(ee.Reducer.sum())
.multiply(365)
.rename('precip');
// 将数据集裁剪至研究区
var precipClipped = precipYearly.clip(roi);
// 循环导出每一年的降水量数据
for (var i = 2005; i <= 2020; i++) {
var year = ee.String(i.toString()).slice(2,4);
var precipYear = precipClipped.filter(ee.Filter.calendarRange(i,i,'year'));
Export.image.toDrive({
image: precipYear,
description: 'precipitation_data_' + year,
folder: 'my_folder',
scale: 30,
region: roi,
crs: 'EPSG:4326',
maxPixels: 1e13,
fileFormat: 'GeoTIFF'
});
}
```
这个修改应该可以解决这个问题。
阅读全文