Official GMNS Specification ¶
The GMNS specification is managed in the following Github repo: https://github.com/zephyr-data-specs/GMNS
| GMNS Version | Description |
|---|---|
| development | Not yet in official spec. Hasn’t been voted on by PMG |
| local | Local copy of spec. May not be identical to official spec. |
GMNS is defined using the Frictionless Framework as a series of tabular-data-resources.
Files in Specification ¶
GMNS consists of a package of files as defined in the following table.
The following tables are automatically generated from the official spec.
General Modeling Network Specification (GMNS) ¶
Name: gmns
Version: 0.96
Homepage: https://github.com/zephyr-data-specs/GMNS
The General Modeling Network Specification (GMNS) defines a common machine (and human) readable format for sharing routable road network files. It is designed to be used in multi-modal static and dynamic transportation planning and operations models.
Resources ¶
| Resource | Required | Path | Description |
|---|---|---|---|
link |
yes | link.csv |
A link is an edge in a network, defined by the nodes it travels from and to.… |
node |
yes | node.csv |
A list of vertices that locate points on a map.… |
geometry |
geometry.csv |
The geometry is an optional file that contains geometry information (shapepoints) for a line object.… | |
lane |
lane.csv |
The lane file allocates portions of the physical right-of-way that might be used for travel.… | |
link_tod |
link_tod.csv |
Handles day-of-week and time-of-day restrictions on links | |
location |
location.csv |
A location is a vertex that is associated with a specific location along a link.… | |
movement |
movement.csv |
Describes how inbound and outbound links connect at an intersection. | |
movement_tod |
movement_tod.csv |
Handles day-of-week and time-of-day restrictions on movements. | |
use_definition |
use_definition.csv |
The Use_Definition file defines the characteristics of each vehicle type or non-travel purpose (e.g., a shoulder or parking lane).… | |
use_group |
use_group.csv |
Defines groupings of uses, to reduce the size of the allowed_uses lists in the other tables. | |
time_set_definitions |
time_set_definitions.csv |
The time_set_definitions file is an optional representation of time-of-day and day-of-week sets to enable time restrictions through _tod files. |
|
segment |
segment.csv |
A portion of a link defined by link_id,ref_node_id, start_lr, and end_lr.… |
|
segment_lane |
segment_lane.csv |
Defines added and dropped lanes, and changes to lane parameters.… | |
signal_controller |
signal_controller.csv |
The signal controller is associated with an intersection or a cluster of intersections. | |
signal_coordination |
signal_coordination.csv |
Establishes coordination for several signal controllers, associated with a timing_plan. | |
signal_phase_mvmt |
signal_phase_mvmt.csv |
Associates Movements and pedestrian Links (e.g., crosswalks) with signal phases.… | |
signal_timing_plan |
signal_timing_plan.csv |
For signalized nodes, establishes timing plans. | |
signal_timing_phase |
signal_timing_phase.csv |
For signalized nodes, provides signal timing and establishes phases that may run concurrently. | |
signal_detector |
signal_detector.csv |
A signal detector is associated with a controller, a phase and a group of lanes. | |
segment_tod |
segment_tod.csv |
An optional file that handles day-of-week and time-of-day restrictions on segments.… | |
lane_tod |
lane_tod.csv |
An optional file that handles day-of-week and time-of-day restrictions on lanes that traverse entire links. | |
segment_lane_tod |
segment_lane_tod.csv |
An optional file that handles day-of-week and time-of-day restrictions on lanes within segments of links. | |
zone |
zone.csv |
Locates zones (travel analysis zones, parcels) on a map.… | |
config |
config.csv |
Configuration information for the dataset (units, coordinate systems, etc.). | |
curb_seg |
curb_seg.csv |
Provides a separate segment object for curbside regulations, which may change at different locations than segment-level changes to the travel lanes. |
Data Table Schemas ¶
link ¶
A link is an edge in a network, defined by the nodes it travels from and to. It may have associated geometry information. Links have three types of attributes:
- Those that define the physical location of the link (e.g., shape information, length, width)
- Those that define the link’s directionality: from_node, to_node
- Those that define properties in the direction of travel: capacity, free flow speed, number of lanes, permitted uses, grade, facility type
Primary key: link_id
| Field | Type | Constraints | Description |
|---|---|---|---|
link_id |
any | required | Primary key - could be SharedStreets Reference ID |
name |
string | Optional. Street or Path Name | |
from_node_id |
any | required | Required. Origin Node |
to_node_id |
any | required | Required. Destination Node |
directed |
boolean | required | Required. Whether the link is directed (travel only occurs from the from_node to the to_node) or undirected. |
geometry_id |
any | Optional. Foreign key (Link_Geometry table). | |
geometry |
any | Optional. Link geometry, in well-known text (WKT) format. Optionally, other formats supported by geopandas (GeoJSON, PostGIS) may be used if specified in geometry_field_format in gmns.spec.json | |
parent_link_id |
any | Optional. The parent of this link. For example,for a sidewalk, this is the adjacent road. | |
dir_flag |
integer | enum=[1, -1, 0] | Optional. 1 shapepoints go from from_node to to_node; -1 shapepoints go in the reverse direction; 0 link is undirected or no geometry information is provided. |
length |
number | min=0 | Optional. Length of the link in long_length units |
grade |
number | min=-100; max=100 | % grade, negative is downhill |
facility_type |
string | Facility type (e.g., freeway, arterial, etc.) | |
capacity |
number | min=0 | Optional. Saturation capacity (passenger car equivalents / hr / lane) |
free_speed |
number | min=0; max=200 | Optional. Free flow speed, units defined by config file |
lanes |
integer | min=0 | Optional. Number of permanent lanes (not including turn pockets) in the direction of travel open to motor vehicles. It does not include bike lanes, shoulders or parking lanes. |
bike_facility |
string | enum=[unseparated bike lane, buffered bike lane, separated bike lane, counter-flow bike lane, paved shoulder, shared lane, … (+4 more)] | Optional. Type of bike facility along the link. |
ped_facility |
string | enum=[unknown, none, shoulder, sidewalk, offstreet_path, crosswalk] | Optional. Type of pedestrian accommodation along the link |
parking |
string | enum=[unknown, none, parallel, angle, other] | Optional. Type of parking along the link. |
allowed_uses |
string | Optional. Set of allowed uses that should appear in either the use_definition or use_group tables; comma-separated. | |
toll |
number | Optional. Toll on the link, in currency units. | |
jurisdiction |
string | Optional. Owner/operator of the link. | |
row_width |
number | min=0 | Optional. Width (short_length units) of the entire right-of-way (both directions). |
Foreign keys:
from_node_id→node.node_idto_node_id→node.node_idgeometry_id→geometry.geometry_idparent_link_id→link.link_id
node ¶
A list of vertices that locate points on a map. Typically, they will represent intersections, but may also represent other points, such as a transition between divided and undivided highway. Nodes are the endpoints of a link (as opposed to the other type of vertex, location, which is used to represent points along a link)
Primary key: node_id
| Field | Type | Constraints | Description |
|---|---|---|---|
node_id |
any | required | Primary key |
name |
string | ||
x_coord |
number | required | Coordinate system specified in config file (longitude, UTM-easting etc.) |
y_coord |
number | required | Coordinate system specified in config file (latitude, UTM-northing etc.) |
z_coord |
number | Optional. Altitude in short_length units. | |
node_type |
string | Optional. What it represents (intersection, transit station, park & ride). | |
ctrl_type |
string | enum=[no_control, yield, stop, stop_2_way, stop_4_way, signal_with_RTOR, … (+1 more)] | Optional. Intersection control type. |
zone_id |
any | Optional. Could be a Transportation Analysis Zone (TAZ) or city, or census tract, or census block. | |
parent_node_id |
any | Optional. Associated node. For example, if this node is a sidewalk, a parent_nodek_id could represent the intersection it is associated with. |
Foreign keys:
zone_id→zone.zone_idparent_node_id→node.node_id
geometry ¶
The geometry is an optional file that contains geometry information (shapepoints) for a line object. It is similar to Geometries in the SharedStreets reference system. The specification also allows for geometry information to be stored directly on the link table.
Primary key: geometry_id
| Field | Type | Constraints | Description |
|---|---|---|---|
geometry_id |
any | required | Primary key - could be SharedStreets Geometry ID |
geometry |
any | Link geometry, in well-known text (WKT) format. Optionally, other formats supported by geopandas (GeoJSON, PostGIS) may be used if specified in geometry_field_format in gmns.spec.json. |
lane ¶
The lane file allocates portions of the physical right-of-way that might be used for travel. It might be a travel lane, bike lane, or a parking lane. Lanes only are included in directed links; undirected links are assumed to have no lane controls or directionality. If a lane is added, dropped, or changes properties along the link, those changes are recorded on the segment_link table. Lanes are numbered sequentially, starting at either the centerline (two-way street) or the left shoulder (one-way street or divided highway with two centerlines).
Primary key: lane_id
| Field | Type | Constraints | Description |
|---|---|---|---|
lane_id |
any | required | Primary key |
link_id |
any | required | Required. Foreign key to link table. |
lane_num |
integer | required; min=-10; max=10 | Required. e.g., -1, 1, 2 (use left-to-right numbering). By convention, the left-most through lane is 1. Left-turn lanes have negative numbers |
allowed_uses |
string | Optional. Set of allowed uses that should appear in either the use_definition or use_group tables; comma-separated. | |
r_barrier |
string | enum=[none, regulatory, physical] | Optional. Whether a barrier exists to prevent vehicles from changing lanes to the right. |
l_barrier |
string | enum=[none, regulatory, physical] | Optional. Whether a barrier exists to prevent vehicles from changing lanes to the left |
width |
number | min=0 | Optional. Width of the lane, short_length units. |
Foreign keys:
link_id→link.link_id
link_tod ¶
Handles day-of-week and time-of-day restrictions on links
Primary key: link_tod_id
| Field | Type | Constraints | Description |
|---|---|---|---|
link_tod_id |
any | required | Primary key |
link_id |
any | required | Required. Foreign key, link table |
timeday_id |
any | Conditionally required (either timeday_id or time_day). Foreign key to time_set_definitions. | |
time_day |
string | Conditionally required (either timeday_id or time_day). XXXXXXXX_HHMM_HHMM, where XXXXXXXX is a bitmap of days of the week, Sunday-Saturday, Holiday. The HHMM are the start and end times. | |
capacity |
number | min=0 | Optional.Saturation capacity (pce / hr / lane) |
free_speed |
number | min=0; max=200 | Optional. Free flow speed in long_distance units per hour |
lanes |
integer | min=0 | Optional. Number of permanent lanes (not including turn pockets) in the direction of travel open to motor vehicles. It does not include bike lanes, shoulders or parking lanes. |
bike_facility |
string | enum=[unseparated bike lane, buffered bike lane, separated bike lane, counter-flow bike lane, paved shoulder, shared lane, … (+4 more)] | Optional. Type of bike facility along the link. |
ped_facility |
string | enum=[unknown, none, shoulder, sidewalk, offstreet_path, crosswalk] | Optional. Type of pedestrian accommodation along the link |
parking |
string | enum=[unknown, none, parallel, angle, other] | Optional. Type of parking along the link. |
allowed_uses |
string | Optional. Set of allowed uses that should appear in either the use_definition or use_group tables; comma-separated. | |
toll |
number | toll in currency units. |
Foreign keys:
link_id→link.link_idtimeday_id→time_set_definitions.timeday_id
location ¶
A location is a vertex that is associated with a specific location along a link. Locations may be used to represent places where activities occur (e.g., driveways and bus stops). Its attributes are nearly the same as those for a node, except that the location includes an associated link and node, with location specified as distance along the link from the node.
Primary key: loc_id
| Field | Type | Constraints | Description |
|---|---|---|---|
loc_id |
any | required | Primary key. Location ID. |
link_id |
any | required | Required. Road Link ID. Foreign Key from Road_Link. |
ref_node_id |
any | required | Required. The From node of the link. Foreign Key from Node. |
lr |
number | required; min=0 | Required. Linear Reference of the location, measured as distance in short_length units along the link from the reference node. If link_geometry exists, it is used. Otherwise, link geometry is assumed to be a crow-fly distance from A node to B node. |
x_coord |
number | Optional. Either provided, or derived from Link, Ref_Node and LR. | |
y_coord |
number | Optional. Either provided, or derived from Link, Ref_Node and LR. | |
z_coord |
number | Optional. Altitude in short_length units. | |
loc_type |
string | Optional. What it represents (driveway, bus stop, etc.) OpenStreetMap map feature names are recommended. | |
zone_id |
any | Optional. Foreign Key, Associated zone | |
gtfs_stop_id |
string | Optional. Foreign Key to GTFS data. For bus stops and transit station entrances, provides a link to the General Transit Feed Specification. |
Foreign keys:
link_id→link.link_idref_node_id→node.node_id
movement ¶
Describes how inbound and outbound links connect at an intersection.
Primary key: mvmt_id
| Field | Type | Constraints | Description |
|---|---|---|---|
mvmt_id |
any | required | Primary key. |
node_id |
any | required | The node representing the junction. |
name |
string | Optional. | |
ib_link_id |
any | required | Inbound link id. |
start_ib_lane |
integer | Innermost lane number the movement applies to at the inbound end. | |
end_ib_lane |
integer | Outermost lane number the movement applies to at the inbound end. Blank indicates a movement with a single inbound lane. | |
ob_link_id |
any | required | Outbound link id. |
start_ob_lane |
integer | Innermost lane number the movement applies to at the outbound end. | |
end_ob_lane |
integer | Outermost lane number the movement applies to at the outbound end. Blank indicates a movement with a single outbound lane. | |
type |
string | enum=[left, right, uturn, thru, merge, diverge] | Optional. Describes the type of movement (left, right, thru, etc.). |
penalty |
number | Turn penalty (seconds) | |
capacity |
number | Saturation capacity in passenger car equivalents per hour. | |
ctrl_type |
string | enum=[no_control, yield, stop, stop_2_way, stop_4_way, signal_with_RTOR, … (+1 more)] | Optional. |
mvmt_code |
string | pattern=^[NSEW][EWB][RLT]\d?$ |
Optional. Movement code (e.g., SBL). Syntax is DDTN, where DD is the direction (e.g., SB, NB, EB, WB, NE, NW, SE, SW). T is the turning movement (e.g., R, L, T) and N is an optional turning movement number (e.g., distinguishing between bearing right and a sharp right at a 6-way intersection) |
allowed_uses |
string | Optional. Set of allowed uses that should appear in either the use_definition or use_group tables; comma-separated. | |
geometry |
any | Optional. Movement geometry, in well-known text (WKT) format. Optionally, other formats supported by geopandas (GeoJSON, PostGIS) may be used if specified in geometry_field_format in gmns.spec.json |
Foreign keys:
node_id→node.node_idib_link_id→link.link_idob_link_id→link.link_id
movement_tod ¶
Handles day-of-week and time-of-day restrictions on movements.
Primary key: mvmt_tod_id
| Field | Type | Constraints | Description |
|---|---|---|---|
mvmt_tod_id |
any | required | Primary key. |
mvmt_id |
any | required | The referenced movement. |
time_day |
string | Time of day in XXXXXXXX_HHMM_HHMM format, where XXXXXXXX is a bitmap of days of the week, Sunday-Saturday, Holiday. The HHMM are the start and end times. | |
timeday_id |
any | Time of day set. Used if times-of-day are defined on the time_set_definitions table | |
ib_link_id |
any | required | Inbound link id. |
start_ib_lane |
integer | Innermost lane number the movement applies to at the inbound end. | |
end_ib_lane |
integer | Outermost lane number the movement applies to at the inbound end. Blank indicates a movement with a single inbound lane. | |
ob_link_id |
any | required | Outbound link id. |
start_ob_lane |
integer | Innermost lane number the movement applies to at the outbound end. | |
end_ob_lane |
integer | Outermost lane number the movement applies to at the outbound end. Blank indicates a movement with a single outbound lane. | |
type |
string | enum=[left, right, uturn, thru, merge, diverge] | Optional. Describes the type of movement (left, right, thru, etc.). |
penalty |
number | Turn penalty (seconds) | |
capacity |
number | Saturation capacity in passenger car equivalents per hour. | |
ctrl_type |
string | enum=[no_control, yield, stop, stop_2_way, stop_4_way, signal_with_RTOR, … (+1 more)] | Optional. |
mvmt_code |
string | pattern=^[NSEW][EWB][RLT]\d?$ |
Optional. Movement code (e.g., SBL). Syntax is DDTN, where DD is the direction (e.g., SB, NB, EB, WB, NE, NW, SE, SW). T is the turning movement (e.g., R, L, T) and N is an optional turning movement number (e.g., distinguishing between bearing right and a sharp right at a 6-way intersection) |
allowed_uses |
string | Optional. Set of allowed uses that should appear in either the use_definition or use_group tables; comma-separated. |
Foreign keys:
mvmt_id→movement.mvmt_idtimeday_id→time_set_definitions.timeday_idib_link_id→link.link_idob_link_id→link.link_id
use_definition ¶
The Use_Definition file defines the characteristics of each vehicle type or non-travel purpose (e.g., a shoulder or parking lane). A two-way left turn lane (TWLTL) is also a use.
Primary key: use
| Field | Type | Constraints | Description |
|---|---|---|---|
use |
string | required | Primary key |
persons_per_vehicle |
number | required; min=0 | Required. |
pce |
number | required; min=0 | Required. Passenger car equivalent. |
special_conditions |
string | Optional. | |
description |
string | Optional |
use_group ¶
Defines groupings of uses, to reduce the size of the allowed_uses lists in the other tables.
Primary key: use_group
| Field | Type | Constraints | Description |
|---|---|---|---|
use_group |
string | required | Primary key. |
uses |
string | required | Comma-separated list of uses. |
description |
string | Optional. |
time_set_definitions ¶
The time_set_definitions file is an optional representation of time-of-day and day-of-week sets to enable time restrictions through _tod files.
Primary key: timeday_id
| Field | Type | Constraints | Description |
|---|---|---|---|
timeday_id |
any | required | Primary key.Primary key, similar to service_id in GTFS. Unique name of the time of day. Preferable legible rather than a number. |
monday |
boolean | required | Required. Whether Mondays are included. |
tuesday |
boolean | required | Required. Whether Tuesdays are included. |
wednesday |
boolean | required | Required. Whether Wednesdays are included. |
thursday |
boolean | required | Required. Whether Thursdays are included. |
Friday |
boolean | required | Required. Whether Fridays are included. |
saturday |
boolean | required | Required. Whether Saturdays are included. |
sunday |
boolean | required | Required. Whether Sundays are included. |
holiday |
boolean | required | Required. Whether holidays are included. |
start_time |
time | required | Required. Start time in HH:MM format. |
end_time |
time | required | Required. End time in HH:MM format. |
segment ¶
A portion of a link defined by link_id,ref_node_id, start_lr, and end_lr. Values in the segment will override they value specified in the link table. When one segment is fully contained within another, its value prevails.
Primary key: segment_id
| Field | Type | Constraints | Description |
|---|---|---|---|
segment_id |
any | required | Primary key. |
link_id |
any | required | Required. Foreign key to road_links. The link that the segment is located on. |
ref_node_id |
any | required | Required. Foreign key to node where distance is 0. |
start_lr |
number | required; min=0 | Required. Distance from ref_node_id in short_length units. |
end_lr |
number | required; min=0 | Required. Distance from ref_node_idin short_length units. |
grade |
number | min=-100; max=100 | % grade, negative is downhill |
capacity |
number | min=0 | Optional. Saturation capacity (pce/hr/ln) |
free_speed |
number | min=0; max=200 | Optional. Free flow speed, units defined by config file |
lanes |
integer | Optional. Number of lanes in the direction of travel (must be consistent with link lanes + lanes added). | |
l_lanes_added |
integer | Optional. # of lanes added on the left of the road link (negative indicates a lane drop). | |
r_lanes_added |
integer | Optional. # of lanes added on the right of the road link (negative indicates a lane drop). | |
bike_facility |
string | enum=[unseparated bike lane, buffered bike lane, separated bike lane, counter-flow bike lane, paved shoulder, shared lane, … (+4 more)] | Optional. Type of bike facility along the segment. |
ped_facility |
string | enum=[unknown, none, shoulder, sidewalk, offstreet_path, crosswalk] | Optional. Type of pedestrian accommodation along the segment |
parking |
string | enum=[unknown, none, parallel, angle, other] | Optional. Type of parking along the segment. |
allowed_uses |
string | Optional. Set of allowed uses that should appear in either the use_definition or use_group tables; comma-separated. | |
toll |
number | Optional. Toll on the segment, in currency units. | |
jurisdiction |
string | Optional. Optional. Owner/operator of the segment. | |
row_width |
number | min=0 | Optional. Width (short_length units) of the entire right-of-way (both directions). |
Foreign keys:
link_id→link.link_idref_node_id→node.node_id
segment_lane ¶
Defines added and dropped lanes, and changes to lane parameters. If a lane is added, it has no parent. If it is changed or dropped, the parent_lane_id field keys to the associated lane on the lane table.
Primary key: segment_lane_id
| Field | Type | Constraints | Description |
|---|---|---|---|
segment_lane_id |
any | required | Primary key. |
segment_id |
any | required | Required. Foreign key to the associated segment. |
lane_num |
integer | required; min=-10; max=10 | Required. -1, 1, 2 (use left-to-right numbering). 0 signifies a lane that is dropped on the segment. |
parent_lane_id |
any | Optional. If a lane drops or changes characteristics on the segment, the lane_id for that lane. | |
allowed_uses |
string | Optional. Set of allowed uses that should appear in either the use_definition or use_group tables; comma-separated. | |
r_barrier |
string | enum=[none, regulatory, physical] | Optional. Whether a barrier exists to prevent vehicles from changing lanes to the right. |
l_barrier |
string | enum=[none, regulatory, physical] | Optional. Whether a barrier exists to prevent vehicles from changing lanes to the left |
width |
number | min=0 | Optional. Width of the lane (short_length units) |
Foreign keys:
segment_id→segment.segment_id
signal_controller ¶
The signal controller is associated with an intersection or a cluster of intersections.
Primary key: controller_id
| Field | Type | Constraints | Description |
|---|---|---|---|
controller_id |
any | required | Primary key. |
signal_coordination ¶
Establishes coordination for several signal controllers, associated with a timing_plan.
Primary key: coordination_id
| Field | Type | Constraints | Description |
|---|---|---|---|
coordination_id |
any | required | Primary key. |
timing_plan_id |
any | required | Required. Foreign key (Signal_timing_plan table). |
controller_id |
any | required | Required. Foreign key (signal_controller table). |
coord_contr_id |
any | Optional. For coordinated signals, the master signal controller for coordination. | |
coord_phase |
integer | min=0; max=32 | Optional. For coordinated signals, the phase at which coordination starts (time 0). |
coord_ref_to |
string | enum=[begin_of_green, begin_of_yellow, begin_of_red] | Optional. For coordinated signals, the part of the phase where coordination starts: begin_of_green, begin_of_yellow, begin_of_red. |
offset |
number | min=0 | Optional. Offset in seconds. |
Foreign keys:
timing_plan_id→signal_timing_plan.timing_plan_idcontroller_id→signal_controller.controller_idcoord_contr_id→signal_controller.controller_id
signal_phase_mvmt ¶
Associates Movements and pedestrian Links (e.g., crosswalks) with signal phases. A signal phase may be associated with several movements. A Movement may also run on more than one phase.
Primary key: signal_phase_mvmt_id
| Field | Type | Constraints | Description |
|---|---|---|---|
signal_phase_mvmt_id |
any | required | Primary key. |
timing_phase_id |
any | required | Associated entry in the timing phase table. |
mvmt_id |
any | Foreign key. Either Movement_ID (for phases used by vehicles), or Link_id (for phases used by pedestrians) is required. | |
link_id |
any | Foreign key. Either Movement_ID (for phases used by vehicles), or Link_id (for phases used by pedestrians) is required. | |
protection |
string | enum=[protected, permitted, rtor] | Optional. Indicates whether the phase is protected, permitted, or right turn on red. |
Foreign keys:
timing_phase_id→signal_timing_phase.timing_phase_idmvmt_id→movement.mvmt_idlink_id→link.link_id
signal_timing_plan ¶
For signalized nodes, establishes timing plans.
Primary key: timing_plan_id
| Field | Type | Constraints | Description |
|---|---|---|---|
timing_plan_id |
any | required | Primary key. |
controller_id |
any | required | Required. Foreign key (signal_controller table). |
timeday_id |
any | Conditionally required (either timeday_id or time_day). Foreign key to time_set_definitions. | |
time_day |
any | Conditionally required (either timeday_id or time_day). XXXXXXXX_HHMM_HHMM, where XXXXXXXX is a bitmap of days of the week, Sunday-Saturday, Holiday. The HHMM are the start and end times. | |
cycle_length |
number | min=0; max=600 | Cycle length in seconds. |
Foreign keys:
controller_id→signal_controller.controller_idtimeday_id→time_set_definitions.timeday_id
signal_timing_phase ¶
For signalized nodes, provides signal timing and establishes phases that may run concurrently.
Primary key: timing_phase_id
| Field | Type | Constraints | Description |
|---|---|---|---|
timing_phase_id |
any | required | Primary key. |
timing_plan_id |
any | Foreign key; connects to a timing_plan associated with a controller. | |
signal_phase_num |
integer | required; min=0 | Signal phase number. Typically the NEMA phase number. |
min_green |
number | min=0 | The minimum green time in seconds for an actuated signal. Green time in seconds for a fixed time signal. |
max_green |
number | min=0 | Optional.The maximum green time in seconds for an actuated signal; the default is minimum green plus one extension |
extension |
number | min=0; max=120 | Optional. The number of seconds the green time is extended each time vehicles are detected. |
clearance |
number | min=0; max=120 | Yellow interval plus all red interval |
walk_time |
number | min=0; max=120 | If a pedestrian phase exists, the walk time in seconds |
ped_clearance |
number | min=0; max=120 | If a pedestrian phase exists, the flashing don’t walk time. |
ring |
integer | required; min=0; max=12 | Required. Phases that may operate sequentially. With dual rings, two non-conflicting phases may operate at the same time |
barrier |
integer | required; min=0; max=12 | Required. Set of phases in both rings that must end at the same time |
position |
integer | required | Required. Position. |
Foreign keys:
timing_plan_id→signal_timing_plan.timing_plan_id
signal_detector ¶
A signal detector is associated with a controller, a phase and a group of lanes.
Primary key: detector_id
| Field | Type | Constraints | Description |
|---|---|---|---|
detector_id |
any | required | Primary key. |
controller_id |
any | required | Required. Foreign key to signal_controller table. |
signal_phase_num |
integer | required | Required. Number of the associated phase. |
link_id |
any | required | Foreign key. The link covered by the detector. |
start_lane |
integer | required | Left-most lane covered by the detector. |
end_lane |
integer | Right-most lane covered by the detector (blank if only one lane). | |
ref_node_id |
any | required | The detector is on the approach to this node. |
det_zone_lr |
number | required | Required. Distance from from the stop bar to detector in short_length units. |
det_zone_front |
number | Optional. Linear reference of front of detection zone in short_length units. | |
det_zone_back |
number | Optional. Linear reference of back of detection zone in short_length units. | |
det_type |
string | Optional. Type of detector. |
Foreign keys:
controller_id→signal_controller.controller_idlink_id→link.link_idref_node_id→node.node_id
segment_tod ¶
An optional file that handles day-of-week and time-of-day restrictions on segments. It is used for part-time changes in segment capacity and number of lanes.
Primary key: segment_tod_id
| Field | Type | Constraints | Description |
|---|---|---|---|
segment_tod_id |
any | required | Primary key. |
segment_id |
any | required | Foreign key to segment table. |
timeday_id |
any | Conditionally required (either timeday_id or time_day). Foreign key to time_set_definitions. | |
time_day |
string | Conditionally required (either timeday_id or time_day). XXXXXXXX_HHMM_HHMM, where XXXXXXXX is a bitmap of days of the week, Sunday-Saturday, Holiday. The HHMM are the start and end times. | |
capacity |
number | min=0 | Optional. Saturation capacity pce / hr / lane |
free_speed |
number | min=0; max=200 | Optional. Free flow speed in units defined by config file |
lanes |
integer | Optional. Number of lanes in the direction of travel (must be consistent with link lanes + lanes added). | |
l_lanes_added |
integer | Optional. # of lanes added on the left of the road link (negative indicates a lane drop). | |
r_lanes_added |
integer | Optional. # of lanes added on the right of the road link (negative indicates a lane drop). | |
bike_facility |
string | enum=[unseparated bike lane, buffered bike lane, separated bike lane, counter-flow bike lane, paved shoulder, shared lane, … (+4 more)] | Optional. Type of bike facility along the segment. |
ped_facility |
string | enum=[unknown, none, shoulder, sidewalk, offstreet_path, crosswalk] | Optional. Type of pedestrian accommodation along the segment |
parking |
string | enum=[unknown, none, parallel, angle, other] | Optional. Type of parking along the segment. |
toll |
number | Optional. Toll in currency units | |
allowed_uses |
string | Optional. Set of allowed uses that should appear in either the use_definition or use_group tables; comma-separated. |
Foreign keys:
segment_id→segment.segment_idtimeday_id→time_set_definitions.timeday_id
lane_tod ¶
An optional file that handles day-of-week and time-of-day restrictions on lanes that traverse entire links.
Primary key: lane_tod_id
| Field | Type | Constraints | Description |
|---|---|---|---|
lane_tod_id |
any | required | Primary key. |
lane_id |
any | required | Required. Foreign key to lane |
timeday_id |
any | Conditionally required (either timeday_id or time_day). Foreign key to time_set_definitions. | |
time_day |
string | Conditionally required (either timeday_id or time_day). XXXXXXXX_HHMM_HHMM, where XXXXXXXX is a bitmap of days of the week, Sunday-Saturday, Holiday. The HHMM are the start and end times. | |
lane_num |
integer | required; min=-10; max=10 | Required. Lane number identified as offset to the right from the centerline. i.e. -1, 1, 2 (use left-to-rightnumbering). |
allowed_uses |
string | Optional. Set of allowed uses that should appear in either the use_definition or use_group tables; comma-separated. | |
r_barrier |
string | enum=[none, regulatory, physical] | Optional. Whether a barrier exists to prevent vehicles from changing lanes to the right. |
l_barrier |
string | enum=[none, regulatory, physical] | Optional. Whether a barrier exists to prevent vehicles from changing lanes to the left |
width |
number | min=0 | Optional. Width of the lane, short_length units. |
Foreign keys:
lane_id→lane.lane_idtimeday_id→time_set_definitions.timeday_id
segment_lane_tod ¶
An optional file that handles day-of-week and time-of-day restrictions on lanes within segments of links.
Primary key: segment_lane_tod_id
| Field | Type | Constraints | Description |
|---|---|---|---|
segment_lane_tod_id |
any | required | Primary key. |
segment_lane_id |
any | required | Required. Foreign key, segment_lane table |
timeday_id |
any | Conditionally required (either timeday_id or time_day). Foreign key to time_set_definitions. | |
time_day |
string | Conditionally required (either timeday_id or time_day). XXXXXXXX_HHMM_HHMM, where XXXXXXXX is a bitmap of days of the week, Sunday-Saturday, Holiday. The HHMM are the start and end times. | |
lane_num |
integer | required; min=-10; max=10 | Required. Lane number identified as offset to the right from the centerline. i.e. -1, 1, 2 (use left-to-rightnumbering). |
allowed_uses |
string | Optional. Set of allowed uses that should appear in either the use_definition or use_group tables; comma-separated. | |
r_barrier |
string | enum=[none, regulatory, physical] | Optional. Whether a barrier exists to prevent vehicles from changing lanes to the right. |
l_barrier |
string | enum=[none, regulatory, physical] | Optional. Whether a barrier exists to prevent vehicles from changing lanes to the left |
width |
number | min=0 | Optional. Width of the lane, short_length units. |
Foreign keys:
segment_lane_id→segment_lane.segment_lane_idtimeday_id→time_set_definitions.timeday_id
zone ¶
Locates zones (travel analysis zones, parcels) on a map. Zones are represented as polygons in geographic information systems.
Primary key: zone_id
| Field | Type | Constraints | Description |
|---|---|---|---|
zone_id |
any | required | Primary key. |
name |
string | Optional. | |
boundary |
any | Optional. The polygon geometry of the zone, as well-known text. | |
super_zone |
string | Optional. If there is a hierarchy of zones (e.g., parcels and TAZs), indicates the zone of next higher level. |
Foreign keys:
super_zone→zone.zone_id
config ¶
Configuration information for the dataset (units, coordinate systems, etc.).
| Field | Type | Constraints | Description |
|---|---|---|---|
dataset_name |
any | Name used to describe this GMNS network | |
short_length |
any | Length unit used for lane/ROW widths and linear references for segments, locations, etc. along links | |
long_length |
any | Length unit used for link lengths | |
speed |
any | Units for speed. Usually long_length units per hour | |
crs |
any | Coordinate system used for geometry data in this dataset. Preferably a string that can be accepted by pyproj (e.g., EPSG code or proj string) | |
geometry_field_format |
any | The format used for geometry fields in the dataset. For example, WKT for files stored as plaintext |
|
currency |
any | Currency used in toll fields | |
version_number |
number | The version of the GMNS spec to which this dataset conforms | |
id_type |
string | enum=[string, integer] | The type of primary key IDs for interopability (node_id, zone_id, etc.). May be enforced by user, database schema, or downstream software. Must be either string or integer. |
curb_seg ¶
Provides a separate segment object for curbside regulations, which may change at different locations than segment-level changes to the travel lanes.
Primary key: curb_seg_id
| Field | Type | Constraints | Description |
|---|---|---|---|
curb_seg_id |
any | required | Primary key. |
link_id |
any | required | Required. Foreign key to road_links. The link that the segment is located on. |
ref_node_id |
any | required | Required. Foreign key to node where distance is 0. |
start_lr |
number | required; min=0 | Required. Distance from ref_node_id in short_length units. |
end_lr |
number | required; min=0 | Required. Distance from ref_node_idin short_length units. |
regulation |
string | Optional. Regulation on this curb segment. | |
width |
number | min=0 | Optional. Width (short_length units) of the curb segment. |
Foreign keys:
link_id→link.link_idref_node_id→node.node_id