Setup and LRS Configuration
This notebook covers installing linref, loading data, and configuring a Linear Referencing System (LRS).
Installation
Linref can easily be installed using pip. The package is dependent on a few major libraries (geopandas, numpy, scipy) which may require additional effort on some machines. Please review documentation for those packages as needed if any issues arise.
pip install linref
Core Functionality
First, import linref with the shortened lr for ease of access and consistency with the dataframe accessor.
[1]:
import linref as lr
Load Sample Datasets
[2]:
# Load sample roadway, crash, and pavement datasets
# By default, LRS is not configured - you must set it up
roadways = lr.datasets.load('roadways')
crashes = lr.datasets.load('crashes')
pavement = lr.datasets.load('pavement')
# Or load with LRS pre-configured using set_lrs=True
# roadways = lr.datasets.load('roadways', set_lrs=True)
print(roadways.head(3))
route beg end traffic_volume speed_limit geometry
0 US-101 0.0 2.5 15000 45 LINESTRING (0 0, 2.5 0.5)
1 US-101 2.5 5.0 22000 55 LINESTRING (2.5 0.5, 5 1.2)
2 US-101 5.0 7.8 18500 55 LINESTRING (5 1.2, 7.8 2)
Setting Up an Existing LRS
Method 1: Set LRS per DataFrame
[3]:
roadways = roadways.lr.set_lrs(
key_col=['route'],
chain_col='chain', # Chain column for contiguous geometry grouping (added later via add_chaining)
loc_col='loc', # Should be defined even if not present in all datasets
beg_col='beg',
end_col='end',
geom_col='geometry',
geom_m_col='geometry_m', # Not currently present but will be generated later
closed='left_mod' # 'left_mod' is a the recommended convention for most linear datasets
)
print(roadways.lr)
LRS_Accessor with linear referencing system (LRS):
[GR lc LN SP sm] LRS(key_col=['route'], chain_col='chain', loc_col='loc', beg_col='beg', end_col='end', geom_col='geometry', geom_m_col='geometry_m', closed='left_mod')
Method 2: Set Default LRS
[4]:
# Define default LRS once
default_lrs = lr.LRS(
key_col=['route'],
chain_col='chain', # Chain column for contiguous geometry grouping (added later via add_chaining)
loc_col='loc', # Should be defined even if not present in all datasets
beg_col='beg',
end_col='end',
geom_col='geometry',
geom_m_col='geometry_m', # Not currently present but will be generated later
closed='left_mod' # 'left_mod' is a the recommended convention for most linear datasets
)
# Set as default for all DataFrames
lr.set_default_lrs(default_lrs)
# Now all DataFrames will use this LRS unless overridden
crashes = lr.datasets.load('crashes')
pavement = lr.datasets.load('pavement')
print(crashes.lr)
print(pavement.lr)
LRS_Accessor with linear referencing system (LRS):
[GR LC ln SP sm] LRS(key_col=['route'], chain_col='chain', loc_col='loc', beg_col='beg', end_col='end', geom_col='geometry', geom_m_col='geometry_m', closed='left_mod')
LRS_Accessor with linear referencing system (LRS):
[GR lc LN sp sm] LRS(key_col=['route'], chain_col='chain', loc_col='loc', beg_col='beg', end_col='end', geom_col='geometry', geom_m_col='geometry_m', closed='left_mod')