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 NaN 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 NaN 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 NaN 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 NaN None
8 FRONTAGE 90 ANY|WALK|BICYCLE|AUTO|TRUCK|BUS|SOV|HOV2|HOV3|... 50.0 1 10 28 NaN None
9 RAMP 100 ANY|AUTO|TRUCK|BUS|SOV|HOV2|HOV3|HOV4|LIGHTTRU... 50.0 0 15 33 NaN None
10 BRIDGE 110 ANY|WALK|BICYCLE|AUTO|TRUCK|BUS|SOV|HOV2|HOV3|... 50.0 1 10 33 NaN None
11 TUNNEL 120 ANY|WALK|BICYCLE|AUTO|TRUCK|BUS|SOV|HOV2|HOV3|... 50.0 0 10 33 NaN 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 NaN None
14 BIKEWAY 210 ANY|BICYCLE|RESTRICTED|NONE 50.0 0 0 10 NaN None
15 BUSWAY 220 ANY|BUS|RESTRICTED|NONE 50.0 0 10 10 NaN None
16 LIGHTRAIL 300 ANY|RAIL|RESTRICTED|NONE 50.0 0 0 20 NaN None
17 HEAVYRAIL 310 ANY|RAIL|RESTRICTED|NONE 50.0 0 0 20 NaN None
18 FERRY 400 ANY|RESTRICTED|NONE 50.0 0 0 20 NaN None
19 OTHER 500 ANY|WALK|BICYCLE|AUTO|TRUCK|BUS|RAIL|SOV|HOV2|... 50.0 1 10 27 NaN None
20 WALK 700 any 50.0 0 0 10 NaN None
21 TRANSIT 600 any 50.0 0 0 10 NaN None


pol.network.tables.get("Node")
node x y z control_type zone geo
0 100001 431767.449826 4.596443e+06 None signal 4 POINT (431767.45 4596443.125)
1 100002 411760.762253 4.596370e+06 None signal 8 POINT (411760.762 4596370.319)
2 100003 411731.243096 4.589465e+06 None all_stop 7 POINT (411731.243 4589465.163)
3 100004 431958.954788 4.589262e+06 None all_stop 4 POINT (431958.955 4589261.689)
4 100005 411751.863484 4.594289e+06 None signal 7 POINT (411751.863 4594288.709)
... ... ... ... ... ... ... ...
443 100444 420469.867233 4.593986e+06 None stop_sign 10 POINT (420469.867 4593986.2)
444 100445 420165.374081 4.593988e+06 None NaN 10 POINT (420165.374 4593987.502)
445 100446 420475.356293 4.593745e+06 None stop_sign 10 POINT (420475.356 4593744.682)
446 100447 420154.087884 4.593749e+06 None all_stop 10 POINT (420154.088 4593748.836)
447 100448 420159.112985 4.593988e+06 None NaN 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 100001 431767.449826 4.596443e+06 None signal 4 POINT (431767.45 4596443.125)
1 100002 411760.762253 4.596370e+06 None signal 8 POINT (411760.762 4596370.319)
2 100003 411731.243096 4.589465e+06 None all_stop 7 POINT (411731.243 4589465.163)
3 100004 431958.954788 4.589262e+06 None all_stop 4 POINT (431958.955 4589261.689)
4 100005 411751.863484 4.594289e+06 None signal 7 POINT (411751.863 4594288.709)
... ... ... ... ... ... ... ...
443 100444 420469.867233 4.593986e+06 None stop_sign 10 POINT (420469.867 4593986.2)
444 100445 420165.374081 4.593988e+06 None NaN 10 POINT (420165.374 4593987.502)
445 100446 420475.356293 4.593745e+06 None stop_sign 10 POINT (420475.356 4593744.682)
446 100447 420154.087884 4.593749e+06 None all_stop 10 POINT (420154.088 4593748.836)
447 100448 420159.112985 4.593988e+06 None NaN 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”)

pol.close()

Total running time of the script: (0 minutes 0.350 seconds)

Gallery generated by Sphinx-Gallery