Multi-Resolution Modeling¶
Multi-Resolution Modeling (MRM) is a modeling technology that creates a family of models that represent the same phenomenon or a set of questions at more than two different resolutions. The fine-grained spatial scales could cover corridors, roads, and lane representations, and the temporal resolution refers to the time interval (or time stamps) at which the dynamic state of the model is updated, typically ranging from days to seconds. Each type of model (macroscopic, mesoscopic, or microscopic) has its own advantages and disadvantages, and represents a trade-off between scales and resolution levels. The ultimate goal of MRM is to seamlessly integrate models with different temporal and spatial resolutions, while the focus of the cross-resolution approach is to bridge the gaps between macroscopic and microscopic levels, so as to provide strong theoretical support and deeper insights for both levels.
The osm2gmns package adopts the GMNS standard and further extends it to a inherently consistent multi-resolution network modeling standard. With a single line of code, osm2gmns can help users generate corresponding mesoscopic and microscopic networks for any given macroscopic networks in GMNS format, enabling practitioners and researchers to carry out various studies on transportation planning, designing, optimization, simulation, and computation under different spatial granularities. In this section, we mainly talk about the three levels of transportation network representation.
Macroscopic Network¶
node.csv
Field |
Type |
Required? |
Comments |
---|---|---|---|
name |
string |
||
node_id |
int |
yes |
unique key |
osm_node_id |
string or int |
corresponding node id in osm data |
|
osm_highway |
string |
point type in osm data |
|
zone_id |
int |
||
ctrl_type |
enum |
signal; null |
|
node_type |
string |
||
activity_type |
string |
defined by adjacent links |
|
is_boundary |
enum |
-1: boundary node only with incoming links; 0: no; 1: boundary node only with outgoing links; 2: boundary node with both incoming and outgoing links |
|
x_coord |
double |
yes |
WGS 84 is used in osm |
y_coord |
double |
yes |
WGS 84 is used in osm |
intersection_id |
int |
nodes belonging to one complex intersection have the same id |
|
poi_id |
int |
id of the corresponding poi |
|
notes |
string |
link.csv
A link is an edge in a network, defined by the nodes it travels from and to. It may have associated geometry information[2]. Similar to node.csv, We also added several new attributes to the link file. Detailed link data dictionary is listed below.
Field |
Type |
Required? |
Comments |
---|---|---|---|
name |
string |
||
link_id |
int |
yes |
unique key |
osm_way_id |
string or int |
corresponding way id in osm data |
|
from_node_id |
int |
yes |
|
to_node_id |
int |
yes |
|
dir_flag |
enum |
1: forward, -1: backward, 0:bidirectionial |
|
length |
float |
unit: meter |
|
lanes |
int |
||
free_speed |
float |
unit: kilometer/hour |
|
capacity |
float |
unit: veh/hr/lane |
|
link_type_name |
string |
||
link_type |
int |
||
geometry |
Geometry |
||
allowed_uses |
enum |
auto, bike, walk |
|
from_biway |
bool |
1: link created from a bidirectional way, 0: not |
|
is_link |
bool |
1: link connecting two roads, 0: not |
There are two optional files including movement.csv
and segement.csv
that follow the exact same format as
defined in the GMMS standard. Readers can check the GMNS website for details.
In addition to the above files defined in the GMNS standard, osm2gmns can also produce poi.csv
files
where point of interest information is stored. Detailed poi data dictionary is listed below.
Field |
Type |
Required? |
Comments |
---|---|---|---|
name |
string |
||
poi_id |
int |
yes |
unique key |
osm_way_id |
string or int |
corresponding way id in osm data |
|
osm_relation_id |
string or int |
corresponding relation id in osm data |
|
building |
string |
building tag in osm data |
|
amenity |
string |
amenity tag in osm data |
|
way |
string |
way tag in osm data |
|
geometry |
Geometry |
yes |
|
centroid |
Geometry |
||
area |
float |
area of the poi. unit: square meter |
|
area_ft2 |
float |
area of the poi. unit: square feet |
Mesoscopic Network¶
Compared to the original macroscopic network, the mesoscopic network has more detailed information of the intersections. In the mesoscopic network, the research team expanded each intersection represented by a node in the macroscopic network. The team built a connector link for each intersection movement to facilitate intersection modeling, especially for signalized intersections.
Macroscopic and mesoscopic networks have different link-level coding schemes. Macroscopic networks often represent a road segment between two adjacent intersections as a link; however, lane changes sometimes occur within a link, especially when close to intersections. Changes in the number of lanes result in capacity changes, but the link attributes cannot properly reflect these changes. This situation may bring inconvenience or even potential errors when performing network modeling. In the GMNS standard, the comma-separated values (CSV) file, segment.csv, stores lane changes. The research team split and converted each link with lane changes from a macroscopic network to multiple mesoscopic links so that each mesoscopic link has a homogeneous capacity.
node.csv
Field |
Type |
Required? |
Comments |
---|---|---|---|
node_id |
int |
yes |
unique key |
zone_id |
int |
||
x_coord |
double |
yes |
WGS 84 is used in osm |
y_coord |
double |
yes |
WGS 84 is used in osm |
macro_node_id |
int |
id of its parent macroscopic node |
|
macro_link_id |
int |
id of its parent macroscopic link |
|
activity_type |
string |
||
is_boundary |
enum |
-1: boundary node only with incoming links; 0: no; 1: boundary node only with outgoing links |
link.csv
A link is an edge in a network, defined by the nodes it travels from and to. It may have associated geometry information[2]. Similar to node.csv, We also added several new attributes to the link file. Detailed link data dictionary is listed below.
Field |
Type |
Required? |
Comments |
---|---|---|---|
link_id |
int |
yes |
unique key |
from_node_id |
int |
yes |
|
to_node_id |
int |
yes |
|
dir_flag |
enum |
1: forward, -1: backward, 0:bidirectionial |
|
length |
float |
unit: meter |
|
lanes |
int |
||
free_speed |
float |
unit: kilometer/hour |
|
capacity |
float |
unit: veh/hr/lane |
|
link_type_name |
string |
||
link_type |
int |
||
geometry |
Geometry |
||
macro_node_id |
int |
id of its parent macroscopic node |
|
macro_link_id |
int |
id of its parent macroscopic link |
|
mvmt_txt_id |
enum |
NBL, NBT, NBR, NBU, SBL, SBT, SBR, SBU, EBL, EBT, EBR, EBU, WBL, WBT, WBR, WBU |
|
allowed_uses |
enum |
auto, bike, walk |
Microscopic Network¶
In the Maryland case study, microscopic networks used a lane-by-lane, cell-based representation. Instead of a conceptual line segment, lanes represented each link. The research team further discretized lanes into small cells to accurately describe vehicle motion status when moving on the road. The team also created changing cells to enable vehicles to switch trajectories between lanes. Users can customize the length of cells to accommodate different modeling needs.
node.csv
Field |
Type |
Required? |
Comments |
---|---|---|---|
node_id |
int |
yes |
unique key |
zone_id |
int |
||
x_coord |
double |
yes |
WGS 84 is used in osm |
y_coord |
double |
yes |
WGS 84 is used in osm |
meso_link_id |
int |
id of its parent mesoscopic link |
|
lane_no |
int |
start from 1 from inner side to outer side |
|
is_boundary |
enum |
-1: boundary node only with incoming links; 0: no; 1: boundary node only with outgoing links |
link.csv
A link is an edge in a network, defined by the nodes it travels from and to. It may have associated geometry information[2]. Similar to node.csv, We also added several new attributes to the link file. Detailed link data dictionary is listed below.
Field |
Type |
Required? |
Comments |
---|---|---|---|
link_id |
int |
yes |
unique key |
from_node_id |
int |
yes |
|
to_node_id |
int |
yes |
|
dir_flag |
enum |
1: forward, -1: backward, 0:bidirectionial |
|
length |
float |
unit: meter |
|
lanes |
int |
||
free_speed |
float |
unit: kilometer/hour |
|
capacity |
float |
unit: veh/hr/lane |
|
link_type_name |
string |
||
link_type |
int |
||
geometry |
Geometry |
||
macro_node_id |
int |
id of its parent macroscopic node |
|
macro_link_id |
int |
id of its parent macroscopic link |
|
meso_link_id |
int |
id of its parent mesoscopic link |
|
cell_type |
enum |
1: traveling cell, 2: lane changing cell |
|
additional_cost |
float |
||
lane_no |
int |
start from 1 from inner side to outer side |
|
mvmt_txt_id |
enum |
NBL, NBT, NBR, NBU, SBL, SBT, SBR, SBU, EBL, EBT, EBR, EBU, WBL, WBT, WBR, WBU |
|
allowed_uses |
enum |
auto, bike, walk |
[1] https://github.com/zephyr-data-specs/GMNS/blob/master/Specification/Node.md
[2] https://github.com/zephyr-data-specs/GMNS/blob/master/Specification/Link.md