Retrieving model tables
Reading SQLite tables into Pandas DataFrames, as well as SpatiaLite tables into GeoDataFrames are frequent
operations when working with Polaris models. This example demonstrates how to retrieve model data using the Polaris API.
sphinx_gallery_thumbnail_path = ‘../../examples/working_with_models/tables.png’
from pathlib import Path
from polaris import Polaris
from polaris.utils.testing.temp_model import TempModel
# Let's open the model
pol = Polaris.from_dir(TempModel("Grid"))
pol.network.tables.get("Link_type")
|
link_type |
rank |
use_codes |
turn_pocket_length |
turn_pockets |
minimum_speed |
speed_limit |
alternative_labels |
notes |
0 |
FREEWAY |
10 |
ANY|AUTO|TRUCK|BUS|SOV|HOV2|HOV3|HOV4|LIGHTTRU... |
200.0 |
1 |
25 |
33 |
None |
None |
1 |
EXPRESSWAY |
20 |
ANY|AUTO|TRUCK|BUS|SOV|HOV2|HOV3|HOV4|LIGHTTRU... |
200.0 |
1 |
25 |
33 |
XPRESSWAY |
None |
2 |
PRINCIPAL |
30 |
ANY|WALK|BICYCLE|AUTO|TRUCK|BUS|SOV|HOV2|HOV3|... |
50.0 |
1 |
10 |
28 |
None |
None |
3 |
MAJOR |
40 |
ANY|WALK|BICYCLE|AUTO|TRUCK|BUS|SOV|HOV2|HOV3|... |
50.0 |
1 |
10 |
28 |
PRIARTER |
None |
4 |
MINOR |
50 |
ANY|WALK|BICYCLE|AUTO|TRUCK|BUS|SOV|HOV2|HOV3|... |
50.0 |
1 |
10 |
28 |
SECARTER |
None |
5 |
COLLECTOR |
60 |
ANY|WALK|BICYCLE|AUTO|TRUCK|BUS|SOV|HOV2|HOV3|... |
50.0 |
1 |
10 |
27 |
None |
None |
6 |
LOCAL_THRU |
70 |
ANY|WALK|BICYCLE|AUTO|TRUCK|BUS|SOV|HOV2|HOV3|... |
50.0 |
0 |
10 |
22 |
THRU|LOCAL_ACCESS |
None |
7 |
LOCAL |
80 |
ANY|WALK|BICYCLE|AUTO|TRUCK|BUS|SOV|HOV2|HOV3|... |
50.0 |
0 |
10 |
22 |
None |
None |
8 |
FRONTAGE |
90 |
ANY|WALK|BICYCLE|AUTO|TRUCK|BUS|SOV|HOV2|HOV3|... |
50.0 |
1 |
10 |
28 |
None |
None |
9 |
RAMP |
100 |
ANY|AUTO|TRUCK|BUS|SOV|HOV2|HOV3|HOV4|LIGHTTRU... |
50.0 |
0 |
15 |
33 |
None |
None |
10 |
BRIDGE |
110 |
ANY|WALK|BICYCLE|AUTO|TRUCK|BUS|SOV|HOV2|HOV3|... |
50.0 |
1 |
10 |
33 |
None |
None |
11 |
TUNNEL |
120 |
ANY|WALK|BICYCLE|AUTO|TRUCK|BUS|SOV|HOV2|HOV3|... |
50.0 |
0 |
10 |
33 |
None |
None |
12 |
EXTERNAL |
130 |
ANY|WALK|BICYCLE|AUTO|TRUCK|BUS|RAIL|SOV|HOV2|... |
50.0 |
0 |
25 |
33 |
ZONECONN |
None |
13 |
WALKWAY |
200 |
ANY|WALK|RESTRICTED|NONE |
50.0 |
0 |
0 |
10 |
None |
None |
14 |
BIKEWAY |
210 |
ANY|BICYCLE|RESTRICTED|NONE |
50.0 |
0 |
0 |
10 |
None |
None |
15 |
BUSWAY |
220 |
ANY|BUS|RESTRICTED|NONE |
50.0 |
0 |
10 |
10 |
None |
None |
16 |
LIGHTRAIL |
300 |
ANY|RAIL|RESTRICTED|NONE |
50.0 |
0 |
0 |
20 |
None |
None |
17 |
HEAVYRAIL |
310 |
ANY|RAIL|RESTRICTED|NONE |
50.0 |
0 |
0 |
20 |
None |
None |
18 |
FERRY |
400 |
ANY|RESTRICTED|NONE |
50.0 |
0 |
0 |
20 |
None |
None |
19 |
OTHER |
500 |
ANY|WALK|BICYCLE|AUTO|TRUCK|BUS|RAIL|SOV|HOV2|... |
50.0 |
1 |
10 |
27 |
None |
None |
20 |
WALK |
700 |
any |
50.0 |
0 |
0 |
10 |
None |
None |
21 |
TRANSIT |
600 |
any |
50.0 |
0 |
0 |
10 |
None |
None |
pol.network.tables.get("Node")
|
node |
x |
y |
z |
control_type |
zone |
geo |
0 |
1 |
431767.449826 |
4.596443e+06 |
None |
signal |
4 |
POINT (431767.45 4596443.125) |
1 |
2 |
411760.762253 |
4.596370e+06 |
None |
signal |
8 |
POINT (411760.762 4596370.319) |
2 |
3 |
411731.243096 |
4.589465e+06 |
None |
all_stop |
7 |
POINT (411731.243 4589465.163) |
3 |
4 |
431958.954788 |
4.589262e+06 |
None |
all_stop |
4 |
POINT (431958.955 4589261.689) |
4 |
5 |
411751.863484 |
4.594289e+06 |
None |
signal |
7 |
POINT (411751.863 4594288.709) |
... |
... |
... |
... |
... |
... |
... |
... |
443 |
444 |
420469.867233 |
4.593986e+06 |
None |
stop_sign |
10 |
POINT (420469.867 4593986.2) |
444 |
445 |
420165.374081 |
4.593988e+06 |
None |
None |
10 |
POINT (420165.374 4593987.502) |
445 |
446 |
420475.356293 |
4.593745e+06 |
None |
stop_sign |
10 |
POINT (420475.356 4593744.682) |
446 |
447 |
420154.087884 |
4.593749e+06 |
None |
all_stop |
10 |
POINT (420154.088 4593748.836) |
447 |
448 |
420159.112985 |
4.593988e+06 |
None |
None |
10 |
POINT (420159.113 4593987.528) |
448 rows × 7 columns
We can also use the DataTableAccess class to access the tables without first opening the model
from polaris.utils.database.data_table_access import DataTableAccess
tables = DataTableAccess(pol.model_path / "Grid-Supply.sqlite")
tables.get("node")
|
node |
x |
y |
z |
control_type |
zone |
geo |
0 |
1 |
431767.449826 |
4.596443e+06 |
None |
signal |
4 |
POINT (431767.45 4596443.125) |
1 |
2 |
411760.762253 |
4.596370e+06 |
None |
signal |
8 |
POINT (411760.762 4596370.319) |
2 |
3 |
411731.243096 |
4.589465e+06 |
None |
all_stop |
7 |
POINT (411731.243 4589465.163) |
3 |
4 |
431958.954788 |
4.589262e+06 |
None |
all_stop |
4 |
POINT (431958.955 4589261.689) |
4 |
5 |
411751.863484 |
4.594289e+06 |
None |
signal |
7 |
POINT (411751.863 4594288.709) |
... |
... |
... |
... |
... |
... |
... |
... |
443 |
444 |
420469.867233 |
4.593986e+06 |
None |
stop_sign |
10 |
POINT (420469.867 4593986.2) |
444 |
445 |
420165.374081 |
4.593988e+06 |
None |
None |
10 |
POINT (420165.374 4593987.502) |
445 |
446 |
420475.356293 |
4.593745e+06 |
None |
stop_sign |
10 |
POINT (420475.356 4593744.682) |
446 |
447 |
420154.087884 |
4.593749e+06 |
None |
all_stop |
10 |
POINT (420154.088 4593748.836) |
447 |
448 |
420159.112985 |
4.593988e+06 |
None |
None |
10 |
POINT (420159.113 4593987.528) |
448 rows × 7 columns
This same API is available for the demand and freight databases as well
pol.freight.tables.get(“Establishments”)
pol.demand.tables.get(“Activity”)
Total running time of the script: (0 minutes 0.500 seconds)
Gallery generated by Sphinx-Gallery