Wiki › Messages › MAP, the intersection geometry message: lanes, nodes, connections and signal groups

Updated 2026-10-09

What it is and who sends it

A MAP message (ASN.1 type MapData, DSRCmsgID 18) describes the geometry of an intersection or a road segment: where each lane is, which direction it carries, what maneuvers it allows, which lanes it connects to across the intersection, and which signal group governs each connection. It is static data, prepared once by the agency or its integrator from survey or aerial imagery, stored on the RSU and repeated at 1 Hz. Vehicles match their position to a lane in the MAP, follow the lane's connectsTo to a signalGroup, and read that group's state in the SPaT. Without a correct MAP a SPaT is meaningless, which is why the CTI 4501 guide spends most of its pages on MAP rules.

When it is broadcast

PropertyValue
Rate1 Hz (CTI 4501); never faster than needed, because a MAP can be several hundred bytes
PSID0xE0000017 (p-encoded E0000017)
ChannelSame C-V2X channel as everything else
SigningSigned with the RSU application certificate that holds PSID 0xE0000017
SourceAgency file → RSU store-and-repeat table (rsuMsgRepeatTable) via NTCIP 1218; the portal's push does exactly this
Size200 to 1,400 bytes; a MAP must fit in one frame, so large intersections are trimmed or split into layers

Structure, section by section

Top level: MapData

FieldMeaningUnits and rangeTypical valueWhere it comes from
timeStampMinute of the year the file was generatedoptional403200authoring tool
msgIssueRevisionEdition of the whole message; increment on any changeMsgCount 0 … 1273authoring tool
layerType, layerIDWhat kind of layer (intersectionData, roadwaySectionData, …) and its numberoptionalintersectionData, 1authoring tool
intersectionsOne or more IntersectionGeometrylist 1 … 32
roadSegmentsRoad-segment geometry (curves, lane-level TIM support)optional
restrictionListNamed user classes (RestrictionClassID) for lane restrictionsoptional

IntersectionGeometry

FieldMeaningUnits and rangeTypical valueWhere it comes from
idregion and id, the same pair the SPaT uses0 … 65535 eachregion 0, id 1201agency numbering
revisionEdition of this intersection; the SPaT's revision must match0 … 1273authoring tool
refPointReference position: lat, long (1/10 microdegree), elevation (0.1 m); CTI 4501 places it at the center of the intersection388823000, −771757000, 1050survey
laneWidthDefault lane widthcm350survey
speedLimitsRegulatory speed limits: type (vehicleMaxSpeed, truckMaxSpeed, maxSpeedInSchoolZone…) and speed (0.02 m/s)optionalagency
laneSetEvery lane: vehicle lanes, crosswalks, bike lanes, sidewalks, medians, tracked-vehicle laneslist 1 … 255survey
preemptPriorityDataWhich signal groups serve preemption or priorityoptionalcontroller configuration
roadAuthorityIDRoad authority OID, new in 2024optionalagency

GenericLane

FieldMeaningUnits and rangeTypical value
laneIDUnique within the intersection; 0 is reserved1 … 2551
nameLabel such as "EB Broad St ingress"optional
ingressApproach, egressApproachApproach number this lane belongs to; ingress lanes lead toward the intersection, egress lanes away1 … 151
laneAttributes.directionalUse2-bit LaneDirection: 10 ingress, 01 egress, 11 both (crosswalks)10
laneAttributes.sharedWith10-bit LaneSharing: bus, taxi, pedestrians, cyclists, tracked vehicles…0000000000
laneAttributes.laneTypeCHOICE: vehicle (8-bit), crosswalk (16-bit), bikeLane, sidewalk, median, striping, trackedVehicle, parking{"vehicle": "00000000"}
maneuvers12-bit AllowedManeuvers: straight (0), left (1), right (2), U-turn (3), left on red (4), right on red (5), lane change (6), no stopping (7), yield always (8), go with halt (9), caution (10)100000000000
nodeListCHOICE of nodes (2 … 63 explicit nodes) or computed (a lane offset from a reference lane)
connectsToDownstream connections, each with connectingLane.lane, optional maneuver, signalGroup, userClass, connectionIDoptional
overlaysOther lanes that share this pavementoptional

Nodes and offsets

