当前位置:   article > 正文

GEE案例:根据点位提取栅格值(acrgis的多值提取到点)_gee 根据点的位置读取反射率

gee 根据点的位置读取反射率

1. 案例目标

GEE中实现提取特定点位的栅格值,这一功能有很大的用途,通常为地面站点或者地面采样点的位置,从特定的产品集中提取数据。例如:多光谱反射率,气象参数,植被指数等等。也介绍了像元二分模型计算植被盖度FVC的方法。(max:95%, min:5%)

下面是具体的思路解释,代码也有详细的注释,有点懒没有对代码拆分进行介绍。

  1. 首先导入研究区的ROI和研究区域的点矢量。
    因为是完整的代码,定义参数的时候把需要改的单独列出来了,可以将变量代入具体的数据集进行更改。
  2. 根据自己的需求完善配色盘,也可以自己定义。
  3. 制作数据集,案例提取了MODIS的7光谱,NDVI,EVI,LAI,FVC并将所有数据整合到一块。(Figure 1)
    3.1. 使用的是均值mean的植被指数
    3.2. 数据均需要乘以0.0001是因为存储数据的时候需要节省空间,使用的都是整数型。我们需要从数据集查询scale factor是多少,然后乘以这个scale
    3.3 遥感影像,需要使用质量控制波段去云,代码中有去云函数
    3.4 计算FVC的代码也贴了上去,使用的是像元二分模型计算的FVC。马里兰的GLASS数据集应该有近40年的FVC产品,可能准确些吧!
  4. 提取值到点
    4.1 使用的是sampleRegions,具体含义可以在Docs查询。简要说明: collection是点矢量,properties是需要导出的属性(点矢量可能属性挺多),scale是提取点的时候检索的栅格的范围大小,对应数据集的栅格大小,landast就改为30,sentinel-2就是10
    4.2 reduceRegions貌似也可以,但是我不会
  5. 将结果下载到Google Drive
    Figure 1.
    在这里插入图片描述

在这里插入图片描述

2. 完整案例

该案例以欧亚大陆为ROI,进行部分点数据集的提取

//配色盘,可以自行定义,用于图层色阶的展示
var palettes = require('users/gena/packages:palettes');
var palette = palettes.misc.cubehelix[7];    
      
//  定义了函数,这部分是批量化的时候需要改变的参数
var roi = region
var output_name = 'export result'   
var point = samples
var start_time = '2018-07-15'
var end_time = '2018-08-15'      
var features = ['Sample_ID','Latitude','Longitude','NDVI','EVI','LAI',
              'b1','b2','b3','b4','b5','b6','b7', 'FVC']
      
/***************************************************************
1.定义样本点(经纬度信息)
***************************************************************/
// var roi = region
// var point = sample
Map.centerObject(point,4) 
Map.addLayer(point,{color:'red'},'sample_point')
print(point)

/***************************************************************
2.制作数据集,从GEE中提取需要的产品集。(以MODIS为例进行介绍)
***************************************************************/
// 2.1 选择MODIS的植被指数产品——VIs
// var start_time = '2020-7-01'
// var end_time = '2020-08-31'
var collection_mod1 = ee.ImageCollection("MODIS/061/MOD13A2")
                  .filterBounds(roi)
                   .filterDate(start_time, end_time);
//select feature (NDVI,EVI)
var VIs = collection_mod1.select(["NDVI","EVI"]);
// 计算真实的数据值
var multiply = function(image){ 
              // multply image  
              var img = image.multiply(0.0001);  
              return img.clip(roi)
              };
VIs = VIs.map(multiply).mean();
// 加载图层看一下
Map.addLayer(VIs.select('NDVI'), {min:0, max:1, palette:palette}, 'NDVI');//.select('NDVI')

// 2.2提取MODIS的光谱数据___各波段的SR
function rmCloud(image) {    // MODIS remove cloud 
  var qa = image.select('StateQA');
  var cloudBitMask = 1 << 0-1;
  var cirrusBitMask = 1 << 2;
  var cirrusBitMask1 = 1 << 8-9;
  var cirrusBitMask2 = 1 << 10;
  var cirrusBitMask3 = 1 << 12;
  var cirrusBitMask4 = 1 << 15;
  var mask = qa.bitwiseAnd(cloudBitMask).eq(0)
               .and(qa.bitwiseAnd(cirrusBitMask).eq(0))
               .and(qa.bitwiseAnd(cirrusBitMask1).eq(0))
               .and(qa.bitwiseAnd(cirrusBitMask2).eq(0))
               .and(qa.bitwiseAnd(cirrusBitMask3).eq(0))
               .and(qa.bitwiseAnd(cirrusBitMask4).eq(0));
  return image.updateMask(mask);
}    
var SR_Col = ee.ImageCollection('MODIS/006/MOD09A1')            
                .filterBounds(roi)
                .filterDate(start_time, end_time)
                .map(rmCloud)
                .select(['sur_refl_b01','sur_refl_b02','sur_refl_b03','sur_refl_b04','sur_refl_b05','sur_refl_b06','sur_refl_b07'],
                        ['b1','b2','b3','b4','b5','b6','b7',])
var SR_Col = SR_Col.map(multiply).mean()
// print(SR_Col, 'SR_Col')
Map.addLayer(SR_Col.select('b7'), {min:0, max:1, palette:palette}, 'B7');//.select('b7')

// 2.3MODIS的叶面积指数___LAI
var LAI_Col = ee.ImageCollection("MODIS/006/MCD15A3H")
            .filterBounds(roi)
            .filterDate(start_time, end_time)
            .select('Lai')
var LAI = LAI_Col.mean().clip(roi).multiply(0.1).rename('LAI')
// print(LAI, 'LAI')
Map.addLayer(LAI, {min:0, max:1, palette:palette}, 'LAI');

// 2.4计算植被盖度_____FVC
function calFVC(BestVI,region,scale){
    var num = BestVI.reduceRegion({
      reducer:ee.Reducer.percentile([5,95]),
      geometry:region,
      scale:scale,
      maxPixels:1e13
    });
    print(num)
    var min = ee.Number(num.get("NDVI_p5"));
    var max = ee.Number(num.get("NDVI_p95"));
    //print(top_min);
    //print(top_max);
    var greaterPart = BestVI.gt(max);
    var lessPart    = BestVI.lt(min);
    var middlePart  =ee.Image(1).subtract(greaterPart).subtract(lessPart);
    //calculate FVC
    var tempf1=BestVI.subtract(min).divide(max.subtract(min));
    var FVC=ee.Image(1).multiply(greaterPart).add(ee.Image(0).multiply(lessPart))
                      .add(tempf1.multiply(middlePart))
    return FVC.rename('FVC');
}

var FVC = calFVC(VIs.select('NDVI'),roi,1000)
print(FVC,'FVC')
Map.addLayer(FVC, {min:0, max:1, palette:palette}, 'FVC');

// 2.将第一部分提取的数据整合到一块,构建一个数据集
var Datesets = VIs.addBands([LAI, SR_Col, FVC])
// var Datesets = VIs.addBands(SR_Col)
print(Datesets,'Datasets')

/***************************************************************
3. 值提取到点
能实现这个功能的有很多函数,介绍下sampleRegions()
***************************************************************/
// extract feature_
var samples_datesets=Datesets.sampleRegions({
  collection:point,
  // properties:["Sample_ID","Longitude","Latitude"],
  scale:1000
})
print('result_extract', samples_datesets)

/***************************************************************
4.将数据转为列表导出结果
***************************************************************/
//export 
Export.table.toDrive({
  collection:samples_datesets,
  description: output_name,
  folder:'Height_datasets(Spectra)',
  selectors: features
})   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/310921
推荐阅读
相关标签
  

闽ICP备14008679号