Good evening,
today I'll tried to set up my first attribute rule in my very first Utility Network but I never worked with Arcade before so I had problems doing so.
My topic is glassfiber so I tried to set up a rule for my adresses which have a field called main provider. There are 4 different main providers atm. I wanna count the amount of adresses with the same main provider and if there are more than 25 adresses on one i would like to get a error message. Is someone able to help me? Or someone knows how to imrpove in Arcade fast...with a free course or so. The only thing I found is how to count the amount of points in a shapfile but I would like to keep it attribute based.
Kind Regards from Germany
Fynn Scharpen 🙂
Solved! Go to Solution.
For what you want to do, this would be a starting point:
// load all addresses
var addresses = FeatureSetByName($datastore, "AddressTableName", ["MainProvider"], false)
// filter the addresses for the main provider of the active feature
var provider = $feature.MainProvider
var filtered_addresses = Filter(addresses, "MainProvider = @provider")
// count and return error message
if(Count(filtered_addresses) > 25) {
return {"errorMessage": "A provider can't supply more than 25 addresses!"}
}
// if we land here, the provider has <= 25 addresses
// rest of your code
For getting started:
Getting Started | ArcGIS Arcade | ArcGIS Developer
Your Arcade Questions Answered (esri.com)
Attribute Rules in Arcade (From Scratch) - Demo Th... - Esri Community
Introduction to Attribute Rules
Useful documentation (I have this bookmarked):
Function Reference | ArcGIS Arcade | ArcGIS Developer
Code examples:
Some videos:
Attribute Rules Videos - Esri Community
And of course the Attribute Rules - Esri Community for asking all of your questions about Attribute Rules.
Sadly, there's no group for general Arcade yet; the jury is out on whether to post those in the ArcGIS Pro group or the AGOL group...
For what you want to do, this would be a starting point:
// load all addresses
var addresses = FeatureSetByName($datastore, "AddressTableName", ["MainProvider"], false)
// filter the addresses for the main provider of the active feature
var provider = $feature.MainProvider
var filtered_addresses = Filter(addresses, "MainProvider = @provider")
// count and return error message
if(Count(filtered_addresses) > 25) {
return {"errorMessage": "A provider can't supply more than 25 addresses!"}
}
// if we land here, the provider has <= 25 addresses
// rest of your code