Example
Package usage example
from datetime import datetime
from furbain import queries
from furbain import converter
from furbain import config
from furbain import databaseTools
import geopandas as gpd
def main():
overallStartTime = datetime.now()
config.setSimulationOutputPath('C:/Users/name/Documents/Furbain/data/matsim_nantes_edgt_20p/simulation_output')
config.setVariableInConfigurationFile('allvehicles_filename','/output_allvehicles.xml.gz')
config.ARABESQUE_GENERATED_FILES_DIRECTORY_PATH = './'
config.setDatabaseUser("postgres")
config.setDatabasePassword("postgres")
config.setDatabaseHost("localhost")
config.setDatabasePort("5432")
config.setDatabaseSRID("2154")
print("====== CREATING DATABASE ======")
databaseTools.createDatabase("furbain")
print("\n====== LIST DATABASES ======")
projectList = databaseTools.getAllDatabasesProjects()
print(projectList)
print("\n====== SELECT DATABASE ======")
databaseTools.selectDatabase("furbain")
print("\n====== LIST TABLES ======")
tables = databaseTools.getTablesFromDatabase()
print(tables)
print("====== DROP TABLE ======")
databaseTools.deleteTable("vehicle")
databaseTools.deleteTable("vehicleType")
print("\n====== GET TABLE AS A DATAFRAME ======")
gpdDf = databaseTools.getDatabaseTableDataframe("networkLink")
print(gpdDf)
print("\n====== CUSTOM SQL QUERY ======")
results = databaseTools.executeSQLOnDatabase('SELECT * from "vehicleType"')
tablesToImport = [
"vehicles",
"households",
"persons",
"networkLinks",
"facilities",
"trips",
"activities",
"events",
"buildings",
]
print("========== STARTING IMPORTATIONS ==========")
for table in tablesToImport:
launchImport(table)
print(f"========== IMPORTED IN {str(datetime.now() - overallStartTime)[:-5]} ==========")
allZonesDataframes = queries.agentActivity("./5zones.geojson", startTime='18:00:00', endTime='19:00:00', strictTime=False)
for df in allZonesDataframes:
print(df)
finalODMatrix = queries.odMatrix("./5zones.geojson", startTime='14:30:00', endTime='15:00:00', ignoreArrivalTime=True, generateArabesqueFiles=True)
for i in finalODMatrix:
print('\t'.join(map(str, i)))
if __name__ == '__main__':
resultDf = queries.activitySequences("./resources/sample/wholeCity.geojson", startTime='00:00:00', endTime='32:00:00', interval=15, createTableInDatabase=True, nbAgentsToProcess=200)
def launchImport(name):
currentStartTime = datetime.now()
print(f"Importing {name}...", end="", flush=True)
if name == "vehicles":
converter.vehicles.importVehicles()
elif name == "households":
converter.households.importHouseholds()
elif name == "persons":
converter.persons.importPersons()
elif name == "networkLinks":
converter.networkLinks.importNetworkLinks()
elif name == "facilities":
converter.facilities.importFacilities()
elif name == "trips":
converter.trips.importTrips()
elif name == "activities":
converter.activities.importActivities()
elif name == "events":
converter.events.importEvents(timeStepInMinutes=10)
elif name == "buildings":
converter.buildings.importBuildings()
print(f" Done in {str(datetime.now() - currentStartTime)[:-5]} !")
main()