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 (2^{4}) 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?