欢迎光临散文网 会员登陆 & 注册

GEE提取长时间水体变化

2022-01-04 10:06 作者:我是水怪的哥  | 我要投稿

参考资料:使用google earth engine(GEE)提取2000年到2019年长江下游水体(河流、湖泊)数据_锐多宝的地理空间-CSDN博客_gee提取水体。

以下将以洛阳市内的水体提取为例,提取2000-2019年的水体面积。


第一步:upload需要提取的面积shapefile文件。

选择需要上传的文件

第二步:运行代码

贴上代码:

function get_yearly_water(year) {

    //设置需要提取的区域,由于是上传的shp文件,需要转为geometry的格式

    var luoyang_region = luoyang.geometry();

    //设置需要提取的年份

    var startDate = ee.Date.fromYMD(year, 1, 1);

    var endDate = ee.Date.fromYMD(year, 12, 31);

        //筛选JRC水体数据

    var myjrc = jrc.filterBounds(luoyang_region).filterDate(startDate, endDate);

        //在每个月份的影像中添加一个obs属性的波段,一个像素如果有数据,则为1,没有数据则为0

    myjrc = myjrc.map(function(img){

      var obs = img.gt(0);

      return img.addBands(obs.rename('obs').set('system:time_start', img.get('system:time_start')));

    });

    //在每个月份的影像中添加一个onlywater属性的波段,一个像素如果有水则为1,没有水则为0

    myjrc = myjrc.map(function(img){

      var water = img.select('water').eq(2);

      return img.addBands(water.rename('onlywater').set('system:time_start', img.get('system:time_start')));

    });

        //计算每个像素点在一年12景影像中, 有数据的次数

    var totalObs = ee.ImageCollection(myjrc.select('obs')).sum().toFloat();

        //计算每个像素点在一年12景影像中, 有水的次数

    var totalWater = ee.ImageCollection(myjrc.select('onlywater')).sum().toFloat();

        //统计每个像素点在一年中有水的比例

    var floodfreq = totalWater.divide(totalObs).multiply(100);

        //删除没有值的像素

    var myMask = floodfreq.eq(0).not();

    floodfreq = floodfreq.updateMask(myMask);

        var viz = {min:0, max:50, palette: ['blue', 'white', 'green']};

    var floodfreq1=floodfreq.clip(luoyang_region);

    var year_folder=year+"folder_gte";

        //如果某个像素一年有7个月有水,则为水体

    var gte60=floodfreq1.gte(60)

    //加载范围

    Map.addLayer(luoyang_region)

    //加载影像

    Map.addLayer(floodfreq.clip(luoyang_region),viz,year_folder)

        //导出影像

    Export.image.toDrive({

      image: gte60,

      region: luoyang_region,

      // fileDimensions:2560,

      scale: 30,

      maxPixels : 1e13,

      folder:year_folder,

      description:year_folder}); 

    //计算洛阳市水体面积

    var stats2 = gte60.reduceRegion({

      reducer: ee.Reducer.sum(),

      geometry: luoyang_region,

      scale: 30,

      maxPixels: 1E13

    });

    print(year_folder);

    print(stats2);

    }

//获取2000年到2019年水系

for(var i=0;i<20;i++){

  if (i<10){  var year='200'+i;}

  if (i>10||i==10){  var year='20'+i;}

  var yearn = parseInt(JSON.parse(year));

  get_yearly_water(yearn);

}

第三步,在google云端硬盘下载需要的影像,之后可使用arcgis打开


GEE提取长时间水体变化的评论 (共 条)

分享到微博请遵守国家法律