14
14
get_gate_mode_splits = False
15
15
use_warm_starts = True
16
16
17
- gates_df = pd .read_csv (r'inputs\gates .csv' )
17
+ gates_df = pd .read_csv (r'inputs\gates2_walkadjust .csv' )
18
18
tod_list = ['6to7' , '7to8' ,'8to9' ]
19
19
20
20
bank_list = [r'D:\stefan\Seattle_voc\code\banks\6to7' , r'D:\stefan\Seattle_voc\code\banks\7to8' , r'D:\stefan\Seattle_voc\code\banks\8to9' ]
21
21
22
22
project_list = ['projects/6to7/6to7.emp' , 'projects/7to8/7to8.emp' , 'projects/8to9/8to9.emp' ]
23
23
24
- skim_dict = {"sov" : ["svtl1" , "svtl2" , "svtl3" ], "hov2" : ["h2tl1" , "h2tl2" , "h2tl3" ], "hov3" : ["h3tl1" ,"h3tl2" , "h3tl3" ], "trucks" : ["hvtrk" , "metrk" , "lttrk" ], "transit" : ['litrat' , 'trnst' ]}
24
+ skim_dict = {"sov" : ["svtl1" , "svtl2" , "svtl3" ], "hov2" : ["h2tl1" , "h2tl2" , "h2tl3" ], "hov3" : ["h3tl1" ,"h3tl2" , "h3tl3" ], "trucks" : ["hvtrk" , "metrk" , "lttrk" ], "transit" : ['litrat' , 'trnst' ], 'walk' : [ 'walk' ], 'bike' : [ 'bike' ] }
25
25
26
26
skim_list = [item for sublist in skim_dict .values () for item in sublist ]
27
27
@@ -31,16 +31,30 @@ def start_pool(project_list):
31
31
pool .map (run_traversal_parallel ,project_list [0 :parallel_instances ])
32
32
pool .close ()
33
33
34
+ def transit_assignment (spec , name , project , add_volumes_ ):
35
+ with open (spec ) as f :
36
+ spec = json .load (f )
37
+ assign_transit = project .m .tool ("inro.emme.transit_assignment.extended_transit_assignment" )
38
+ return assign_transit (spec , save_strategies = True , class_name = name , add_volumes = add_volumes_ )
39
+
40
+ def transit_traversal (spec , name , project ):
41
+ with open (spec ) as f :
42
+ spec = json .load (f )
43
+ NAMESPACE = "inro.emme.transit_assignment.extended.traversal_analysis"
44
+ analyze_transit_paths = project .m .tool (NAMESPACE )
45
+ return analyze_transit_paths (spec , append_to_output_file = False , class_name = name , output_file = 'outputs/' + name + '_traversal_' + project .tod , num_processors = 8 )
46
+
47
+
34
48
def run_traversal_parallel (project_name ):
35
49
my_project = EmmeProject (project_name )
36
50
37
- # auto assignment/traversal:
51
+ ## auto assignment/traversal:
38
52
with open (r'inputs\traffic_assignment.ems' ) as f :
39
53
spec = json .load (f )
40
54
assign_traffic = my_project .m .tool ("inro.emme.traffic_assignment.path_based_traffic_assignment" )
41
55
report = assign_traffic (spec , warm_start = use_warm_starts )
42
56
43
- print 'finished assignment'
57
+ # print 'finished assignment'
44
58
45
59
with open (r'inputs\auto_taversal.ems' ) as f :
46
60
spec = json .load (f )
@@ -49,33 +63,18 @@ def run_traversal_parallel(project_name):
49
63
report = analyze_paths (spec )
50
64
51
65
# bus transit assignment/traversal
52
- with open (r'inputs\bus_transit_assignment.ems' ) as f :
53
- spec = json .load (f )
54
- assign_transit = my_project .m .tool ("inro.emme.transit_assignment.extended_transit_assignment" )
55
- report = assign_transit (spec , save_strategies = True , class_name = 'Bus' , add_volumes = False )
66
+ bus_assigment = transit_assignment (r'inputs\bus_transit_assignment.ems' , 'Bus' , my_project , False )
67
+ bus_traversal = transit_traversal (r'inputs\transit_traversal_analysis.ems' , 'Bus' , my_project )
56
68
57
- print 'finished assignment'
69
+ rail_assignment = transit_assignment (r'inputs\rail_transit_assignment.ems' , 'Rail' , my_project , True )
70
+ rail_traversal = transit_traversal (r'inputs\transit_traversal_analysis.ems' , 'Rail' , my_project )
58
71
59
- with open (r'inputs\transit_traversal_analysis.ems' ) as f :
60
- spec = json .load (f )
61
- NAMESPACE = "inro.emme.transit_assignment.extended.traversal_analysis"
62
- analyze_transit_paths = my_project .m .tool (NAMESPACE )
63
- report = analyze_transit_paths (spec , append_to_output_file = False , class_name = 'Bus' , output_file = 'outputs/bus_traversal_' + my_project .tod , num_processors = 8 )
72
+ walk_assignment = transit_assignment (r'inputs\walk_transit_assignment.ems' , 'walk' , my_project , True )
73
+ walk_traversal = transit_traversal (r'inputs\transit_traversal_analysis.ems' , 'walk' , my_project )
64
74
65
- # rail transit assignment/traversal
66
- with open (r'inputs\rail_transit_assignment.ems' ) as f :
67
- spec = json .load (f )
68
- assign_transit = my_project .m .tool ("inro.emme.transit_assignment.extended_transit_assignment" )
69
- report = assign_transit (spec , save_strategies = True , class_name = 'Rail' , add_volumes = True )
75
+ bike_assignment = transit_assignment (r'inputs\bike_transit_assignment.ems' , 'bike' , my_project , True )
76
+ bike_traversal = transit_traversal (r'inputs\transit_traversal_analysis.ems' , 'bike' , my_project )
70
77
71
- print 'finished assignment'
72
-
73
- with open (r'inputs\transit_traversal_analysis.ems' ) as f :
74
- spec = json .load (f )
75
- NAMESPACE = "inro.emme.transit_assignment.extended.traversal_analysis"
76
- analyze_transit_paths = my_project .m .tool (NAMESPACE )
77
- report = analyze_transit_paths (spec , append_to_output_file = False , class_name = 'Rail' , output_file = 'outputs/rail_traversal_' + my_project .tod , num_processors = 8 )
78
-
79
78
my_project .bank .dispose ()
80
79
81
80
def update_network_attribute (bank_path , att_name ):
@@ -101,7 +100,7 @@ def gate_volumes_by_class(bank):
101
100
if link ['@gate' ] not in gate_dict .keys ():
102
101
gate_dict [link ['@gate' ]] = {}
103
102
for key , value in skim_dict .iteritems ():
104
- if not key == 'transit' :
103
+ if not key not in [ 'transit' , 'bike' , 'walk' ] :
105
104
vol = 0
106
105
107
106
for user_class in value :
@@ -125,7 +124,7 @@ def gate_volumes_by_class(bank):
125
124
126
125
127
126
def main ():
128
- gates_df = pd .read_csv (r'inputs\gates .csv' )
127
+ gates_df = pd .read_csv (r'inputs\gates2_walkadjust .csv' )
129
128
districts_df = gates_df [gates_df ['TAZ' ] > 0 ]
130
129
districts_df = districts_df .groupby ('TAZ' ).first ()
131
130
districts_df .reset_index (inplace = True )
@@ -136,7 +135,7 @@ def main():
136
135
for path in bank_list :
137
136
update_network_attribute (path , '@gate' )
138
137
139
- # create matrices for traversal results
138
+ #create matrices for traversal results
140
139
for bank_path in bank_list :
141
140
bank = _eb .Emmebank (os .path .join (bank_path , 'emmebank' ))
142
141
for matrix in bank .matrices ():
@@ -154,8 +153,9 @@ def main():
154
153
155
154
np_matrices = {}
156
155
for key in skim_dict .keys ():
157
- print key
158
- np_matrices [key ] = np .zeros ((3700 ,3700 ), np .float16 )
156
+ if key not in ['transit' , 'bike' , 'walk' ]:
157
+ print key
158
+ np_matrices [key ] = np .zeros ((3700 ,3700 ), np .float16 )
159
159
160
160
for tod in tod_list :
161
161
bank = _eb .Emmebank (os .path .join ('banks' , tod , 'emmebank' ))
@@ -199,22 +199,38 @@ def main():
199
199
df_final ['walk_vol' ] = 0
200
200
201
201
for tod in tod_list :
202
- rail_df = pd .read_csv (r'outputs\rail_traversal_' + tod , skiprows = 17 , delim_whitespace = True , header = None )
202
+ rail_df = pd .read_csv (r'outputs\rail_traversal_' + tod , skiprows = 17 , delim_whitespace = True , header = None , engine = 'python' )
203
203
rail_df .columns = ['from' , 'to' , 'tvol' ]
204
204
df_final = df_final .merge (rail_df , how = 'left' , on = ['from' , 'to' ])
205
205
df_final ['tvol' ] = df_final ['tvol' ].convert_objects (convert_numeric = True )
206
206
df_final .tvol .fillna (0 , inplace = True )
207
207
df_final ['transit_vol' ] = df_final ['transit_vol' ] + df_final ['tvol' ]
208
208
df_final .drop ('tvol' , axis = 1 , inplace = True )
209
209
210
- bus_df = pd .read_csv (r'outputs\bus_traversal_' + tod , skiprows = 17 , delim_whitespace = True , header = None )
210
+ bus_df = pd .read_csv (r'outputs\bus_traversal_' + tod , skiprows = 17 , delim_whitespace = True , header = None , engine = 'python' )
211
211
bus_df .columns = ['from' , 'to' , 'tvol' ]
212
212
df_final = df_final .merge (bus_df , how = 'left' , on = ['from' , 'to' ])
213
213
df_final ['tvol' ] = df_final ['tvol' ].convert_objects (convert_numeric = True )
214
214
df_final .tvol .fillna (0 , inplace = True )
215
215
df_final ['transit_vol' ] = df_final ['transit_vol' ] + df_final ['tvol' ].astype (float )
216
216
df_final .drop ('tvol' , axis = 1 , inplace = True )
217
217
218
+ walk_df = pd .read_csv (r'outputs\walk_traversal_' + tod , skiprows = 17 , delim_whitespace = True , header = None , engine = 'python' )
219
+ walk_df .columns = ['from' , 'to' , 'tvol' ]
220
+ df_final = df_final .merge (walk_df , how = 'left' , on = ['from' , 'to' ])
221
+ df_final ['tvol' ] = df_final ['tvol' ].convert_objects (convert_numeric = True )
222
+ df_final .tvol .fillna (0 , inplace = True )
223
+ df_final ['walk_vol' ] = df_final ['walk_vol' ] + df_final ['tvol' ].astype (float )
224
+ df_final .drop ('tvol' , axis = 1 , inplace = True )
225
+
226
+ bike_df = pd .read_csv (r'outputs\bike_traversal_' + tod , skiprows = 17 , delim_whitespace = True , header = None , engine = 'python' )
227
+ bike_df .columns = ['from' , 'to' , 'tvol' ]
228
+ df_final = df_final .merge (bike_df , how = 'left' , on = ['from' , 'to' ])
229
+ df_final ['tvol' ] = df_final ['tvol' ].convert_objects (convert_numeric = True )
230
+ df_final .tvol .fillna (0 , inplace = True )
231
+ df_final ['bike_vol' ] = df_final ['bike_vol' ] + df_final ['tvol' ].astype (float )
232
+ df_final .drop ('tvol' , axis = 1 , inplace = True )
233
+
218
234
districts_df = districts_df [['TAZ' , 'district_2' , 'district_2_name' , 'aggregate_district_name2' ]]
219
235
df_final = df_final .merge (districts_df , how = 'left' , left_on = 'from' , right_on = 'TAZ' )
220
236
df_final = df_final .rename (columns = {'district_2_name' : 'from_district' })
0 commit comments