Hello, I'm tyring to pull through information on habitats from habitats layer within the Site Boundary feature (as $feature) in this pop-up expression. So far it has been working fine when hard coding the Baseline_habitat_Type to match the expected values in the 'habitats layer' features, but i am now developing it to read the unique 'baseline_habitat_type's from the features that intersect and run a for loop off this, any help would be greatly appriciated as to why this is producing the result:
Result Value
Result | [ 0 - 0 ha , 1 - 0 ha ] |
Type | Array |
var habs = Intersects(
FeatureSetByName(
$map,"Habitats Layer",["Site_Code","Baseline_Broad_Habitat","Baseline_Habitat_Type","Baseline_Condition","Shape__Area"]),
$feature)
//variables
var intcount = count(habs)
var expr = ''
var areaString = ''
var outArr = []
var outArr_index = 0
//generate unique habitat types array
var ListHabs = []
var ListHabs_Index = 0
for (var hab in habs){
ListHabs[ListHabs_Index] = hab.Baseline_Habitat_Type
++ListHabs_Index
}
var UniqListHabs = distinct(ListHabs)
if (intcount > 0){
for (var UniqListHab in UniqListHabs){
var UniqListHabArea = 0
for (var hab in habs){
if (hab.Baseline_Habitat_Type == UniqListHab){
UniqListHabArea += hab.Shape_Area
}
}
outarr[outArr_index] =
UniqListHab + " - " + round(UniqListHabArea*0.0001, 2) + ' ha' + TextFormatting.NewLine
++outArr_index
}
expr = Sort(outarr)
}
else{
expr = 'No Baseline currently mapped or uploaded for ' + $feature["Site_Code"]
}
return expr
Do you want the output to be a string of the values in the expr array? If so, then just use the Concatenate function
expr = Concatenate(Sort(outarr), ", ");