Bitgate weights are an efficient way to represent modes, or methods of traversal, in a network. They are used for more advanced applications - most applications have no need for them. The most common example where bitgate weights are used is in electrical networks for displaying different phase designations for network edges using A,B, C or any combination of phases.
Edges in a network are often multi-modal, meaning they can support many different combinations of modes. In the above example of four transportation modes, there are 16 possible combinations (24) of modes, and it is this combinatorial nature of modes that makes bitgates useful. A developer writing a solver can use bitmasks and binary operators to perform filtering on a bitgate weight. Bitgate weights also make efficient use of storage; weights needing a range of 0 through 15 need only 4 bits as opposed to 16 bits for a short integer. This may be a consideration only for very large networks.
The example below demonstrates how to work with a geometric network that models electric phases. The geometric network contains a 3-bit bitgate weight to model the three electric phases (A, B, and C). Each phase is represented by one of the three bits: Phase A = 4 (third bit) Phase B = 2 (second bit) Phase C = 1 (first bit) Each permissible numerical value must be entered in the weight filter range. For example:
For tracing on Phase AB (either state of the C phase is acceptable), the weight filter range will be '6, 7, 0.' Six represents the state of 'A AND B AND Not C,' while 7 represents the state of 'A AND B AND C.' Zero indicates that tracing is allowed on features that don't have an associated feature attribute for this bitgate weight; for example, orphan junctions.
For tracing on Phase A (either state of the B and C phases is acceptable), the weight filter range will be '4, 5, 6, 7, 0.'
Feedback on this topic?