我有一个过滤的十六进制网格,我想对其进行分类。
我创建了十六进制
var hexgrid = turf.hexGrid(bbox, cellWidth, units);
我汇总了价值
var aggregated = turf.collect(hexgrid, myGeoJson, 'MyValue', 'NewCol');
其中 myGeoJson 是一个多点 FeatureCollection,MyValue 是一个特征属性,要么为 null 要么 > 0
我过滤了十六进制
var hexFiltered = L.geoJson(aggregated, {
filter: function(feature, layer) {
return feature.properties.NewCol.length > 0;
}
}).addTo(map);
每个十六进制对象都可以使用
console.log(hexFiltered["_layers"]);
output = Object { 49: Object, 51: Object, 52: Object, 53: Object...
然后每个对象都有 .feature.properties.NewCol[n] 并且每个数组都有索引 (0, 1, 2) 和值 (null, 1 +)
如何用数组值的总和对每个十六进制网格进行分类?
我已经用本机 javascript 尝试过这个,但我能实现的只是一个包含每个值的字符串。
var counts = {};
for (var obj in hexFiltered["_layers"]) {
// Output the id of each obj (hex)
// console.log("Object: " + obj);
var cnt = 0;
for (var i in hexFiltered["_layers"][obj]["feature"]["properties"] ) {
// print values out as 1 line (i)
console.log("One line of values :" + hexFiltered["_layers"][obj]["feature"]["properties"][i]);
// output = One line of values :,,,1,,,,1,1,,1
// add values
cnt = cnt + hexFiltered["_layers"][obj]["feature"]["properties"][i];
console.log(cnt);
// output = 0,,,1,,,,1,1,,1
}
// attach cnt to counts object
counts += cnt;
}
我哪里错了?有没有更简单的方法?