Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 谷歌地球引擎-计算一段时间内最长干旱期的天数_Loops_Google Earth Engine - Fatal编程技术网

Loops 谷歌地球引擎-计算一段时间内最长干旱期的天数

Loops 谷歌地球引擎-计算一段时间内最长干旱期的天数,loops,google-earth-engine,Loops,Google Earth Engine,我正在尝试映射rain的最大连续天数我不认为您提供的代码离我们太远了。要跟踪干旱期,您必须使用.iterate()。我以一种稍微不同的方式尝试了一下您的应用程序,在迭代之前,我没有对数据进行分类,而是计算每天哪些像素是干燥的,并将像素干燥的累积天数结转,否则将其设置为零: // DATA var collection = ee.ImageCollection("UCSB-CHG/CHIRPS/DAILY"); // Define time range var startyear = 2000;

我正在尝试映射rain的最大连续天数我不认为您提供的代码离我们太远了。要跟踪干旱期,您必须使用
.iterate()
。我以一种稍微不同的方式尝试了一下您的应用程序,在迭代之前,我没有对数据进行分类,而是计算每天哪些像素是干燥的,并将像素干燥的累积天数结转,否则将其设置为零:

// DATA
var collection = ee.ImageCollection("UCSB-CHG/CHIRPS/DAILY");

// Define time range
var startyear = 2000;
var endyear = 2017;

var startmonth = 1;
var endmonth = 12;

// Set date in ee date format
var startdate = ee.Date.fromYMD(startyear,startmonth,1);
var enddate = ee.Date.fromYMD(endyear,endmonth,31);

// Filter data
var datain_t = collection.filterDate(startdate, enddate)
  .filter(ee.Filter.calendarRange(startmonth,endmonth, 'month'))
  .select("precipitation").map(function(img){
     return img.addBands(ee.Image.constant(0).uint8().rename('counter'));
  })
  .sort('system:time_start');

// // START 
var dataset = datain_t
.filterDate("2016-08-01","2016-08-30")
.sort('system:time_start:');
print(dataset,"dataset");

var precipThresh = 1; // mm

function drySpells(img, list){
  // get previous image
  var prev = ee.Image(ee.List(list).get(-1));
  // find areas gt precipitation threshold (gt==0, lt==1)
  var dry = img.select('precipitation').lt(precipThresh);
  // add previous day counter to today's counter
  var accum = prev.select('counter').add(dry).rename('counter');
  // create a result image for iteration
  // precip < thresh will equal the accumulation of counters
  // otherwise it will equal zero
  var out = img.select('precipitation').addBands(
        img.select('counter').where(dry.eq(1),accum)
      ).uint8();
  return ee.List(list).add(out);
}

// create first image for iteration
var first = ee.List([ee.Image(dataset.first())]);

// apply dry speall iteration function
var maxDrySpell = ee.ImageCollection.fromImages(
    dataset.iterate(drySpells,first)
).max(); // get the max value

// display results
Map.addLayer(maxDrySpell.select('counter'),{min:0,max:30,palette:'#9ecae1,#ffffff,#ffeda0,#feb24c,#f03b20'},'Max Dry Spells');
//数据
var采集=ee.图像采集(“UCSB-CHG/啁啾声/每日”);
//定义时间范围
var startyear=2000;
var年末=2017年;
var startmonth=1;
月底风险值=12;
//以ee日期格式设置日期
var startdate=ee.Date.fromYMD(startyear,startmonth,1);
var enddate=ee.Date.fromYMD(endyear,endmonth,31);
//过滤数据
var datain\u t=collection.filterDate(开始日期、结束日期)
.filter(ee.filter.calendarRange(开始月、结束月、'month'))
.选择(“降水”).地图(功能(img){
返回img.addBands(ee.Image.constant(0.uint8().rename('counter'));
})
.sort('system:time_start');
////开始
变量数据集=数据输入
.filterDate(“2016-08-01”、“2016-08-30”)
.sort('system:time_start:');
打印(数据集,“数据集”);
var precipThresh=1;//嗯
函数干拼(img,列表){
//获取以前的图像
var prev=ee.Image(ee.List(List.get(-1));
//查找区域gt降水阈值(gt==0,lt==1)
var dry=img.select(“降水量”).lt(降水量);
//将前一天计数器添加到今天的计数器
var accum=prev.select('counter')。add(dry)。rename('counter');
//为迭代创建一个结果图像
//precip
以下是代码的链接:


不要尝试运行此分析太长时间,否则地球引擎将给出错误。我希望这有帮助

我正在尝试实现用于计算timeseries上每年最长干旱期的代码。我有一些问题,下面是代码:。有什么帮助吗?你就快到了!
drySpells
功能要求图像集合中的每个图像都有一个名为“counter”的初始波段,其值为0。我刚刚在添加该波段的
datain\t
变量中添加了一个映射函数。以下是代码:。如果我还能帮忙,请告诉我!非常好用,谢谢!!!!!!!!最后一点(我希望),我需要乐队“计数器”与原来的“降水量”保持相同的刻度。现在它们不同了,如下所示:。有什么帮助吗?感谢您的持续支持。很高兴能为您提供帮助!您可以尝试,但请对照CHIRPS数据集进行检查,以确保以所需的规模完成计算。由于EE如何在内部处理投影(),EE团队可能不建议使用下一种方法,但是,当您创建计数器带()时,您将显式地设置投影,这是非常受欢迎的!如果我还能帮忙,请告诉我。
// DATA
var collection = ee.ImageCollection("UCSB-CHG/CHIRPS/DAILY");

// Define time range
var startyear = 2000;
var endyear = 2017;

var startmonth = 1;
var endmonth = 12;

// Set date in ee date format
var startdate = ee.Date.fromYMD(startyear,startmonth,1);
var enddate = ee.Date.fromYMD(endyear,endmonth,31);

// Filter data
var datain_t = collection.filterDate(startdate, enddate)
  .filter(ee.Filter.calendarRange(startmonth,endmonth, 'month'))
  .select("precipitation").map(function(img){
     return img.addBands(ee.Image.constant(0).uint8().rename('counter'));
  })
  .sort('system:time_start');

// // START 
var dataset = datain_t
.filterDate("2016-08-01","2016-08-30")
.sort('system:time_start:');
print(dataset,"dataset");

var precipThresh = 1; // mm

function drySpells(img, list){
  // get previous image
  var prev = ee.Image(ee.List(list).get(-1));
  // find areas gt precipitation threshold (gt==0, lt==1)
  var dry = img.select('precipitation').lt(precipThresh);
  // add previous day counter to today's counter
  var accum = prev.select('counter').add(dry).rename('counter');
  // create a result image for iteration
  // precip < thresh will equal the accumulation of counters
  // otherwise it will equal zero
  var out = img.select('precipitation').addBands(
        img.select('counter').where(dry.eq(1),accum)
      ).uint8();
  return ee.List(list).add(out);
}

// create first image for iteration
var first = ee.List([ee.Image(dataset.first())]);

// apply dry speall iteration function
var maxDrySpell = ee.ImageCollection.fromImages(
    dataset.iterate(drySpells,first)
).max(); // get the max value

// display results
Map.addLayer(maxDrySpell.select('counter'),{min:0,max:30,palette:'#9ecae1,#ffffff,#ffeda0,#feb24c,#f03b20'},'Max Dry Spells');