00001 package ns2;
00002
00003 import java.util.HashMap;
00004 import java.util.LinkedList;
00005 import java.util.List;
00006 import java.util.Map;
00007
00013 public class Converter {
00018 public static void convert(String[] args) {
00019
00020 Parameter param = null;
00021 try {
00022 param = Parser.parse(args);
00023 } catch (IllegalArgumentException e) {
00024 System.err.println(e);
00025 help();
00026 }
00027
00028 if (param != null) {
00029 new Converter(param.net, param.trace, param.activity, param.mobility, param.config, param.begin, param.end, param.penetration, param.seed, param.hasPenetration);
00030 } else {
00031 System.err.println("param == null");
00032 }
00033 }
00034
00040 private static void help() {
00041 System.out.println("needed options:");
00042 System.out.println("-n <sumo net.xml file>");
00043 System.out.println("-t <sumo netstate-dump file>");
00044 System.out.println("-a <output activity file>");
00045 System.out.println("-m <output mobility file>");
00046 System.out.println("-c <output config file]");
00047 System.out.println("-b <converting begin time>");
00048 System.out.println("-e <converting end time>");
00049 System.out.println("[ -p <penetration rate (0..1)> ] ");
00050 System.out.println("[ -s <seed for random numbers (used to determine fraction of equipped cars)> ] ");
00051 }
00052
00063 private Converter(String net, String trace, String activity, String mobility, String config, double begin, double end, double penetration, long seed, boolean hasPenetration) {
00064
00065 List<Edge> edges = new LinkedList<Edge>();
00066 Map<String, Junction> junctions = new HashMap<String, Junction>();
00067 NetReader.read(net, edges, junctions);
00068
00069
00070 NetTranslater.translate(edges, junctions);
00071
00072
00073 List<String> vehicleId = new LinkedList<String>();
00074 HashMap<String, Double> vehicleFirstOcc = new HashMap<String, Double>();
00075 HashMap<String, Double> vehicleLastOcc = new HashMap<String, Double>();
00076 VehicleReader.read(trace, vehicleId, vehicleFirstOcc, vehicleLastOcc);
00077
00078
00079 List<String> wantedVehicle = new LinkedList<String>(vehicleId);
00080 VehicleFilter.filter(vehicleId, wantedVehicle, vehicleFirstOcc, vehicleLastOcc, begin, end);
00081
00082
00083 List<String> vehicleNewId = new LinkedList<String>();
00084 IdRandomizer.randomize(wantedVehicle, vehicleNewId, seed);
00085
00086
00087 MobilityWriter.write(trace, mobility, wantedVehicle, vehicleNewId, edges, begin, end, penetration, hasPenetration);
00088
00089
00090 ActivityWriter.write(activity, wantedVehicle, vehicleNewId, vehicleFirstOcc, vehicleLastOcc, begin, penetration, hasPenetration);
00091
00092
00093 ConfigWriter.write(config, activity, mobility, edges, wantedVehicle, vehicleFirstOcc, vehicleLastOcc, begin, penetration, hasPenetration);
00094 }
00095 }