/* *********************************************************************** * * project: org.matsim.* * *********************************************************************** * * * * copyright : (C) 2016 by the members listed in the COPYING, * * LICENSE and WARRANTY file. * * email : info at matsim dot org * * * * *********************************************************************** * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * See also COPYING, LICENSE and WARRANTY file * * * * *********************************************************************** */ package org.matsim.pt2matsim.run; import org.matsim.core.utils.geometry.CoordinateTransformation; import org.matsim.core.utils.geometry.transformations.IdentityTransformation; import org.matsim.core.utils.geometry.transformations.TransformationFactory; import org.matsim.pt.transitSchedule.api.TransitSchedule; import org.matsim.pt2matsim.osm.OsmTransitScheduleConverter; import org.matsim.pt2matsim.osm.lib.OsmData; import org.matsim.pt2matsim.osm.lib.OsmDataImpl; import org.matsim.pt2matsim.osm.lib.OsmFileReader; import org.matsim.pt2matsim.tools.ScheduleTools; /** * @author polettif */ public final class Osm2TransitSchedule { private Osm2TransitSchedule() { } /** * Converts the available public transit data of an osm file to a MATSim transit schedule * @param args [0] osm file * [1] output schedule file * [2] output coordinate system (optional) */ public static void main(final String[] args) { if(args.length == 2) { run(args[0], args[1], null); } else if(args.length == 3) { run(args[0], args[1], args[2]); } else { throw new IllegalArgumentException("Wrong number of arguments"); } } public static void run(String osmFile, String outputScheduleFile, String outputCoordinateSystem) { TransitSchedule schedule = ScheduleTools.createSchedule(); CoordinateTransformation ct = outputCoordinateSystem != null ? TransformationFactory.getCoordinateTransformation("WGS84", outputCoordinateSystem) : new IdentityTransformation(); // load osm file OsmData osmData = new OsmDataImpl(); new OsmFileReader(osmData).readFile(osmFile); // convert osm data new OsmTransitScheduleConverter(osmData).convert(schedule, ct); // write file ScheduleTools.writeTransitSchedule(schedule, outputScheduleFile); } }