Utilize Network Analyst Parameter to Update Other Network Attribute Values

402
1
Jump to solution
01-15-2020 12:08 PM
RussellProvost1
New Contributor III

We utilize network analyst extensively to measure the performance of both our existing and planned bicycle and pedestrian networks. We use the level of traffic stress (LTS) value to modify the traversibility of a network (via a restriction) depending on a user defined LTS parameter. Part of this analysis is to measure how various connectivity metrics change over the implementation of our bikeplan according to a tiered approach (each bike recommendation is associated with a tier). We have several tiers (or scenarios) and my method to differentiate between each tier in network analyst is to have an LTS column for each scenario. The scenario LTS columns toggle between an existing LTS and Bicycle Master Plan (BMP) LTS value (each their own column). A row is assigned either the existing LTS value or BMP LTS value depending on if the row is set to "come online" in the specific tier. 

This creates the need for many columns and associated network attributes (first image). What I would love to be able to do is just have a existing LTS attribute, a BMP LTS Attribute, and an Analysis LTS attribute that would dynamically chose between the existing and BMP LTS attribute depending on the desired scenario provided by the analyst. I tried setting this up a number of ways but have failed each time with network analyst returning a "The evaluator failed to return a value" error. For example, my latest attempted solution implemented a "AnalysisTier" attribute (descriptor) which included a parameter called "ScenarioTier". The evaluator is a function that divides the actual tier in the network layer (BikePlanTier based on a field) by the user provided parameter "ScenarioTier" (second image). Values from this evalulator will be less than or equal to 1 when a bicycle master plan's future condition should be included in the analysis  (BMP_LTS value). If the value is greater than one, it should revert back to the existing LTS value. To implement this logic, I then added a "AnalysisLTS" attribute that implements the above logic via a simply VB script (third image). This "AnalysisLTS" is then used to implement the restriction depending on the user defined level of traffic stress (see below).

I am starting to thing that this dynamic nature (toggling between two network attributes) is not possible because, outside of a restriction, network attributes need to be calculated at the time of building. Is this assumption correct? Melinda Morang

Thanks,

Russ

0 Kudos
1 Solution

Accepted Solutions
MelindaMorang
Esri Regular Contributor

Script evaluators are calculated at solve time.  For this reason, they are a little slower, but they are also more flexible.

I think the problem with your script evaluator is the syntax.  I realize it's not completely straightforward how you are supposed to set these up.  Essentially, I think you need to do something like this: Edge.AttributeValueByName( "AnalysisTier" ) instead of just "AnalysisTier".

View solution in original post

0 Kudos
1 Reply
MelindaMorang
Esri Regular Contributor

Script evaluators are calculated at solve time.  For this reason, they are a little slower, but they are also more flexible.

I think the problem with your script evaluator is the syntax.  I realize it's not completely straightforward how you are supposed to set these up.  Essentially, I think you need to do something like this: Edge.AttributeValueByName( "AnalysisTier" ) instead of just "AnalysisTier".

0 Kudos