I want to create a pop-up that shows the zoning type within a polygon boundary from multiple different county zoning layers.
So far I have found a lot of examples online of using Arcade FeatureSetByName to call one layer that intersects a polygon layer. However, is there a way to access attributes in different layers that intersect the original polygon layer?
Here is the scenario, I have a polygon boundary that is national (USA) and is an ownership boundary. I have in my map 5 other layers that are not owned by me because they are county parcel/zoning layers. I want to call all 5 layers that intersect with a particular ownership polygon. So ideally when I click the ownership polygon it will show me a list of zoning codes that are within it (no matter which county I am in it will pull only the zones that intersect my original polygon layer).
Is there a way to loop through the 5 layers and their zoning attributes to display only the zone that is currently intersecting the polygon boundary I click on?
@XanderBakker I'm looking at you 😉
Probably not the most efficient way, but it gets the job done:
// define the zoning layers and their zone fields
var zoning_layers = [
FeaturesetByName($datastore, "TestPolygons", ["*"], false),
FeaturesetByName($datastore, "TestPolygons", ["*"], false),
FeaturesetByName($datastore, "TestPolygons", ["*"], false),
FeaturesetByName($datastore, "TestPolygons", ["*"], false),
]
var zoning_fields = [
"TextField",
"IntegerField",
"GlobalID",
"OBJECTID",
]
var zones = []
// loop through the layers
for(var i in zoning_layers) {
// get the first intersecting zone, abort if none found
var zone = First(Intersects(zoning_layers[i], $feature))
if(zone == null) { continue }
// append the zone's zoning field value
Push(zones, zone[zoning_fields[i]])
}
// concatenate and return
return Concatenate(zones, ", ")
Thank you Johannes,
What is the difference between $datastore and $map...? Does that address the fact that the layers are not my own?
Here is the code with the layers i am using:
//define the zoning layers and their zone fields
var zone_layers = [
FeatureSetByName($map,"Mendocino County Parcels w Ownership", ["*"], false),
FeatureSetByName($map,"Lake County Parcels w Ownership", ["*"], false),
FeatureSetByName($map,"Napa County Parcels with Ownership", ["*"], false),
FeatureSetByName($map,"Monterey County Parcels", ["*"], false),
FeatureSetByName($map,"Santa Barbara County Parcels w Ownership", ["*"], false),
FeatureSetByName($map,"Sonoma County Parcels with Ownership", ["*"], false),
]
var zone_fields = [
"BASEZONE1",
"base_zone",
"Land_Use",
"landuse",
"usectype",
]
var zones = []
// loop through the layers
for(var i in zone_layers) {
//get the first intersecting zone, abort if none found
var zone = first(intersects(zone_layers[i], $feature))
if(zone == null) {continue}
//append the zone's zone field value
Push(zones, zone[zone_fields[i]])
}
//concatenate and return
return Concatenate(zones, ", ")
Some of the fields do display such as the "Base Zones" but for a couple of the county layers the "landuse and usetype" are blank, but in the layer there is a value for those fields.
are my zone_fields list not correct?