Skip to content

Commit 66401af

Browse files
committed
fix future it_order
1 parent 1d8509d commit 66401af

4 files changed

Lines changed: 100 additions & 12 deletions

File tree

Rail Network Management.tbx

-2 KB
Binary file not shown.

geometry_update.sas

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
2626
- SECTION 5 - Creates final files for input into geodatabase.
2727
28-
28+
NRF revised 5-30-2017 to take future routes .dbf as parameter.
2929
__________________________________________________________________________________________________________________________ */
3030

3131
%let dir=%scan(&sysparm,1,$); ***shapefile storage directory;
@@ -34,6 +34,7 @@ ________________________________________________________________________________
3434
%let code=%scan(&sysparm,4,$); ***choice flag for Section 3 processing;
3535
%let segfile=%scan(&sysparm,5,$); ***name of GTFS segment file (entire path);
3636
%let use900=%scan(&sysparm,6,$); ***use new station itinerary during GTFS import;
37+
%let origfrts=%scan(&sysparm,7,$); ***original future routes .dbf file (entire path);
3738

3839

3940
%let tot=0;

itinerary_node_update_Aug2012.sas

Lines changed: 89 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
*NRF revised 5-30-2017 to use action codes to inform future it_order after split link.;
2+
13
*================================================================*;
24
*** UPDATE ITINERARY TO REFLECT SPLIT LINKS W/ TEMPORARY ANODE-BNODE VALUES (ONLY IF NEW_MILE.DBF EXISTS) ***;
35
*================================================================*;
@@ -123,14 +125,93 @@ filename delndf "&dir.\Temp\deleted_node.dbf";
123125
* --> put all itinerary coding back together *;
124126
proc summary nway data=fix1; class tr_line it_order; output out=y1;
125127
data fix; merge fix y1 (in=hit); by tr_line it_order; if hit then delete;
126-
data good(drop=_type_ _freq_ it_order); set ok fix fix1; proc sort; by tr_line f_meas;
127-
data good; set good; group=lag(tr_line);
128-
data good(drop=group); set good;
129-
retain it_order 1;
130-
it_order+1;
131-
if tr_line ne group then it_order=1;
132-
output;
133-
proc sort; by itin_a itin_b;
128+
data good(drop=_type_ _freq_ it_order); set ok fix fix1; proc sort; by tr_line f_meas;
129+
%if %index(&origitin,future) %then %do; *rewrite future it_order according to action codes;
130+
proc import datafile="&origfrts" dbms=dbf out=frts replace;
131+
proc sort;
132+
by tr_line;
133+
run;
134+
data actcodes(keep=tr_line action);
135+
set frts;
136+
run;
137+
data good;
138+
merge good(in=hit) actcodes;
139+
by tr_line;
140+
if hit;
141+
run;
142+
data act1 act2 act3;
143+
set good;
144+
if action in (1,5) then output act1;
145+
else if action=4 then output act2;
146+
else output act3;
147+
run;
148+
data act1;
149+
set act1;
150+
group=lag(tr_line);
151+
run;
152+
data act1(drop=group);
153+
set act1;
154+
retain it_order 1;
155+
it_order+1;
156+
if tr_line ne group then it_order=1;
157+
output;
158+
run;
159+
proc sql;
160+
create table y3 as
161+
select tr_line, count(tr_line) as itincnt
162+
from act2
163+
group by tr_line;
164+
quit;
165+
data act2;
166+
merge act2(in=hit) y3;
167+
by tr_line;
168+
if hit;
169+
run;
170+
data act2(drop=itincnt n i);
171+
set act2;
172+
by tr_line f_meas;
173+
retain n i;
174+
if first.tr_line then do;
175+
n=itincnt;
176+
i=itincnt+(itincnt/2);
177+
end;
178+
if i>n then do;
179+
it_order=n-i;
180+
i=i-1;
181+
end;
182+
if i<n then do;
183+
it_order=(n-i)+1000;
184+
i=i-1;
185+
end;
186+
if i=n then i=i-1;
187+
run;
188+
data act3;
189+
set act3;
190+
it_order=0;
191+
run;
192+
data good(drop=action);
193+
set act1 act2 act3;
194+
run;
195+
proc sort;
196+
by itin_a itin_b;
197+
run;
198+
%end;
199+
%else %do;
200+
data good;
201+
set good;
202+
group=lag(tr_line);
203+
run;
204+
data good(drop=group);
205+
set good;
206+
retain it_order 1;
207+
it_order+1;
208+
if tr_line ne group then it_order=1;
209+
output;
210+
run;
211+
proc sort;
212+
by itin_a itin_b;
213+
run;
214+
%end;
134215

135216
data goodout;
136217
set good;

update_network_edits_Aug2012.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
# replaced by more efficient Search and Update cursor code. #
2626
# 01-23-2012: y2 variable for cmd2 re-written for new required parameters.#
2727
# 08-07-2012: Revised to iterate through & update all route systems. #
28+
# 05-30-2017: revised to pass future route action codes to SAS for #
29+
# processing split links. #
2830
# #
2931
#############################################################################
3032

@@ -242,6 +244,7 @@
242244
arcpy.AddMessage("---> Updating Geometry for " + fcs[i] + " Route System ...")
243245
itinerary = d + "\\mrn.gdb\\" + fc + "_itin"
244246
orig_itinerary_dbf = d + "\\" + fc + "_itin_" + x1 + ".dbf"
247+
orig_future_routes_dbf = d + "\\future_routes_" + x1 + ".dbf"
245248
## Store copy of current itinerary coding for safekeeping ##
246249
if os.path.exists(orig_itinerary_dbf):
247250
arcpy.Delete_management(orig_itinerary_dbf, "DbaseTable")
@@ -255,6 +258,9 @@
255258
arcpy.SelectLayerByAttribute_management(rail_lines, "CLEAR_SELECTION", "")
256259
arcpy.FeatureClassToFeatureClass_conversion(rail_lines, e, "temp_route.shp", "", "", "")
257260
if fc == "future":
261+
if os.path.exists(orig_future_routes_dbf):
262+
arcpy.Delete_management(orig_future_routes_dbf, "DbaseTable")
263+
arcpy.TableSelect_analysis(railrt, orig_future_routes_dbf, "\"OBJECTID\" >= 1")
258264
outFile = open(outRtFl, "w")
259265
f = 1 # row id number
260266
for row in arcpy.SearchCursor(railrt): # loop through rows (features)
@@ -269,17 +275,17 @@
269275
f -= 1
270276
arcpy.AddMessage("---> Geometry Written for " + str(f) + " Future Routes")
271277
outFile.close()
272-
278+
273279
## Run SAS to Update Itineraries ##
274280
# -- finish set up to run SAS
275-
y2 = c + "$" + orig_itinerary_dbf + "$X$3$X"
281+
y2 = c + "$" + orig_itinerary_dbf + "$X$3$X$X$" + orig_future_routes_dbf
276282
cmd2 = [ bat, z2, y2, sas_log_file2, sas_list_file2 ]
277283
subprocess.call(cmd2)
278284
if os.path.exists(sas_list_file2):
279285
arcpy.AddMessage("---> SAS Processing Error!! Review the List File: " + sas_list_file2)
280286
arcpy.AddMessage("---> If there is an Errorlevel Message, Review the Log File: " + sas_log_file2)
281287
arcpy.AddMessage("-------------------------------------------------------------------")
282-
sys.exit([1])
288+
sys.exit([1])
283289

284290

285291
## << Part 3a: Create Routes with Updated Geometry >> ##

0 commit comments

Comments
 (0)