GEE遍历影像中每个像元的值

目录

遍历每个像元值

求区域特殊值(max、mean、min)

(交互)获取特定像元值

参考,在此表示感谢


我的问题解决了,总感觉有点不足,

遍历每个像元值

var BH_river = table
Map.centerObject(BH_river, 5)
Map.addLayer(BH_river,null, 'river')

var collection = ee.ImageCollection('MODIS/006/MOD13Q1')
  .filterBounds(BH_river)
  .filterDate('2020-01-01', '2020-01-15')
  .select('NDVI');
  
print(collection)
//print(collection.first().projection().nominalScale())
Map.addLayer(collection.first().clip(BH_river),null, 'ndvi')

function getImgData(image){
  //image = image.reproject('EPSG:4326',null,1000)
  image = image.addBands(ee.Image.pixelLonLat())
  var roi = BH_river
 
  var data = image.reduceRegion({
    crs: 'EPSG:4326',
    reducer: ee.Reducer.toList(),
    geometry : roi,
    scale : 10000,
  })
  print(data)
  print(data.get('NDVI'))
  print(data.get('latitude'))
  print(image)
  
}

getImgData(collection.first())

求区域特殊值(max、mean、min)

//得到数字高程数据
var image = ee.Image('CGIAR/SRTM90_V4');
var poly = ee.Geometry.Rectangle([-109.05, 41, -102.05, 37]);//绘制一个矩形区域
//统计这个矩形区域高程最大值,设置分辨率Wie200
var max = image.reduceRegion({
  reducer: ee.Reducer.max(),
  geometry: poly,
  scale: 200
});
print(max);//信息显示在控制台



// 求区域的平均值,主要解决mean()后的投影分辨率的变化的问题
// var BH_river = table
// Map.centerObject(BH_river, 5)
// Map.addLayer(BH_river,null, 'river')

// var collection = ee.ImageCollection('MODIS/006/MOD13Q1')
//   .filterBounds(BH_river)
//   .filterDate('2000-01-01', '2020-12-31')
//   .select('NDVI');
//   //print(collection.first().projection().nominalScale())
//   Map.addLayer(collection.mean().clip(BH_river),null, 'ndvi')


// for(var i=2000;i<=2020;i++){
//   var img=collection.filterDate(i+'-01-01',i+'-12-31');
  
//   // reproject主要是为了确保分辨率为500
//   var img_mean=img.mean().reproject('EPSG:4326',null,500);
//   //print(img_mean.projection().nominalScale())
  
//   var mean = img_mean.reduceRegion({
//   reducer: ee.Reducer.mean(),
//   geometry: BH_river,
//   scale: 500
//   });
  
//   print(i)
//   print(mean);
// }

(交互)获取特定像元值

var l8 = ee.ImageCollection('LANDSAT/LC08/C01/T1_TOA')
    .filterDate('2014-06-01', '2015-06-01');
var ndvi = l8.map(function(image) {
  return image.select().addBands(image.normalizedDifference(['B5', 'B4']));
});

// 设置NDVI的显示颜色
var vis = {min: 0, max: 1, palette: [
  'FFFFFF', 'CE7E45', 'FCD163', '66A000', '207401',
  '056201', '004C00', '023B01', '012E01', '011301']};
Map.addLayer(ndvi, vis, 'NDVI');
//加载地图中心点位置和缩放等级
Map.setCenter(-94.84497, 39.01918, 8);

// 创建具有水平布局的检查器面板。方向是水平的
var inspector = ui.Panel({
  layout: ui.Panel.Layout.flow('horizontal')
});

// 向面板添加标签。
inspector.add(ui.Label('Click to get mean NDVI'));

// 网地图中加载这个inspector
Map.add(inspector);

// 将默认地图的光标设置为“十字准线”
Map.style().set('cursor', 'crosshair');

// 在地图上要在单击地图时调用的回调,给出返回值。
Map.onClick(function(coords) {
  // 首先,清除面板并显示加载消息。
  inspector.clear();
  inspector.style().set('shown', true);
//加载过程中显示效果和颜色
  inspector.add(ui.Label('Loading...', {color: 'gray'}));

  // 计算平均 NDVI;一个潜在的长时间运行的服务器操作。
//获取该店的经纬度计算NDVI的均值。并将均值付给nd_mean
  var point = ee.Geometry.Point(coords.lon, coords.lat);
  var temporalMean = ndvi.reduce(ee.Reducer.mean());
  var sampledPoint = temporalMean.reduceRegion(ee.Reducer.mean(), point, 30);
  var computedValue = sampledPoint.get('nd_mean');

  // 从服务器请求值并在函数中使用结果。
  computedValue.evaluate(function(result) {
    inspector.clear();

    //添加带有来自服务器的结果的标签。
    inspector.add(ui.Label({
      value: 'Mean NDVI: ' + result.toFixed(2),
      style: {stretch: 'vertical'}
    }));

    //添加一个按钮来隐藏面板。添加一个CLOSE
    inspector.add(ui.Button({
      label: 'Close',
      onClick: function() {
        inspector.style().set('shown', false);
      }
    }));
  });
});

参考,在此表示感谢

Gee获取影像每个像元的经纬度,以及把他们处理成为Numpy矩阵变量_hahaliang12的博客-CSDN博客

GEE关于像元大小或分辨率的一些问题_warCock的博客-CSDN博客

https://zhuanlan.zhihu.com/p/394568217?utm_source=qq&utm_medium=social&utm_oi=1170003987607740416

猜你喜欢

转载自blog.csdn.net/qq_41664159/article/details/120087452