我有一个等大小多边形的网格 shapefile,如下所示
library(tidyverse)
library(raster)
dat <- structure(list(ID = 758432:758443,
lat = c(24.875, 24.875, 24.625, 24.625, 24.875, 24.875, 24.625, 24.625, 24.375, 24.375, 24.125, 24.125),
lon = c(72.875, 72.625, 72.625, 72.875, 72.375, 72.125, 72.125, 72.375, 72.375, 72.125, 72.125, 72.375)),
class = "data.frame", row.names = c(NA, -12L))
dat_rast <- rasterFromXYZ(dat[, c('lon', 'lat', 'ID')], crs = '+proj=longlat +datum=WGS84 +no_defs')
dat_poly <- rasterToPolygons(dat_rast, fun=NULL, na.rm=TRUE, dissolve=FALSE)
我想在谷歌地球引擎中处理 NASA_NEX-GDDP 数据
https://developers.google.com/earth-engine/datasets/catalog/NASA_NEX-GDDP
该数据有 3 个变量:pr、tasmin 和 tasmax,分辨率为 0.25 弧度,涵盖 1950 年 1 月 1 日至 2099 年 12 月 31 日期间
对于 中的每个多边形dat_poly,我想计算平均每日 pr、tasmin 和 tasmax
到目前为止,我可以在代码编辑器中使用以下方法对单个 lat long 和单个变量执行此操作
var startDate = ee.Date('1950-01-01');
var endDate = ee.Date('2099-12-31');
// select the variable to be processed: pr, tasmin, tasmax
var dataset = ee.ImageCollection('NASA/NEX-GDDP')
.filter(ee.Filter.date(startDate,endDate));
var maximumAirTemperature = dataset.select('tasmax');
// get projection information
var proj = maximumAirTemperature.first().projection();
// the lat lon for which I want to extract the data
var point = ee.Geometry.Point([72.875, 24.875]);
// calculate number of days to map and extract data for
var n = endDate.difference(startDate,'day').subtract(1);
var timeseries = ee.FeatureCollection(
ee.List.sequence(0,n).map(function(i){
var t1 = startDate.advance(i,'day');
var t2 = t1.advance(1,'day');
var feature = ee.Feature(point);
var dailyColl = maximumAirTemperature.filterDate(t1, t2);
var dailyImg = dailyColl.toBands();
// rename bands to handle different names by date
var bands = dailyImg.bandNames();
var renamed = bands.map(function(b){
var split = ee.String(b).split('_');
return ee.String(split.get(0)).cat('_').cat(ee.String(split.get(1)));
});
// extract the data for the day and add time information
var dict = dailyImg.rename(renamed).reduceRegion({
reducer: ee.Reducer.mean(),
geometry: point,
scale: proj.nominalScale()
}).combine(
ee.Dictionary({'system:time_start':t1.millis(),'isodate':t1.format('YYYY-MM-dd')})
);
return ee.Feature(point,dict);
})
);
Map.addLayer(point);
Map.centerObject(point,6);
// export feature collection to CSV
Export.table.toDrive({
collection: timeseries,
description: 'my_file',
fileFormat: 'CSV',
});
我如何计算给定时间段内每个多边形的平均每日 pr、tasmin 和 tasmax,而不是提取给定的 lat lon my_poly?




