Source code for aequilibrae.transit.gtfs_writer.fare_writer
import csv
from os.path import join
import pandas as pd
# from polarislib.network.data import DataTableStorage
from aequilibrae.utils.get_table import get_table
[docs]
def write_fares(folder_path: str, conn):
fattr = get_table("Transit_Fare_Attributes", conn).reset_index()
fattr.rename(columns={"currency": "currency_type", "transfer": "transfers"}, inplace=True)
fattr.transfer_duration = fattr.transfer_duration.astype(int)
headers = ["fare_id", "price", "currency_type", "payment_method", "transfers", "agency_id", "transfer_duration"]
fattr[headers].to_csv(join(folder_path, "fare_attributes.txt"), quoting=csv.QUOTE_NONNUMERIC, index=False)
frls = get_table("Transit_Fare_Rules", conn).reset_index()
frls.rename(columns={fld: f"{fld}_id" for fld in frls.columns if "id" not in fld}, inplace=True)
frls = frls[["fare_id", "route_id", "origin_id", "destination_id", "contains_id"]]
for fld in ["origin_id", "destination_id"]:
frls[fld].fillna(-99999, inplace=True)
frls[fld] = frls[fld].astype(int).astype(str)
frls.loc[frls[fld] == "-99999", fld] = pd.NA
frls.to_csv(join(folder_path, "fare_rules.txt"), quoting=csv.QUOTE_NONNUMERIC, index=False)