Using the List Element I am taking multiple layers and out of that, I am going to count the number of reportIDs per Province to know how many monitoring visits were carried out in each province. But looks like it doesn't count properly and the province is not listed uniquely. With my very light knowledge of Arcade I can't figure it out, any help will be appreciated:
var portal = Portal('https://www.arcgis.com/');
// Group by province
// Count report IDs
var HMAFAR = GroupBy(
FeatureSetByPortalItem(portal,'56db417ebbc541bcbb6ccf9c49524cc9',0,['*'],false),
['province'],
[
{ name: 'FAR_ID', expression: 'rpt_id', statistic: 'COUNT' },
],
);
var HMAPDIA = GroupBy(
FeatureSetByPortalItem(portal,'cd991db8686d4d0b8c9a6c0e910f03ab',0,['*'],false),
['field_8'],
[
{ name: 'PDIA_ID', expression: 'field_1', statistic: 'COUNT' },
]
);
var MRE = GroupBy(
FeatureSetByPortalItem(portal,'3e63815f693a4d0888209d58ebe7fe8b',0,['*'],false),
['field_8'],
[{ name: 'MRE_ID', expression: 'field_1', statistic: 'COUNT' },
]
);
var NTS = GroupBy(
FeatureSetByPortalItem(portal,'30b595fc7ef64bb596bebcbbffb68db6',0,['*'],false),
['province'],
[
{ name: 'NTS_ID', expression: 'repid', statistic: 'COUNT' },
]
);
var FHMAML = GroupBy(
FeatureSetByPortalItem(portal,'4861c1d8d407434193a012b504b69b36',0,['*'],false),
['field_8'],
[
{ name: 'HMAML_ID', expression: 'field_1', statistic: 'COUNT' },
]
);
var HMAML = filter(FHMAML, "ml_type = 'HMA ML'");
var VA = GroupBy(
FeatureSetByPortalItem(portal,'fbaf2ac4f8bc413c8770f7aaf4e77c4d',0,['*'],false),
['province'],
[
{ name: 'VA_ID', expression: 'rpt_id', statistic: 'COUNT' },
]
);
var layersDict = {
fields: [
{ name: 'Reports_Type', type: 'esriFieldTypeString' },
{ name: 'count_of_ids', type: 'esriFieldTypeInteger' },
{ name: 'provinces', type: 'esriFieldTypeString'},
],
geometryType: '',
features: [],
};
// Loop through each of the six FeatureSets and store attributes into a combined dictionary.
var i = 0;
for (var f in HMAFAR) {
layersDict.features[i] = {
attributes: {
Reports_Type: 'HMAFAR',
count_of_ids: sum(f['FAR_ID']),
provinces: f['province'],
},
};
i++;
}
for (var p in HMAPDIA) {
layersDict.features[i] = {
attributes: {
Reports_Type: 'HMAPDIA',
count_of_ids: sum(p['PDIA_ID']),
provinces: p['field_8'],
},
};
i++;
}
for (var m in MRE) {
layersDict.features[i] = {
attributes: {
Reports_Type: 'MRE',
count_of_ids: sum(m['MRE_ID']),
provinces: m['field_8'],
},
};
i++;
}
for (var n in NTS) {
layersDict.features[i] = {
attributes: {
Reports_Type: 'NTS',
count_of_ids: sum(n['NTS_ID']),
provinces: n['province'],
},
};
i++;
}
for (var ml in HMAML) {
layersDict.features[i] = {
attributes: {
Reports_Type: 'HMAML',
count_of_ids: sum(ml['HMAML_ID']),
provinces: ml['field_8'],
},
};
i++;
}
for (var v in VA) {
layersDict.features[i] = {
attributes: {
Reports_Type: 'VA',
count_of_ids: sum(v['VA_ID']),
provinces: v['province'],
},
};
i++;
}
// Return dictionary
return FeatureSet(Text(layersDict));
Solved! Go to Solution.
You have to do a final GroupBy on layersDict to get the sum of all counts.
// do a final GroupBy to add all reports in each province
var layers_fs = FeatureSet(Text(layersDict))
return GroupBy(
layers_fs,
['provinces'],
{name: 'TotalReportCount', expression: 'count_of_ids', statistic: 'SUM'}
)
You have to do a final GroupBy on layersDict to get the sum of all counts.
// do a final GroupBy to add all reports in each province
var layers_fs = FeatureSet(Text(layersDict))
return GroupBy(
layers_fs,
['provinces'],
{name: 'TotalReportCount', expression: 'count_of_ids', statistic: 'SUM'}
)
Thank you! worked out