GEE学习计划 Day·6

跟着知乎大佬 无形的风 学GEE
大纲:异步、对象列表排序

一、异步

由于没学过Java,学这部分的时候非常懵,尤其是数据获取的同步方式和异步方式,大概理解了一下就是异步获取数据主要靠“arr.getInfo(function(arr1)”函数获取数据内容。需要尽量避免在客户端执行,尽可能在服务器端执行,以避免客户端崩溃,就在刚刚,由于我频繁的点击Console中print出来的结构,客户端直接崩了,代码还没来得及保存,引以为鉴。

二、对象列表排序

通过JavaScript实现对GEE对象列表排序,这里的排序就是每次拿出来两个比大小(冒泡),从前往后依次比,按照定义的排序方式,升序或者降序处理。

//引入roi和image,roi可以直接在地图上绘制引用
var cdl_image = ee.Image('USDA/NASS/CDL/2014').select(0).rename('cdl');

var areaStat = ee.Image.pixelArea().divide(1000*1000).addBands(cdl_image).reduceRegion({
     reducer:ee.Reducer.sum().group(1),
     geometry:roi,
     scale:30,
     maxpixels:2e7
     });
 //创建包含cdl_image的图层,包含多个对象,对象中有groups和sum两个属性
 function sortByProp(item1, item2, prop) {
 for (var o in prop) {
   if (item1[o] > item2[o]) {
       return prop[o] === "asc" ? 1 : -1;
   } else if (item1[o] < item2[o]) {
       return prop[o] === "desc" ? 1 : -1;
   }
 }
 return 0;
}
var groups = areaStat.get("groups");
// 使用异步方式获取数据
groups.getInfo(function(arr1){
 var aa = [];
 for(var i=0; i<arr1.length; i++) {
   aa.push(arr1[i]);
 }
 print("raw list is: ");
 print(aa);//未经排序的对象
 print("+++++++++++++++");
 var propOrders = {"group": "desc"};
 //定义排序方式
 // 调用js的sort排序方法
 aa.sort(
   function (a, b) {
     return sortByProp(a, b, propOrders);
   }
 );
 print("desc sort result");
 print(aa);
 // 获取数组列表的前五项
 print("select 5 data");
 print(aa.slice(0, 5));
});


详见:https://zhuanlan.zhihu.com/p/31766689

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值