Each node is {"delta": {"node-XYn": {"x": …, "y": …}}} plus an optional attributes set. Offsets are in centimeters, +x east and +y north. The first node is relative to refPoint; every later node is relative to the previous node. The encoding is chosen per node from node-XY1 (±5.11 m) through node-XY6 (±327.67 m), or node-LatLon for an absolute position. Smaller encodings save bits, which matters when a MAP approaches the frame limit.

CTI 4501 rules that the map builder enforces and that you should check by hand on any MAP you receive:

  • The first node of an ingress lane is at the stop line, and nodes proceed upstream, away from the intersection. The first node of an egress lane is at the point where vehicles leave the intersection, and nodes proceed downstream.
  • Nodes mark changes in geometry; a straight lane needs only two. Spacing should keep the polyline within about a meter of the true lane center.
  • Lane widths that differ from the intersection default are given with dWidth in a node's attributes; dElevation carries grade changes.
  • Node attributes such as stopLine, mergePoint, divergePoint and closedToTraffic, and segment attributes such as curbOnRight, transitStopInLane and bikeBoxInFront, carry extra meaning for vehicles that look for them.
  • Every ingress vehicle lane at a signalized approach must have at least one connectsTo with a signalGroup, and every signal group used must exist in the SPaT.
  • Crosswalks are lanes with directionalUse 11, laneType.crosswalk, sharedWith pedestrians, two nodes spanning the roadway, and a connectsTo to themselves carrying the pedestrian signal group.

Connections and signal groups

A connectsTo entry says "from this lane you may go to lane N, with this maneuver, under signal group G". A through lane normally has one connection; a shared through-and-right lane has two, which may carry different signal groups if the right turn has its own arrow. Permissive left turns under a green ball share the through movement's signal group; a protected left turn arrow has its own. The signalGroup numbers are an agency choice, but the convention CTI 4501 recommends is to reuse the NEMA phase number (2 for eastbound through, 6 westbound, 4 and 8 for the cross street, odd numbers for lefts) so that technicians can read a MAP against a controller's phase diagram. MAP to SPaT works through a complete example.

How to create one in this portal

The fast way is the map builder: place the reference point, draw each lane from the stop line outward, set its direction, type and maneuvers, draw the crosswalks, then click an ingress lane and an egress lane to create a connection and type the signal group. The builder computes offsets, chooses encodings, validates against the 2024 schema and shows the result on the same map. Save the project to return to it later, download the JSON and hex, or Push to my RSU.

By hand in the creator: load the MAP template (four vehicle lanes and two crosswalks at Broad St & West St, Falls Church, VA), change refPoint, id.id and revision, then edit each lane's nodes. The ? help on a node shows the running absolute position so you can check it against a map. Encode; the hex begins 0012; the map tab draws every lane and connection, with ingress and egress colored differently and crosswalks dashed.

After any change, increment both msgIssueRevision and the intersection revision, and update the SPaT generator so its revision matches. CTI 4501 and most OBUs treat a mismatch as "no valid MAP".

How to read a decoded one

  • Geometry on the map. Lanes should lie on the pavement. A lane that is mirrored, rotated or offset by a block usually has x and y swapped, a sign error, or a first node measured from the wrong reference point.
  • Node encodings. A node whose offset exceeds the chosen node-XYn range fails to decode or decodes as garbage; the portal's encoder rejects it.
  • Connections. Each ingress lane should connect to a lane with directionalUse 01 on the far side; check that the signalGroup numbers are the set your SPaT sends.
  • Lane direction bits. 10 is ingress, 01 is egress. Reversed bits are the most common hand-authoring error.
  • Size. Over about 1,400 bytes the MAP will not fit a single frame with its security envelope.
  • Revision. Compare revision to the SPaT's and to the controller's configuration sheet.

Common mistakes: laneID 0; two lanes with the same laneID; nodes listed from the far end toward the stop line; a crosswalk with only one direction bit; maneuvers strings of the wrong length; a speedLimits value typed in mph instead of 0.02 m/s.

What controllers and RSUs need

The controller does not read the MAP. It only needs its SPaT generator configured with the same intersection ID, revision and signal group numbering. The RSU needs the UPER bytes in its store-and-repeat table with PSID 0xE0000017, a 1,000 ms interval, the channel, a delivery window and rsuMsgRepeatEnable set; the NTCIP 1218 push guide describes each object. Keep the source JSON under version control with the survey it was built from; an agency with fifty intersections will revise MAPs for years.