GEE 根据遥感产品生成时序降雨等值线并批量下载

16 篇文章 0 订阅

GEE 根据遥感产品生成时序降雨等值线并批量下载

var china = ee.FeatureCollection("users/milletzheng/Public/china"),
var yellowriver=ee.FeatureCollection("users/milletzheng/yellowRiver/YellowRiver");
var yearsList= ee.List.sequence(1981,2021,1)

yearsList.evaluate(function(indexs){
  for (var i=0;i<indexs.length;i++){
      var startDate = ee.String.encodeJSON(indexs[i]).cat('-01-01')
      var endDate=ee.String.encodeJSON(indexs[i]).cat('-12-31')
      var sum_image = FilterImageByDate(startDate,endDate)
      var Contourlines = ee.ImageCollection(getCountour(sum_image)).mosaic();
      var Vector=RasterToVector(Contourlines.toInt(),china)
      exportToVector(Vector,indexs[i],indexs[i],"Lan")
  }
})
//查找影像
function FilterImageByDate(startDate,endDate){
      var ERA5images = ee.ImageCollection("ECMWF/ERA5_LAND/MONTHLY_BY_HOUR").filterDate(startDate,endDate)
                      .filterBounds(china).select('total_precipitation')
      var sum_image = ERA5images.sum().clip(china).multiply(1000)
      return sum_image
}

// 生成等值线
function getCountour (sum_image){
  var lines = ee.List.sequence(0, 800, 200);//创建一个从0 到 800,间隔200的列表
  var contourlines = lines.map(function(line) {
  var mycontour = sum_image
      .convolve(ee.Kernel.gaussian(5, 3))
      .subtract(ee.Image.constant(line)).zeroCrossing() 
      .multiply(ee.Image.constant(line)).toFloat();
    
  return mycontour.mask(mycontour);
  })
  return contourlines
}
//栅格转矢量
function RasterToVector(bounds,Geometry){
  var vectors = bounds.selfMask().reduceToVectors({
  reducer: ee.Reducer.countEvery(),
  geometry: Geometry,
  // 将比例设置为给定的最大可能
  // 计算所需的精度。
  scale: 10000,//这里你可以尝试分辨率设置小一些,发现计算时间会陡增
  });
  return vectors
}
// 导出矢量
function exportToVector(Geometry,TaskName,shpfilename,folderfile){
  Export.table.toDrive({
  collection:ee.FeatureCollection(Geometry),
  description:TaskName, //Task name
  fileNamePrefix: shpfilename, //SHP name
  fileFormat: "SHP", 
  folder: folderfile //folder name
  })
}

执行上述代码之后,采用批量下载js代码,大致就是获取页面RUN元素节点,执行click事件。
步骤:通过F12,将下列代码在console中执行即可,有时候元素节点class_name会变,注意修改。

function runTaskList() {
    var runButtons = document.querySelector('#task-pane').shadowRoot.querySelectorAll(".run-button")
    runButtons.forEach(function(e) {e.click()})
}
runTaskList()
setTimeout( 
    function(){
      var taskDialog = document.querySelectorAll("ee-image-config-dialog") //table的话-image-改成-table-
        taskDialog.forEach(function(e) {e.shadowRoot.querySelector("ee-dialog").shadowRoot.querySelector("paper-dialog").querySelector(".ok-button").click()})
},5 * 1000 );
1981-2021年的年降雨量等值线按照0-800mm,每间隔200mm的等值线就批量处理生成下载好了。

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值