Before we start this discussion, all who load data into an ArcGIS Geodatabase with the intent of creating a utility Geometric Network should remember the value of the ArcGIS Topology validation and editing tools to help diagnose and resolve issues before the geometric network is built. (We’re thinking of tattoo ourselves as a gentle reminder.) There are many good examples on the web of how the topology editing tools can provide benefit.
However, we can’t define a topology and a geometric network on the same feature class(es). Thank goodness ArcFM provides us tools in the Bit Twiddler’s toolbox to diagnose invalid conditions after our network is built and we’re in the process of maintaining our system.
In this post we’ll talk about loops – those sometimes insidious little things that confound our trace results.
Here’s an example scenario. We’re using the ArcFM “Electric Next Upstream Protective Device Trace”. On clicking a primary lateral downstream from a fused tap we find the trace returns the expected results – as shown to the right. This is great and very useful.
But… what if our results aren’t like that?
What if our trace completely bypasses the fuse and goes all the way up to the substation breaker?
Of course there are a variety of diagnostic steps we can take. Is the fuse actually connected to the primary? Is the fuse feature class correctly configured? Does the fuse feature have correct phasing assigned and is the trace weight value what we would expect?
If the fuse class and fuse feature check out OK, then we have to look elsewhere. And this is where the Bit-Twiddler layers come in. When we add our Bit-Twiddler layer for looped overhead primary lines we quickly come to our “Aha!” moment – the primary line to which our fuse is attached is in a loop! Inspecting further we find that there are coincident lines. In particular a line with ObjectID 137 is present and on top of lines 134 and 136.
Thank you Bit-Twiddler layer!
Of course Bit-Twiddler layers are simply layers defined on classes that have a field with the model name FEEDERINO and include a Definition Query that interrogates the FEEDERINFO field so that only features in violation of connectivity condition are include. In this case the query that identifies loops is:
ROUND((FeederInfo/64)-0.49999999999,0) - 2 * ROUND((FeederInfo/128)-0.499999999,0) = 1
Syntax for other bit twidder layers can be found at the SE Exchange Site.