def get_val_from_uc_db(query): try: result = sql.read_frame(query, conn) return result.values[0][0] except: conn=psycopg2.connect(conn_string) cur = conn.cursor() sim.add_injectable('uc_conn', conn) sim.add_injectable('uc_cur', cur) result = sql.read_frame(query, conn) return result.values[0][0]
def get_val_from_uc_db(query): try: result = sql.read_frame(query, conn) return result.values[0][0] except: conn = psycopg2.connect(conn_string) cur = conn.cursor() sim.add_injectable('uc_conn', conn) sim.add_injectable('uc_cur', cur) result = sql.read_frame(query, conn) return result.values[0][0]
def exec_sql_uc(query): try: cur.execute(query) conn.commit() except: conn=psycopg2.connect(conn_string) cur = conn.cursor() sim.add_injectable('uc_conn', conn) sim.add_injectable('uc_cur', cur) cur.execute(query) conn.commit()
def build_networks(parcels): st = pd.HDFStore(os.path.join(misc.data_dir(), "osm_sandag.h5"), "r") nodes, edges = st.nodes, st.edges net = pdna.Network(nodes["x"], nodes["y"], edges["from"], edges["to"], edges[["weight"]]) net.precompute(3000) sim.add_injectable("net", net) p = parcels.to_frame(parcels.local_columns) p['node_id'] = net.get_node_ids(p['x'], p['y']) sim.add_table("parcels", p)
def exec_sql_uc(query): try: cur.execute(query) conn.commit() except: conn = psycopg2.connect(conn_string) cur = conn.cursor() sim.add_injectable('uc_conn', conn) sim.add_injectable('uc_cur', cur) cur.execute(query) conn.commit()
def change_scenario(scenario): assert scenario in sim.get_injectable("scenario_inputs"), \ "Invalid scenario name" print "Changing scenario to '%s'" % scenario sim.add_injectable("scenario", scenario)
def change_store(store_name): sim.add_injectable( "store", pd.HDFStore(os.path.join(misc.data_dir(), store_name), mode="r"))
import urbansim.sim.simulation as sim import os import pandas as pd from urbansim.utils import misc sim.add_injectable("building_sqft_per_job", { -1: 400, 1: 400, 2: 400, 3: 400, 4: 355, 5: 1161, 6: 470, 7: 661, 8: 960, 9: 825, 10: 445, 11: 445, 12: 383, 13: 383, 14: 383, }) # this maps building type ids to general building types # basically just reduces dimensionality sim.add_injectable("building_type_map", { 1: "Residential", 2: "Residential", 3: "Residential",
def buildings_to_uc(buildings): year = get_year() # Export newly predicted buildings (from proforma or Sitespec) to Urban Canvas b = buildings.to_frame(buildings.local_columns) new_buildings = b[(b.note=='simulated') | (b.note.str.startswith('Sitespec'))] new_buildings = new_buildings[new_buildings.year_built == year] new_buildings = new_buildings.reset_index() new_buildings = new_buildings.rename(columns = {'development_type_id':'building_type_id'}) new_buildings['building_sqft'] = new_buildings.residential_sqft + new_buildings.non_residential_sqft new_buildings['sqft_per_unit'] = new_buildings.residential_sqft/new_buildings.residential_units del new_buildings['res_price_per_sqft'] del new_buildings['nonres_rent_per_sqft'] new_buildings.parcel_id = new_buildings.parcel_id.astype('int32') new_buildings.residential_units = new_buildings.residential_units.astype('int32') new_buildings.non_residential_sqft = new_buildings.non_residential_sqft.astype('int32') new_buildings.stories = new_buildings.stories.astype('int32') new_buildings.residential_sqft = new_buildings.residential_sqft.astype('int32') new_buildings.building_sqft = new_buildings.building_sqft.fillna(0).astype('int32') new_buildings.sqft_per_unit = new_buildings.sqft_per_unit.fillna(0).astype('int32') # Urban Canvas database connection conn_string = "host='urbancanvas.cp2xwchuariu.us-west-2.rds.amazonaws.com' dbname='sandag_testing' user='******' password='******' port=5432" if 'uc_conn' not in sim._INJECTABLES.keys(): conn=psycopg2.connect(conn_string) cur = conn.cursor() sim.add_injectable('uc_conn', conn) sim.add_injectable('uc_cur', cur) else: conn = sim.get_injectable('uc_conn') cur = sim.get_injectable('uc_cur') def exec_sql_uc(query): try: cur.execute(query) conn.commit() except: conn=psycopg2.connect(conn_string) cur = conn.cursor() sim.add_injectable('uc_conn', conn) sim.add_injectable('uc_cur', cur) cur.execute(query) conn.commit() def get_val_from_uc_db(query): try: result = sql.read_frame(query, conn) return result.values[0][0] except: conn=psycopg2.connect(conn_string) cur = conn.cursor() sim.add_injectable('uc_conn', conn) sim.add_injectable('uc_cur', cur) result = sql.read_frame(query, conn) return result.values[0][0] max_bid = get_val_from_uc_db("select max(building_id) FROM building where building_id<100000000;") new_buildings.building_id = np.arange(max_bid+1, max_bid+1+len(new_buildings)) if 'projects_num' not in sim._INJECTABLES.keys(): exec_sql_uc("INSERT INTO scenario(id, name, type) select nextval('scenario_id_seq'), 'Run #' || cast(currval('scenario_id_seq') as character varying), 1;") nextval = get_val_from_uc_db("SELECT MAX(ID) FROM SCENARIO WHERE ID < 100000;") sim.add_injectable('projects_num', nextval) exec_sql_uc("INSERT INTO scenario_project(scenario, project) VALUES(%s, 1);" % nextval) exec_sql_uc("INSERT INTO scenario_project(scenario, project) VALUES(%s, %s);" % (nextval,nextval)) else: nextval = sim.get_injectable('projects_num') nextval = '{' + str(nextval) + '}' new_buildings['projects'] = nextval valid_from = '{' + str(year) + '-1-1}' new_buildings['valid_from'] = valid_from print 'Exporting %s buildings to Urbancanvas database for project %s and year %s.' % (len(new_buildings),nextval,year) output = cStringIO.StringIO() new_buildings.to_csv(output, sep='\t', header=False, index=False) output.seek(0) cur.copy_from(output, 'building', columns =tuple(new_buildings.columns.values.tolist())) conn.commit()
def buildings_to_uc(buildings): year = get_year() # Export newly predicted buildings (from proforma or Sitespec) to Urban Canvas b = buildings.to_frame(buildings.local_columns) new_buildings = b[(b.note == 'simulated') | (b.note.str.startswith('Sitespec'))] new_buildings = new_buildings[new_buildings.year_built == year] new_buildings = new_buildings.reset_index() new_buildings = new_buildings.rename( columns={'development_type_id': 'building_type_id'}) new_buildings[ 'building_sqft'] = new_buildings.residential_sqft + new_buildings.non_residential_sqft new_buildings[ 'sqft_per_unit'] = new_buildings.residential_sqft / new_buildings.residential_units del new_buildings['res_price_per_sqft'] del new_buildings['nonres_rent_per_sqft'] new_buildings.parcel_id = new_buildings.parcel_id.astype('int32') new_buildings.residential_units = new_buildings.residential_units.astype( 'int32') new_buildings.non_residential_sqft = new_buildings.non_residential_sqft.astype( 'int32') new_buildings.stories = new_buildings.stories.astype('int32') new_buildings.residential_sqft = new_buildings.residential_sqft.astype( 'int32') new_buildings.building_sqft = new_buildings.building_sqft.fillna(0).astype( 'int32') new_buildings.sqft_per_unit = new_buildings.sqft_per_unit.fillna(0).astype( 'int32') # Urban Canvas database connection conn_string = "host='urbancanvas.cp2xwchuariu.us-west-2.rds.amazonaws.com' dbname='sandag_testing' user='******' password='******' port=5432" if 'uc_conn' not in sim._INJECTABLES.keys(): conn = psycopg2.connect(conn_string) cur = conn.cursor() sim.add_injectable('uc_conn', conn) sim.add_injectable('uc_cur', cur) else: conn = sim.get_injectable('uc_conn') cur = sim.get_injectable('uc_cur') def exec_sql_uc(query): try: cur.execute(query) conn.commit() except: conn = psycopg2.connect(conn_string) cur = conn.cursor() sim.add_injectable('uc_conn', conn) sim.add_injectable('uc_cur', cur) cur.execute(query) conn.commit() def get_val_from_uc_db(query): try: result = sql.read_frame(query, conn) return result.values[0][0] except: conn = psycopg2.connect(conn_string) cur = conn.cursor() sim.add_injectable('uc_conn', conn) sim.add_injectable('uc_cur', cur) result = sql.read_frame(query, conn) return result.values[0][0] max_bid = get_val_from_uc_db( "select max(building_id) FROM building where building_id<100000000;") new_buildings.building_id = np.arange(max_bid + 1, max_bid + 1 + len(new_buildings)) if 'projects_num' not in sim._INJECTABLES.keys(): exec_sql_uc( "INSERT INTO scenario(id, name, type) select nextval('scenario_id_seq'), 'Run #' || cast(currval('scenario_id_seq') as character varying), 1;" ) nextval = get_val_from_uc_db( "SELECT MAX(ID) FROM SCENARIO WHERE ID < 100000;") sim.add_injectable('projects_num', nextval) exec_sql_uc( "INSERT INTO scenario_project(scenario, project) VALUES(%s, 1);" % nextval) exec_sql_uc( "INSERT INTO scenario_project(scenario, project) VALUES(%s, %s);" % (nextval, nextval)) else: nextval = sim.get_injectable('projects_num') nextval = '{' + str(nextval) + '}' new_buildings['projects'] = nextval valid_from = '{' + str(year) + '-1-1}' new_buildings['valid_from'] = valid_from print 'Exporting %s buildings to Urbancanvas database for project %s and year %s.' % ( len(new_buildings), nextval, year) output = cStringIO.StringIO() new_buildings.to_csv(output, sep='\t', header=False, index=False) output.seek(0) cur.copy_from(output, 'building', columns=tuple(new_buildings.columns.values.tolist())) conn.commit()
def get_run_no(): if 'run_no' not in sim.list_injectables(): sim.add_injectable("run_no", misc.get_run_number()) return sim.get_injectable("run_no")
def change_store(store_name): sim.add_injectable("store", pd.HDFStore(os.path.join(misc.data_dir(), store_name), mode="r"))
import urbansim.sim.simulation as sim import os import pandas as pd from urbansim.utils import misc sim.add_injectable( "building_sqft_per_job", { -1: 400, 1: 400, 2: 400, 3: 400, 4: 355, 5: 1161, 6: 470, 7: 661, 8: 960, 9: 825, 10: 445, 11: 445, 12: 383, 13: 383, 14: 383, }) # this maps building type ids to general building types # basically just reduces dimensionality sim.add_injectable( "building_type_map", { 1: "Residential", 2: "Residential", 3: "Residential",