GEE对象列表排列

在GEE中普通的List可以直接使用其自带的sort()方法排序,FeatureCollection也有自己的排序方法。对于元素是字典对象的数组如何排序,这里是一个简单的例子可以展示如何通过JavaScript实现对GEE的对象列表排序。

排序方法使用js原生的sort(...)排序方法,添加自定义的排序规则 sortByProp(…),通过这些自定义的规则可以实现对对对象列表排序,排序可以依照对象元素的多个key值。




var roi = ee.FeatureCollection('ft:1bvKTNQTx1N_iyzJGoo7tflhWMgtGzIFEOtr3mwsz');

var cdl_image = ee.Image('USDA/NASS/CDL/2014').select(0).rename('cdl');

var nlcd_image = ee.Image('USGS/NLCD/NLCD2011').select(0).rename('nlcd');



var areaStat = ee.Image.pixelArea().divide(1000 * 1000)

                .addBands(cdl_image)

                .reduceRegion({

                  reducer: ee.Reducer.sum().group(1),

                  geometry: roi,

                  scale: 30,

                  maxPixels: 2e7


                });


print('area (km2)',  areaStat);



/**

* asc 升序

* desc 降序

* item1,item2 元素

* prop 排序依据的元素以及对应的排序规则对象,

    格式:{“aa”:”asc”, “bb”:”desc”}

    规则说明:aa、bb...是排序依据的对象key,asc升序,desc降序

**/

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

  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));

});



// // 同步方法获取数据

// var arr1 = groups.getInfo();

// var aa = [];

// for(var i=0; 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));

你可能感兴趣的:(GEE对象列表排列)