gee大津算法修改时遇到的geometry和超时问题

我参照了一位博主利用Landsat影像使用大津算法提取水体阈值的代码,想改出来一个在自己的感兴趣区利用modis数据提取水体阈值的代码,但是修改时出现了geometry未绑定、保存图像超时的问题。以下是解决办法:

先贴上原代码帖子:GEE之基于大津算法OTSU的MNDWI水体提取_lvbta的博客-CSDN博客_gee 提取水体GEE学习专栏(文章后附源码)效果图源码部分提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档GEE之基于大津算法OTSU的MNDWI水体提取效果图源码部分本文是在武汉市梁子湖地区基于大津算法OTSU自动阈值分割对哨兵2号和陆地卫星8号进行了水体提取。从结果来看,哨兵2号提取结果更加精细,究其原因,哨兵2号和陆地卫星8号之间差异主要在于空间分辨率,哨兵2号空间https://blog.csdn.net/qq_48104689/article/details/118228061

错误一:

 Number (Error)  Image.reduceRegion:Provide 'geometry' parameter when aggretating over an unbounded image.(Image.reduceRegion这里出错了,当在一个未绑定的图像上聚合时,要提供'geometry'参数。)

改正方法:把与reduceRegion有关的代码里自定义的geometry参数都改成自己上传的矢量区域变量。例如:原博的一处代码为:

//Landsat water extraction based on otsu
var histogram = MNDWI_Landsat.reduceRegion({
    reducer: ee.Reducer.histogram(), 
    geometry: MNDWI_Landsat.geometry(), 
    scale: 30,
    maxPixels: 1e13,
    tileScale: 8
  });
————————————————
版权声明:本文为CSDN博主「lvbta」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_48104689/article/details/118228061

 我要改成:

var histogram = NDWI_MODIS.reduceRegion({
    reducer: ee.Reducer.histogram(), 
    geometry: table, 
    scale: 30,
    maxPixels: 1e13,
    tileScale: 8
  });

当然,并不是只改这一段就可以了,而是把所有有关Landsat的信息都改成与 MODIS相对应的信息。 不过我现在也没弄懂为啥第三行不能改成geometry:NDWI_MODIS.geometry(),我的NDWI_MODIS图像是用矢量裁剪后的clip图像计算出来的,按理说NDWI_MODIS.geometry()也是可以的呀......但事实证明这样也会有上面的报错。

错误二:

  Error: Computation timed out.(计算超时)

在计算水域图像时,要等很长时间也算不出来,下载water1影像时也下载不下来,后来突然看到scale,就明白问题出现在哪了。scale是分辨率的意思,原博是基于Landsat的代码,scale分辨率是30m,而我使用的是MOD09A1,分辨率是500,所以要把所有scale都改成500,修改后的那段代码为:

var histogram = NDWI_MODIS.reduceRegion({
    reducer: ee.Reducer.histogram(), 
    geometry: table, 
    scale: 500,
    maxPixels: 1e13,
    tileScale: 8
  });

同样,不能只改这一段代码哦,要把所有scale都改成500m。

你可能感兴趣的:(gee,学习)