added export for corrected via points

This commit is contained in:
afischerdev 2025-04-05 18:08:46 +02:00
parent e3361cc113
commit 2682981da9
6 changed files with 24 additions and 0 deletions

View File

@ -61,7 +61,9 @@ public final class OsmTrack {
public String name = "unset"; public String name = "unset";
protected List<MatchedWaypoint> matchedWaypoints; protected List<MatchedWaypoint> matchedWaypoints;
protected List<OsmNodeNamed> correctedWaypoints;
public boolean exportWaypoints = false; public boolean exportWaypoints = false;
public boolean exportCorrectedWaypoints = false;
public void addNode(OsmPathElement node) { public void addNode(OsmPathElement node) {
nodes.add(0, node); nodes.add(0, node);

View File

@ -221,6 +221,7 @@ public final class RoutingContext {
public String outputFormat = "gpx"; public String outputFormat = "gpx";
public boolean exportWaypoints = false; public boolean exportWaypoints = false;
public boolean exportCorrectedWaypoints = false;
public OsmPrePath firstPrePath; public OsmPrePath firstPrePath;

View File

@ -41,6 +41,7 @@ public class RoutingEngine extends Thread {
private boolean finished = false; private boolean finished = false;
protected List<OsmNodeNamed> waypoints = null; protected List<OsmNodeNamed> waypoints = null;
protected List<OsmNodeNamed> correctedWaypoints = null;
List<OsmNodeNamed> extraWaypoints = null; List<OsmNodeNamed> extraWaypoints = null;
protected List<MatchedWaypoint> matchedWaypoints; protected List<MatchedWaypoint> matchedWaypoints;
private int linksProcessed = 0; private int linksProcessed = 0;
@ -262,6 +263,7 @@ public class RoutingEngine extends Thread {
} }
oldTrack = null; oldTrack = null;
track.exportWaypoints = routingContext.exportWaypoints; track.exportWaypoints = routingContext.exportWaypoints;
track.exportCorrectedWaypoints = routingContext.exportCorrectedWaypoints;
filename = outfileBase + i + "." + routingContext.outputFormat; filename = outfileBase + i + "." + routingContext.outputFormat;
switch (routingContext.outputFormat) { switch (routingContext.outputFormat) {
case "gpx": case "gpx":
@ -975,6 +977,10 @@ public class RoutingEngine extends Thread {
hasDirectRouting = true; hasDirectRouting = true;
} }
} }
for (MatchedWaypoint mwp : matchedWaypoints) {
//System.out.println(FormatGpx.getWaypoint(mwp.waypoint.ilon, mwp.waypoint.ilat, mwp.name, null));
//System.out.println(FormatGpx.getWaypoint(mwp.crosspoint.ilon, mwp.crosspoint.ilat, mwp.name+"_cp", null));
}
routingContext.hasDirectRouting = hasDirectRouting; routingContext.hasDirectRouting = hasDirectRouting;
@ -1030,6 +1036,7 @@ public class RoutingEngine extends Thread {
matchedWaypoints.get(matchedWaypoints.size() - 1).indexInTrack = totaltrack.nodes.size() - 1; matchedWaypoints.get(matchedWaypoints.size() - 1).indexInTrack = totaltrack.nodes.size() - 1;
totaltrack.matchedWaypoints = matchedWaypoints; totaltrack.matchedWaypoints = matchedWaypoints;
totaltrack.correctedWaypoints = correctedWaypoints;
totaltrack.processVoiceHints(routingContext); totaltrack.processVoiceHints(routingContext);
totaltrack.prepareSpeedProfile(routingContext); totaltrack.prepareSpeedProfile(routingContext);
@ -1183,6 +1190,13 @@ public class RoutingEngine extends Thread {
setNewVoiceHint(t, last, lastJunctions, newJunction, newTarget); setNewVoiceHint(t, last, lastJunctions, newJunction, newTarget);
if (correctedWaypoints == null) correctedWaypoints = new ArrayList<>();
OsmNodeNamed n = new OsmNodeNamed();
n.ilon = newJunction.getILon();
n.ilat = newJunction.getILat();
n.name = startWp.name + "_corr";
correctedWaypoints.add(n);
return true; return true;
} }
return false; return false;

View File

@ -227,6 +227,8 @@ public class RoutingParamCollector {
} }
} else if (key.equals("exportWaypoints")) { } else if (key.equals("exportWaypoints")) {
rctx.exportWaypoints = (Integer.parseInt(value) == 1); rctx.exportWaypoints = (Integer.parseInt(value) == 1);
} else if (key.equals("exportCorrectedWaypoints")) {
rctx.exportCorrectedWaypoints = (Integer.parseInt(value) == 1);
} else if (key.equals("format")) { } else if (key.equals("format")) {
rctx.outputFormat = ((String) value).toLowerCase(); rctx.outputFormat = ((String) value).toLowerCase();
} else if (key.equals("trackFormat")) { } else if (key.equals("trackFormat")) {

View File

@ -161,6 +161,7 @@ public class BRouterWorker {
track = cr.getFoundTrack(); track = cr.getFoundTrack();
if (track != null) { if (track != null) {
track.exportWaypoints = rc.exportWaypoints; track.exportWaypoints = rc.exportWaypoints;
track.exportCorrectedWaypoints = rc.exportCorrectedWaypoints;
if (pathToFileResult == null) { if (pathToFileResult == null) {
switch (writeFromat) { switch (writeFromat) {
case OUTPUT_FORMAT_KML: case OUTPUT_FORMAT_KML:

View File

@ -78,6 +78,10 @@ public class ServerHandler extends RequestHandler {
if (exportWaypointsStr != null && Integer.parseInt(exportWaypointsStr) != 0) { if (exportWaypointsStr != null && Integer.parseInt(exportWaypointsStr) != 0) {
track.exportWaypoints = true; track.exportWaypoints = true;
} }
exportWaypointsStr = params.get("exportCorrectedWaypoints");
if (exportWaypointsStr != null && Integer.parseInt(exportWaypointsStr) != 0) {
track.exportCorrectedWaypoints = true;
}
if (format == null || "gpx".equals(format)) { if (format == null || "gpx".equals(format)) {
result = new FormatGpx(rc).format(track); result = new FormatGpx(rc).format(track);