Road Networks Are Execution Models, Not Stored Geometry

On semantics, projection, and the architectural difference between stored geometry and executable movement constraints

Road Networks Are Execution Models, Not Stored Geometry
Photo by Denys Nevozhai / Unsplash

When working with geographic systems over time, a particular habit becomes visible. Road networks are imported, normalized, indexed, and eventually discussed in terms of storage and retrieval. The conversation centers around schemas, spatial indices, memory layout, and graph representations. The network becomes something that is stored and accessed.

This way of thinking is natural. Many traditional software systems revolve around data structures. We persist them, transform them, query them, and optimize them. Once a road network has been transformed into nodes and edges, it appears to fit comfortably into that familiar category.

The difficulty begins when the network is no longer observed, but executed.

From Geometry to Movement

Geometry alone does not define a road network in practice. Coordinates and connectivity describe space, but they do not yet describe movement. The moment a system must determine whether a vehicle may traverse an edge, whether a restriction applies at a specific transition, or whether a segment behaves differently depending on context, geometry becomes only one part of the equation.

A road network encodes constraints, permissions, hierarchies, and contextual rules. These rules are not decorative annotations attached to edges. They shape how movement is allowed to occur. They define which paths are legal, which are optimal, and which are prohibited.

This is where the concept of a dataset becomes insufficient. A dataset suggests passivity. It suggests something that can be inspected and queried. A road network used for execution behaves differently. It participates in decision-making.

To make this distinction tangible, consider a small fragment of OpenStreetMap data in its editorial form:

# Way
id: 12345
tags:
  highway: residential
  motor_vehicle: delivery
nodes:
  - 100
  - 101
  - 102

# Node
id: 101
tags:
  barrier: bollard

In this representation, geometry and semantics coexist, but they are not yet resolved into executable meaning. The tags describe intent. They do not yet define a decision.

The projection layer transforms editorial OSM into an execution artifact

The editorial structure expresses meaning in a flexible way. The projection layer makes that meaning explicit and operational. Only in the execution artifact does direction, access state, and constraint become structurally defined.

# Directed Edge 1
from: 100
to: 101
access_state: delivery_only
barrier: false

# Directed Edge 2
from: 101
to: 102
access_state: prohibited
barrier: bollard

The representation of delivery_only in a production system is rarely a string comparison at runtime. In a deterministic projection layer, it might instead be encoded as a compact bitmask or access profile identifier resolved during import:

#[derive(Clone, Copy)]
pub struct Edge {
    pub from: u64,
    pub to: u64,
    pub access_mask: u8,
    pub barrier: bool,
}

const PUBLIC: u8    = 0b0001;
const DELIVERY: u8  = 0b0010;
const EMERGENCY: u8 = 0b0100;

let edge_1 = Edge {
    from: 100,
    to: 101,
    access_mask: DELIVERY,
    barrier: false,
};

let edge_2 = Edge {
    from: 101,
    to: 102,
    access_mask: 0,
    barrier: true,
};

Conditional rules are flattened during projection into time-bounded state transitions or indexed constraint tables:

// time_window pulled from OSM conditional tags/opening_hours during projection

fn effective_access(edge: &Edge, current_hour: u8) -> AccessMask {
    match edge.time_window {
        Some(window) if window.contains(&current_hour) => edge.access_mask,
        Some(_) => AccessMask::NONE,
        None => edge.access_mask,
    }
}

The crucial difference is not the syntax, but the timing. The decision structure is computed once during projection, not reconstructed repeatedly during traversal. What was previously descriptive has now become executable. The system no longer interprets raw tags at runtime. It traverses a model whose semantics have already been resolved.

The Emergence of Runtime Interpretation

If the network is treated purely as stored information, decision logic tends to migrate into runtime evaluation. Access restrictions are interpreted directly from tags and conditional rules are reconstructed when needed. Restrictions encoded in editorial form are translated repeatedly during execution.

These systems often work well at first because they compute routes and estimate travel times. Under moderate load, they appear stable. But over time, interpretation costs add up. Reasoning about edge behavior becomes tangled with reconstructing semantics.

What was once a clean separation between structure and logic begins to blur. The network is no longer an explicit execution model. It is an interpreted artifact.

This shift does not usually produce dramatic failures. Instead, it produces gradual complexity. Edge cases become harder to explain. Tail latency becomes sensitive to contextual branching. Architectural clarity erodes quietly.

Snap behavior illustrates the same structural distinction.

Classic unbounded snap — the source of tail latency in dense areas

In dense areas, the number of candidate edges can vary widely. Evaluating access semantics only after collecting candidates introduces variability into the hot path.

A projected model changes the structure:

Deterministic snap pipeline (projection layer pre-filters and precomputes access)

Here, constraints are structural. Candidate expansion is bounded. Access decisions are no longer interpretive but encoded.

In one production system where this shift from interpretation to projection was applied, the change did not alter the graph size or the database engine. It altered only where semantics were resolved. The 99.9th percentile routing latency dropped from 180 ms to 11 ms under identical traffic, and tail variance flattened almost completely. The topology did not change. The projection layer did.

Read-Only Artifacts and the Question of Static Behavior

It is important to distinguish between treating a network as a dataset and deliberately creating a read-only execution artifact.

High-performance systems often materialize projected graphs, precompute access states, and transform editorial structures into deterministic edge representations. These artifacts are static in the operational sense: they do not change during query execution. They are optimized for predictability.

The static artifact is a response to the dynamic nature of movement constraints. It stabilizes semantics into something executable. What is static is the representation, not the conceptual model it encodes.

Confusion arises when these two levels are conflated. A read-only projection is an architectural decision that clarifies semantics. Treating the original network as a passive dataset often postpones that clarification.

Designing the Network as an Execution Model

The decisive step is not the import of geometry, but the projection of semantics.

A road network becomes operationally robust when its constraints are modeled explicitly. Access rules are resolved into decision-ready states. Turn restrictions are translated into directed transitions and snap logic operates within defined structural bounds rather than open-ended interpretation.

A complex OSM turn restriction, such as a 'no left turn' relation involving multiple ways, is not stored as a relation lookup during execution. In a projected execution model, it becomes an explicit transition constraint:

transition(from_edge_id, to_edge_id) = DISALLOWED

The result: traversal becomes a table lookup, not a relation interpretation. Execution becomes traversal of a well-defined model rather than repeated reconstruction of meaning. The difference may not be visible initially. It becomes visible over time in how easily behavior can be reasoned about, in performance stability, and in architectural clarity.

A road network for execution is deliberately shaped into a structure that expresses and stabilizes movement semantics. Recognizing this distinction changes how the system is designed from the beginning.

Conclusion

The question is not whether road networks can be stored efficiently. They can. The question is whether they are treated as passive data or as executable structures.

When semantics remain implicit, systems compensate at runtime. When semantics are projected deliberately, execution becomes predictable.

The difference does not lie in database technology or hardware capacity. It lies in whether the network is understood as geometry to be queried or as a decision space to be made operational.

That distinction, once recognized, forces a decision. Either the network remains a descriptive artifact and interpretation becomes a permanent runtime cost, or semantics are projected deliberately and execution becomes structurally stable. The architecture will reflect that choice, whether you make it consciously or it makes itself at 3 a.m. when the 99.9th percentile starts screaming.

Cheers!

Subscribe to Rico Fritzsche

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe