Reading and Analyzing Cube Voyager PT Route Trace Files
After an unsuccessful attempt in trading mode choice calibration with bugfixing in Cube, I ended up figuring out several things about Voyager PT and route trace files.
Trace Reports
The trace reports are files that describe the transit routes from one zone to another. Â This is a little more detailed than the skim matrices, as the skims don’t tell you which routes are used or the operator of the routes (since there are five transit providers in the OKI model, this is a major concern). Â The trace reports look like this (this is from a subset of the OKI model):
REval Route(s) from Origin 10 to Destination 18
10 -> 4835
4835 -> 4839 -> 4865 lines Rt1IB Rt10IB Rt10OB Rt28MOB Rt32IB Rt27IB
4865 -> 4859 -> 18 lines Rt5TankOB Rt5TankIB Rt7TankOB Rt7TankIB Rt9TankIB Rt9TankOB Rt11TankIB Rt16TankIB Rt23TankIB Rt25TankIB
Cost= 65.11 Probability=1.0000
REval Route(s) from Origin 10 to Destination 19
10 -> 4835
4835 -> 4839 -> 19 lines Rt1IB Rt10IB Rt10OB Rt28MOB Rt32IB Rt27IB
Cost= 33.42 Probability=1.0000
REval Route(s) from Origin 10 to Destination 20
10 -> 4835
4835 -> 4839 -> 20 lines Rt1IB Rt10IB Rt10OB Rt28MOB Rt32IB Rt27IB
Cost= 33.42 Probability=1.0000
Voyager PT Setup
There is one thing that’s not really well documented in Cube Help, and that is how to generate the trace reports. Â The one thing that has to be done is on the FILEI ROUTEI or FILEO ROUTEO lines, the line must include both REPORTI=z-Z and REPORTO=z-Z. Â The report will not generate if only one side is there – both keys have to be there. Â There must also be a FILEO REPORTO file, but that’s required for any Voyager PT run.
So What?
Having this was only half the battle. Â I needed a matrix of the operator, and for the entire 3,200 (ish) zone model run, the resulting report file is over 1.2 GB (and that doesn’t include Dayton’s transit!). Â So I had to go through this file quickly. Â Enter Java.
I wrote a quick (both in code and in running) Java program to read the report file and a DBF of the lines (which I got from the geodatabase route layer). The program sorts through the report file looking for the excerpts above, stores them in memory, and then scans through them to output a dbf with the from-zone (I), to-zone (J), and the operator. This is multi-threaded, so on my 8-core beast, it runs very fast.
The Github repository is here.
Now, on to mode choice…