ns2/Converter.java

Go to the documentation of this file.
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         // parse parameters
00020         Parameter param = null;
00021         try {
00022             param = Parser.parse(args);
00023         } catch (IllegalArgumentException e) {
00024             System.err.println(e);
00025             help();
00026         }
00027         // call constructor
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         // 1. get net
00065         List<Edge> edges = new LinkedList<Edge>();
00066         Map<String, Junction> junctions = new HashMap<String, Junction>();
00067         NetReader.read(net, edges, junctions);
00068         
00069         // 2. translate net
00070         NetTranslater.translate(edges, junctions);
00071         
00072         // 3. get all vehicles (IDs, first occurence, last occurence)
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         // 4. filter vehicles (intersection: [first occurence, last occurence], [begin time, end time]
00079         List<String> wantedVehicle = new LinkedList<String>(vehicleId);
00080         VehicleFilter.filter(vehicleId, wantedVehicle, vehicleFirstOcc, vehicleLastOcc, begin, end);
00081         
00082         // 5. Randomize new id
00083         List<String> vehicleNewId = new LinkedList<String>();
00084         IdRandomizer.randomize(wantedVehicle, vehicleNewId, seed);
00085         
00086         // 6. write mobility file (contains every movement of all (wanted) vehicles
00087         MobilityWriter.write(trace, mobility, wantedVehicle, vehicleNewId, edges, begin, end, penetration, hasPenetration);
00088         
00089         // 7. write activity file (contains first and last occurence of all (wanted -> filtered) vehicles
00090         ActivityWriter.write(activity, wantedVehicle, vehicleNewId, vehicleFirstOcc, vehicleLastOcc, begin, penetration, hasPenetration);
00091 
00092         // 8. write config file (contains statical information about simulation)
00093         ConfigWriter.write(config, activity, mobility, edges, wantedVehicle, vehicleFirstOcc, vehicleLastOcc, begin, penetration, hasPenetration);
00094     }
00095 }

Generated on Wed May 5 00:06:28 2010 for Sumo - Simulation of Urban MObility by  doxygen 1.5.6