Google Earth Engine(GEE)——centroid is not a function 错误

举报
此星光明 发表于 2022/07/09 10:37:44 2022/07/09
【摘要】 ​粉丝问题:有人可以指导我如何从 GEE 中的 shapefile 中提取质心吗?我正在尝试根据 shp 的质心过滤集合。但是在这样做时,我收到一个错误,说质心不是一个函数。相同的链接是: https://code.earthengine.google.com/37e4b4a1d90d8926c25eb0fa9fd28d18​编辑Line 5: ddn.centroid is not a f...


粉丝问题:有人可以指导我如何从 GEE 中的 shapefile 中提取质心吗?


我正在尝试根据 shp 的质心过滤集合。但是在这样做时,我收到一个错误,说质心不是一个函数。相同的链接是: https://code.earthengine.google.com/37e4b4a1d90d8926c25eb0fa9fd28d18

编辑

Line 5: ddn.centroid is not a function 

如果我不使用质心,我只能获得与 shapefile 的一小部分相交的最少云层图像。我希望最大限度地覆盖我的 shapefile。对于那个质心是我采取的方法。如果有其他方法请提供。

一般出现这种情况,我们就会使用function,然后返回给feature,再用map就可以:

centroid(maxError, proj)
返回一个包含几何体最高维度分量中心的点的特征。低维分量会被忽略,所以一个包含两个多边形、三条线和一个点的几何体的中心点等同于一个只包含两个多边形的几何体的中心点。

参数。
this:feature(元素)。
计算此特征的默认几何体的中心点。

maxError(ErrorMargin,默认:null)。
在执行任何必要的重投影时容忍的最大误差量。

proj(投影,默认为空)。
如果指定,结果将是这个投影。否则将是WGS84。

返回。特征


代码:

var tvm = 
    /* color: #ffc82d */
    /* shown: false */
    ee.Geometry.Polygon(
        [[[76.83700475105641, 8.831092710558801],
          [77.01830277818209, 8.54869226928518],
          [77.28750117514574, 8.513377157503017],
          [77.23805725090234, 8.83109304549011]]]),
    che = /* color: #00ffff */ee.Geometry.Polygon(
        [[[80.30571541793834, 13.31586560486261],
          [79.94583005352419, 13.26774018580212],
          [80.22055128120672, 12.98146799581078]]]),
    beng = /* color: #bf04c2 */ee.Geometry.Polygon(
        [[[77.33693658033529, 13.09622943555793],
          [77.59511529127279, 12.914252626887269],
          [77.90822564283529, 13.048072108331855],
          [77.75441704908529, 13.224602861022483],
          [77.47426568189779, 13.245991880348049]]]),
    table = ee.FeatureCollection("users/bqt2000204051/Beijing");

var geo= table.map(function(feature){
  return feature.centroid();
})//.geometry();)
print(geo)
// Import the Landsat 8 TOA image collection.
var imgArr;
var geoArr = [tvm,beng,che];
var geoArrstr = ['tvm','beng','che'];
var shp = ee.ImageCollection('LANDSAT/LC08/C01/T1_TOA').filterBounds(geo).sort('CLOUD_COVER').first();
Map.centerObject(shp)
Map.addLayer(shp, {max: 0.2, bands: ['B4','B3','B2']}, "shapefile");



// NOT NEEDED

var l81 = ee.ImageCollection('LANDSAT/LC08/C01/T1_TOA').filterBounds(tvm.centroid()).sort('CLOUD_COVER').first();
var l82 = ee.ImageCollection('LANDSAT/LC08/C01/T1_TOA').filterBounds(beng.centroid()).sort('CLOUD_COVER').first();
var l83 = ee.ImageCollection('LANDSAT/LC08/C01/T1_TOA').filterBounds(che.centroid()).sort('CLOUD_COVER').first();


  



var imgArr = [l81, l82, l83];
var bands = ['B5','B4','B3','B2']
var ndviParams = {max: 0.2, bands: ['B5','B4','B3']};

var addNDVI = function(image) {
  var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI');
  return image.addBands(ndvi);
};

for(var i = 0; i < 3; i++){
  var image = imgArr[i].select(bands);
  var loc = geoArr[i];
  var withNDVI = addNDVI(image);
  var result = withNDVI.clip(loc);
  print(result)
  Map.addLayer(result, ndviParams, "ndviImage");
  
  var imageid = image.getInfo().id;
  var index = imageid.indexOf('/');
  var imageName = imageid.substr(0, index);
  var locName = geoArrstr[i];
  var bandName = 'OLI-B5-B4';
  var imageDate = image.getInfo().properties['DATE_ACQUIRED']
  
  var visName = locName+"_"+imageName+"_"+bandName+"_"+imageDate;
  
  var visualization = result.visualize({
  bands: ['B5', 'B4', 'B3'],
  max: 0.4
});

  Map.addLayer(visualization, {}, "ndviImagevis");


// // Exporting image to Drive
  Export.image.toDrive({
    image: visualization,
    description: visName,
    folder:'gdrive_folder',
    fileNamePrefix:visName,
    scale: 60,
  });
}

// //////////////////////////////////////////////////



结果:

原有table:

 加入后的质心数据


 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。