编程 | 22秒带你看完密云水库2015年-2021年水体变化

1.背景介绍

在北京的朋友可能感觉到了,北京貌似整个夏天一直在下雨。偶然间我看到这样的一个新闻:

编程 | 22秒带你看完密云水库2015年-2021年水体变化

这就激起了我的兴趣了,我想用遥感看看这几年密云水库是如何变化的。

2.工具与数据

工具:Google Earth Engine

数据:Sentinel-2 MSI Level 1C

时间:2015年9月—2021年9月

3.研究方法

编程 | 22秒带你看完密云水库2015年-2021年水体变化

4.方法实现

数据筛选:

//时间
var startDate = ee.Date('2015-9-1'); 
var endDate = ee.Date('2021-9-30'); 
//筛选
var sentinelcollection = SENTINEL
                  .filterDate(startDate, endDate)//时间过滤
                  .filterBounds(roi)//位置过滤
                  .filterMetadata("MGRS_TILE", "equals", "50TMK")//条带号过滤
                  .filter(ee.Filter.lte('CLOUDY_PIXEL_PERCENTAGE',5))//云量过滤

格式转换

//待筛选的波段
var bands = ['B3','B4','B8']
//数据格式转换
sentinelcollection = sentinelcollection.map(function(image){
      //影像像素深度转为Unit8
      image=image.add(32768).divide(65536).multiply(255).uint8()
      //波段重命名
      image=image.select(['B3', 'B4', 'B8'],['B8', 'B4', 'B3'])
      return image.select(bands)
    })

影像拉伸

//影像拉伸
var sentinelcollection2 = sentinelcollection.map(function(image){
      image=(image.subtract(120)).divide(40).multiply(255)
      return image.uint8()
    })

导出视频

// 导出视频
Export.video.toDrive({
  collection: sentinelcollection2,
  description: 'water',
  dimensions: 720,
  framesPerSecond: 3,//帧率
  region: roi,
})

完整代码:

//批量处理函数
Map.centerObject(roi, 11)
//时间
var startDate = ee.Date('2015-9-1'); 
var endDate = ee.Date('2021-9-30'); 
//筛选
var sentinelcollection = SENTINEL
                  .filterDate(startDate, endDate)//时间过滤
                  .filterBounds(roi)//位置过滤
                  .filterMetadata("MGRS_TILE", "equals", "50TMK")//条带号过滤
                  .filter(ee.Filter.lte('CLOUDY_PIXEL_PERCENTAGE',5))//云量过滤
//待筛选的波段
var bands = ['B3','B4','B8']
//数据格式转换
sentinelcollection = sentinelcollection.map(function(image){
      //影像像素深度转为Unit8
      image=image.add(32768).divide(65536).multiply(255).uint8()
      //波段重命名
      image=image.select(['B3', 'B4', 'B8'],['B8', 'B4', 'B3'])
      return image.select(bands)
    })
//影像拉伸
var sentinelcollection2 = sentinelcollection.map(function(image){
      image=(image.subtract(120)).divide(40).multiply(255)
      return image.uint8()
    })
​
Map.addLayer(sentinelcollection.first())
Map.addLayer(sentinelcollection2.first())
// 导出视频
Export.video.toDrive({
  collection: sentinelcollection2,
  description: 'water',
  dimensions: 720,
  framesPerSecond: 3,//帧率
  region: roi,
})

链接:
完整代码链接:
https://code.earthengine.google.com/5993bea8a031d03ad353d38a36c7dc07

打开链接,直接在Google earth中运行。如果你需要换成其他区域,该代码只需要在筛选中去掉“条带号”的指定语句。

​5.图像对比图

编程 | 22秒带你看完密云水库2015年-2021年水体变化
2020年9月9日密云水库的水体分布图

编程 | 22秒带你看完密云水库2015年-2021年水体变化
2021年9月9日密云水库的水体分布图

上一篇:Pandas-DataFrame运算


下一篇:leetcode、mysql 197. 上升的温度