diff --git a/brouter-server/src/main/java/btools/server/BRouter.java b/brouter-server/src/main/java/btools/server/BRouter.java index dbfff6d81..3788e51aa 100644 --- a/brouter-server/src/main/java/btools/server/BRouter.java +++ b/brouter-server/src/main/java/btools/server/BRouter.java @@ -1,11 +1,7 @@ package btools.server; -import java.io.BufferedOutputStream; -import java.io.DataOutputStream; import java.io.File; -import java.io.FileOutputStream; import java.net.URLDecoder; -import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -14,11 +10,10 @@ import btools.router.RoutingContext; import btools.router.RoutingEngine; import btools.router.RoutingParamCollector; -import btools.router.SearchBoundary; public class BRouter { public static void main(String[] args) throws Exception { - if (args.length == 3) { // cgi-input-mode + if (args.length == 3 || args.length == 4) { // cgi-input-mode try { System.setProperty("segmentBaseDir", args[0]); System.setProperty("profileBaseDir", args[1]); @@ -28,7 +23,7 @@ public static void main(String[] args) throws Exception { int lonIdx = queryString.indexOf("lonlats="); int sepIdx = queryString.indexOf("&", lonIdx); - String lonlats = queryString.substring(lonIdx+8, sepIdx); + String lonlats = queryString.substring(lonIdx + 8, sepIdx); RoutingContext rc = new RoutingContext(); RoutingParamCollector routingParamCollector = new RoutingParamCollector(); @@ -37,10 +32,14 @@ public static void main(String[] args) throws Exception { Map params = routingParamCollector.getUrlParams(queryString); routingParamCollector.setParams(rc, wplist, params); - // cgi-header - System.out.println("Content-type: text/plain"); - System.out.println(); - + String exportName = null; + if (args.length == 4) { + exportName = args[3]; + } else { + // cgi-header + System.out.println("Content-type: text/plain"); + System.out.println(); + } long maxRunningTime = 60000; // the cgi gets a 1 Minute timeout String sMaxRunningTime = System.getProperty("maxRunningTime"); @@ -48,9 +47,7 @@ public static void main(String[] args) throws Exception { maxRunningTime = Integer.parseInt(sMaxRunningTime) * 1000; } - - RoutingEngine re = new RoutingEngine(null, null, new File(args[0]), wplist, rc); - + RoutingEngine re = new RoutingEngine(exportName, null, new File(args[0]), wplist, rc); re.doRun(maxRunningTime); if (re.getErrorMessage() != null) { System.out.println(re.getErrorMessage()); @@ -65,96 +62,53 @@ public static void main(String[] args) throws Exception { System.out.println("Find routes in an OSM map"); System.out.println("usage: java -jar brouter.jar [parameter-list] [profile-parameter-list] "); System.out.println(" or: java -cp %CLASSPATH% btools.server.BRouter > [parameter-list] [profile-parameter-list]"); - System.out.println(" or: java -jar brouter.jar "); + System.out.println(" or: java -jar brouter.jar [output-filename]"); System.exit(0); } - RoutingEngine re = null; - if ("seed".equals(args[3])) { - List wplist = new ArrayList<>(); - wplist.add(readPosition(args, 1, "from")); - int searchRadius = Integer.parseInt(args[4]); // if = 0 search a 5x5 square - - String filename = SearchBoundary.getFileName(wplist.get(0)); - DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("traffic/" + filename))); - - for (int direction = 0; direction < 8; direction++) { - RoutingContext rc = readRoutingContext(args); - SearchBoundary boundary = new SearchBoundary(wplist.get(0), searchRadius, direction / 2); - rc.trafficOutputStream = dos; - rc.inverseDirection = (direction & 1) != 0; - re = new RoutingEngine("mytrack", "mylog", new File(args[0]), wplist, rc); - re.boundary = boundary; - re.airDistanceCostFactor = rc.trafficDirectionFactor; - rc.countTraffic = true; - re.doSearch(); - if (re.getErrorMessage() != null) { - break; - } - } - dos.close(); - } else { - int engineMode = 0; - try { - engineMode = Integer.parseInt(args[2]); - } catch (NumberFormatException e) { - } - RoutingParamCollector routingParamCollector = new RoutingParamCollector(); - List wplist = routingParamCollector.getWayPointList(args[4]); - - System.setProperty("segmentBaseDir", args[0]); - System.setProperty("profileBaseDir", args[1]); - String moreParams = null; - String profileParams = null; - if (args.length >= 6) { - moreParams = args[5]; - } - if (args.length == 7) { - profileParams = args[6]; - } - - RoutingContext rc = new RoutingContext(); - rc.localFunction = args[3]; - if (moreParams != null) { - Map params = routingParamCollector.getUrlParams(moreParams); - routingParamCollector.setParams(rc, wplist, params); - } - if (profileParams != null) { - Map params = routingParamCollector.getUrlParams(profileParams); - routingParamCollector.setProfileParams(rc, params); - } - try { - if (engineMode==RoutingEngine.BROUTER_ENGINEMODE_GETELEV) { - re = new RoutingEngine("testinfo", null, new File(args[0]), wplist, rc, engineMode); - } else { - re = new RoutingEngine("testtrack", null, new File(args[0]), wplist, rc, engineMode); - } - re.doRun(0); - } catch (Exception e) { - System.out.println(e.getMessage()); - } + int engineMode = 0; + try { + engineMode = Integer.parseInt(args[2]); + } catch (NumberFormatException e) { } - } + RoutingParamCollector routingParamCollector = new RoutingParamCollector(); + List wplist = routingParamCollector.getWayPointList(args[4]); - private static OsmNodeNamed readPosition(String[] args, int idx, String name) { - OsmNodeNamed n = new OsmNodeNamed(); - n.name = name; - n.ilon = (int) ((Double.parseDouble(args[idx]) + 180.) * 1000000. + 0.5); - n.ilat = (int) ((Double.parseDouble(args[idx + 1]) + 90.) * 1000000. + 0.5); - return n; - } + System.setProperty("segmentBaseDir", args[0]); + System.setProperty("profileBaseDir", args[1]); + String moreParams = null; + String profileParams = null; + if (args.length >= 6) { + moreParams = args[5]; + } + if (args.length == 7) { + profileParams = args[6]; + } - private static RoutingContext readRoutingContext(String[] args) { - RoutingContext c = new RoutingContext(); - if (args.length > 5) { - c.localFunction = args[5]; - if (args.length > 6) { - c.setAlternativeIdx(Integer.parseInt(args[6])); + RoutingContext rc = new RoutingContext(); + rc.localFunction = args[3]; + if (moreParams != null) { + Map params = routingParamCollector.getUrlParams(moreParams); + routingParamCollector.setParams(rc, wplist, params); + } + if (profileParams != null) { + Map params = routingParamCollector.getUrlParams(profileParams); + routingParamCollector.setProfileParams(rc, params); + } + try { + RoutingEngine re = null; + if (engineMode == RoutingEngine.BROUTER_ENGINEMODE_GETELEV) { + re = new RoutingEngine("testinfo", null, new File(args[0]), wplist, rc, engineMode); + } else { + re = new RoutingEngine("testtrack", null, new File(args[0]), wplist, rc, engineMode); } + re.doRun(0); + } catch (Exception e) { + System.out.println(e.getMessage()); } - c.memoryclass = (int) (Runtime.getRuntime().maxMemory() / 1024 / 1024); - // c.startDirection= Integer.valueOf( 150 ); - return c; + } + + }