From e49e039d735a8f80e7cf3969f8c94854da1735bc Mon Sep 17 00:00:00 2001 From: afischerdev Date: Mon, 6 Mar 2023 18:39:35 +0100 Subject: [PATCH] clean up gpx outputs --- .../src/main/java/btools/router/OsmTrack.java | 238 ++++++++++-------- 1 file changed, 137 insertions(+), 101 deletions(-) diff --git a/brouter-core/src/main/java/btools/router/OsmTrack.java b/brouter-core/src/main/java/btools/router/OsmTrack.java index fd36362..c57836a 100644 --- a/brouter-core/src/main/java/btools/router/OsmTrack.java +++ b/brouter-core/src/main/java/btools/router/OsmTrack.java @@ -627,6 +627,8 @@ public final class OsmTrack { sb.append(" \n"); } + + // all points sb.append(" \n"); String lastway = ""; boolean bNextDirect = false; @@ -644,108 +646,57 @@ public final class OsmTrack { } boolean bNeedHeader = false; - if (turnInstructionMode == 9 || turnInstructionMode == 2) // trkpt/sym style // locus style new - { - if (hint != null) { - if (turnInstructionMode == 9) { - if (mwpt != null && !mwpt.name.startsWith("via")) { - sele += "" + mwpt.name + ""; - } - sele += "" + hint.getMessageString() + ""; - sele += "" + hint.getCommandString(hint.cmd) + ""; - sele += ""; - if (showspeed) { - double speed = 0; - if (nn != null) { - int dist = n.calcDistance(nn); - float dt = n.getTime() - nn.getTime(); - if (dt != 0.f) { - speed = ((3.6f * dist) / dt + 0.5); - } - } - sele += "" + (((int) (speed * 10)) / 10.f) + ""; - } + if (turnInstructionMode == 9) { // trkpt/sym style - sele += "" + hint.getCommandString() + ";" + (int) (hint.distanceToNext) + "," + hint.formatGeometry() + ""; - if (n.message != null && n.message.wayKeyValues != null && !n.message.wayKeyValues.equals(lastway)) { - sele += "" + n.message.wayKeyValues + ""; - lastway = n.message.wayKeyValues; - } - if (n.message != null && n.message.nodeKeyValues != null) { - sele += "" + n.message.nodeKeyValues + ""; - } - sele += ""; - } else if (turnInstructionMode == 2) { - sele += "" + hint.getLocusSymbolString() + ""; + if (hint != null) { + + if (mwpt != null && + !mwpt.name.startsWith("via") && !mwpt.name.startsWith("from") && !mwpt.name.startsWith("end")) { + sele += "" + mwpt.name + ""; } - } - if (idx == 0) { - if (turnInstructionMode == 2) { - int pos = sele.indexOf(""; - if (mwpt != null && mwpt.direct) { - bNextDirect = true; - } - sele += "pass_place"; - sele += "Via"; - } else { - if (mwpt != null && mwpt.direct) { - sele += "beeline"; - } else { - sele += "start"; - } - sele += "Via"; - } - } else if (idx == nodes.size() - 1) { - if (turnInstructionMode == 2) { - int pos = sele.indexOf(""; - if (bNextDirect) { - sele += "beeline"; - } - sele += "pass_place"; - sele += "Via"; - } else { - sele += "end"; - sele += "Via"; - } - } else if (turnInstructionMode == 2) { + sele += "" + hint.getCruiserMessageString() + ""; + sele += "" + hint.getCommandString(hint.cmd) + ""; if (mwpt != null) { - if (sele.contains("sym") && - !sele.contains("name") && - !mwpt.name.startsWith("via")) { - int pos = sele.indexOf("" + mwpt.name + "" + sele.substring(pos) + "Via"; - } else if (sele.contains("sym") && mwpt.name.startsWith("via")) { - sele += "Via"; - } else if (mwpt.direct && bNextDirect) { - sele += "beelinepass_placeShaping"; - bNextDirect = true; - } else if (mwpt.direct) { - sele += "pass_placeShaping"; - bNextDirect = true; - } else if (mwpt.name.startsWith("via")) { - if (bNextDirect) { - sele += "beelinepass_placeShaping"; - } else { - sele += "pass_placeShaping"; - } - bNextDirect = false; - } else { - sele += "" + mwpt.name + ""; - sele += "pass_placeVia"; - } + sele += "Via"; } - } else if (turnInstructionMode == 9) { + sele += ""; + if (showspeed) { + double speed = 0; + if (nn != null) { + int dist = n.calcDistance(nn); + float dt = n.getTime() - nn.getTime(); + if (dt != 0.f) { + speed = ((3.6f * dist) / dt + 0.5); + } + } + sele += "" + (((int) (speed * 10)) / 10.f) + ""; + } + + sele += "" + hint.getCommandString() + ";" + (int) (hint.distanceToNext) + "," + hint.formatGeometry() + ""; + if (n.message != null && n.message.wayKeyValues != null && !n.message.wayKeyValues.equals(lastway)) { + sele += "" + n.message.wayKeyValues + ""; + lastway = n.message.wayKeyValues; + } + if (n.message != null && n.message.nodeKeyValues != null) { + sele += "" + n.message.nodeKeyValues + ""; + } + sele += ""; + + } + if (idx == 0 && hint == null) { + if (mwpt != null && mwpt.direct) { + sele += "beeline"; + } else { + sele += "start"; + } + sele += "Via"; + + } else if (idx == nodes.size() - 1 && hint == null) { + + sele += "end"; + sele += "Via"; + + } else { if (mwpt != null && hint == null) { if (mwpt.direct) { // bNextDirect = true; @@ -759,7 +710,7 @@ public final class OsmTrack { } - if (turnInstructionMode == 9 && hint == null) { + if (hint == null) { bNeedHeader = (showspeed || (n.message != null && n.message.wayKeyValues != null && !n.message.wayKeyValues.equals(lastway))) || (n.message != null && n.message.nodeKeyValues != null); if (bNeedHeader) { @@ -786,6 +737,88 @@ public final class OsmTrack { } } } + + if (turnInstructionMode == 2) { // locus style new + if (hint != null) { + if (mwpt != null) { + if (mwpt.direct && bNextDirect) { + sele += "" + hint.getLocusSymbolString() + "pass_placeShaping"; + // bNextDirect = false; + } else if (mwpt.direct) { + sele += "pass_placeShaping"; + bNextDirect = true; + } else if (bNextDirect) { + sele += "beeline" + hint.getLocusSymbolString() + "Shaping"; + bNextDirect = false; + } else { + sele += "" + hint.getLocusSymbolString() + ""; + } + } else { + sele += "" + hint.getLocusSymbolString() + ""; + } + } else { + if (idx == 0 && hint == null) { + + int pos = sele.indexOf(""; + if (mwpt != null && mwpt.direct) { + bNextDirect = true; + } + sele += "pass_place"; + sele += "Via"; + + } else if (idx == nodes.size() - 1 && hint == null) { + + int pos = sele.indexOf(""; + if (bNextDirect) { + sele += "beeline"; + } + sele += "pass_place"; + sele += "Via"; + + } else { + if (mwpt != null) { + if (sele.contains("sym") && + !sele.contains("name") && + !mwpt.name.startsWith("via") && + !mwpt.name.startsWith("from") && + !mwpt.name.startsWith("to")) { + int pos = sele.indexOf("" + mwpt.name + "" + sele.substring(pos) + "Via"; + } else if (sele.contains("sym") && mwpt.name.startsWith("via")) { + sele += "Via"; + } else if (mwpt.direct && bNextDirect) { + sele += "beelinepass_placeShaping"; + } else if (mwpt.direct) { + sele += "pass_placeShaping"; + bNextDirect = true; + } else if (mwpt.name.startsWith("via") || + mwpt.name.startsWith("from") || + mwpt.name.startsWith("to")) { + if (bNextDirect) { + sele += "beelinepass_placeShaping"; + } else { + sele += "pass_placeShaping"; + } + bNextDirect = false; + } else { + sele += "" + mwpt.name + ""; + sele += "pass_placeVia"; + } + } + } + } + } sb.append(" ").append(sele).append("\n"); @@ -1263,11 +1296,14 @@ public final class OsmTrack { input.indexInTrack = --nodeNr; input.goodWay = node.message; input.oldWay = node.origin.message == null ? node.message : node.origin.message; - if (rc.turnInstructionMode == 8) { + if (rc.turnInstructionMode == 8 || + rc.turnInstructionMode == 4 || + rc.turnInstructionMode == 2 || + rc.turnInstructionMode == 9) { MatchedWaypoint mwpt = getMatchedWaypoint(nodeNr); if (mwpt != null && mwpt.direct) { input.cmd = VoiceHint.BL; - input.angle = (float) node.message.turnangle; + input.angle = (float) (nodeNr == 0 ? node.origin.message.turnangle : node.message.turnangle); input.distanceToNext = node.calcDistance(node.origin); } }