Skim Data Storage#
Overview#
POLARIS transportation simulation software generates comprehensive skim matrices that capture travel impedances and accessibility measures across the modeled transportation network. These skim matrices are fundamental outputs that summarize the cost of travel between different zones in the study area, providing essential data for trip distribution, mode choice, and accessibility analysis.
Skim Types and File Organization#
POLARIS produces two primary categories of skim data:
Highway Skims Highway skims capture travel characteristics for automobile-based transportation modes across the road network. These matrices include travel times, distances, and costs for different vehicle types and time periods. Highway skim data is stored in files named
highway_skim_file.omx.Transit Skims Transit skims represent public transportation accessibility and travel characteristics, including bus, rail, and multimodal transit journeys. These matrices capture not only in-vehicle travel times but also access/egress times, waiting times, fares, and transfer penalties. Transit skim data is stored in files named
transit_skim_file.omx.
File Format and Structure#
POLARIS uses the Open Matrix (OMX) file format to store skim matrices. OMX is the de facto industry standard and is built on HDF5, which provides efficient storage and access to large matrix datasets commonly used in transportation planning applications.
Zone Mapping System#
Each skim file contains an internal mapping system that translates between human-readable zone identifiers and the raw matrix indices used for data storage. This mapping allows users to reference zones by their logical zone numbers (as defined in the model’s zone system) while maintaining efficient matrix operations using zero-based indexing internally.
Matrix Organization#
Within each OMX file, multiple matrices are stored to represent different impedance measures and time periods. Each matrix is systematically tagged with metadata that identifies:
Time Period: The specific time interval for which the skim was computed, expressed as minutes elapsed since the simulation start time. This allows POLARIS to capture time-of-day variations in network performance and accessibility.
Impedance Type: The specific measure stored in each matrix, which may include:
Travel time (seconds)
Distance (meters)
Generalized cost
Transit-specific metrics (waiting time, access time)
Transit fare information
Number of transfers required
Python Access#
POLARIS provides specialized Python classes for accessing and manipulating skim data:
HighwaySkim Class: Provides methods for reading, processing, and analyzing highway skim matrices
TransitSkim Class: Offers functionality specific to transit skim data, including multimodal journey analysis
These classes are fully documented in the analyze module and provide high-level interfaces that abstract away the complexities of direct OMX file manipulation.
project = Polaris.from_dir(Path(model_fldr))
highway_skim = project.skims.highway
print(highway_skim.intervals) # See what skimming intervals are available
distance_7am = highway_skims.distance[60 * 7] # Get the distance matrix for 7am
A comprehensive example notebook is also available which demonstrates skim data access and manipulation.