diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 00000000..39eee488
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,45 @@
+# Change Log
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](http://keepachangelog.com/)
+and this project adheres to [Semantic Versioning](http://semver.org/).
+
+Here we write upgrade notes. It's a team effort to make them as straightforward as possible.
+## [13.0.0] - 2024-10-07
+
+### Added
+- properties edgeid and edge key to isochrone match dto
+
+### Changed
+
+### Fixed
+- VirtualEdgeIteratorStateReverseExtractor throws class cast exception when VirtualEdgeIteratorState has an IteratorStateImpl member
+- QueryGraphWeightingAdapter was blocking non start virtual edges in reverse direction.
+
+## [12.0.0] - 2024-09-24
+
+### Added
+
+### Changed
+
+### Fixed
+- Correctly consider driving direction in isochrone when start point is on reversed link. Upstream links are now flipped
+ on the library side instead of nls-routing-api, making this change breaking.
+
+## [11.1.0] - 2024-09-13
+
+### Added
+- Add reverse link ID to GraphHopper network for FCD segments
+
+### Changed
+
+### Fixed
+
+## [11.0.1] - 2024-09-06
+
+### Added
+- MINOR Added this changelog file
+
+### Changed
+
+### Fixed
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index f73ba909..9208cfc8 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -20,5 +20,5 @@ extends:
jdkVersion: 1.21
mavenReleaseGoal: deploy
sonarOptionalCoverageExclusions: '**/config/**'
- sonarOptionalExclusions: '**/graphhopper/isochrone/ShortestPathTree.java,**/graphhopper/routing/PathRouter.java'
+ sonarOptionalExclusions: '**/graphhopper/isochrone/ShortestPathTree.java,**/graphhopper/routing/PathRouter.java,**/graphhopper/routing/querygraph/VirtualEdgeIteratorStateReverseExtractor.java'
pushToGitHub: true
diff --git a/map-matcher-geometry/pom.xml b/map-matcher-geometry/pom.xml
index 5f8ae51d..ad90dfb2 100644
--- a/map-matcher-geometry/pom.xml
+++ b/map-matcher-geometry/pom.xml
@@ -6,7 +6,7 @@
nu.ndw.nls
routing-map-matcher-parent
- 10.0.3-SNAPSHOT
+ 13.0.2-SNAPSHOT
routing-map-matcher-geometry
diff --git a/map-matcher-library/pom.xml b/map-matcher-library/pom.xml
index 6a527642..4aa7e21f 100644
--- a/map-matcher-library/pom.xml
+++ b/map-matcher-library/pom.xml
@@ -4,7 +4,7 @@
nu.ndw.nls
routing-map-matcher-parent
- 10.0.3-SNAPSHOT
+ 13.0.2-SNAPSHOT
4.0.0
routing-map-matcher-library
diff --git a/map-matcher-library/src/main/java/com/graphhopper/routing/PathRouter.java b/map-matcher-library/src/main/java/com/graphhopper/routing/PathRouter.java
index fed26f82..b69d50c1 100644
--- a/map-matcher-library/src/main/java/com/graphhopper/routing/PathRouter.java
+++ b/map-matcher-library/src/main/java/com/graphhopper/routing/PathRouter.java
@@ -26,7 +26,7 @@ public class PathRouter extends Router {
public PathRouter(BaseGraph graph, EncodingManager encodingManager,
LocationIndex locationIndex,
- Map profilesByName,
+ Map profilesByName,
PathDetailsBuilderFactory pathDetailsBuilderFactory,
TranslationMap translationMap, RouterConfig routerConfig,
WeightingFactory weightingFactory,
diff --git a/map-matcher-library/src/main/java/com/graphhopper/routing/querygraph/QueryGraphWeightingAdapter.java b/map-matcher-library/src/main/java/com/graphhopper/routing/querygraph/QueryGraphWeightingAdapter.java
index 9313bb2e..c0f707f0 100644
--- a/map-matcher-library/src/main/java/com/graphhopper/routing/querygraph/QueryGraphWeightingAdapter.java
+++ b/map-matcher-library/src/main/java/com/graphhopper/routing/querygraph/QueryGraphWeightingAdapter.java
@@ -18,7 +18,10 @@
package com.graphhopper.routing.querygraph;
+import static nu.ndw.nls.routingmapmatcher.network.model.Link.WAY_ID_KEY;
+
import com.carrotsearch.hppc.IntArrayList;
+import com.graphhopper.routing.util.EncodingManager;
import com.graphhopper.routing.weighting.QueryGraphWeighting;
import com.graphhopper.routing.weighting.Weighting;
import com.graphhopper.storage.EdgeIteratorStateReverseExtractor;
@@ -34,14 +37,18 @@ public class QueryGraphWeightingAdapter extends QueryGraphWeighting {
private final boolean isSearchDirectionReversed;
private final EdgeIteratorStateReverseExtractor edgeIteratorStateReverseExtractor;
private final int firstVirtualEdgeId;
+ private final int startSegmentLinkId;
+ private final EncodingManager encodingManager;
public QueryGraphWeightingAdapter(Weighting weighting, int firstVirtualNodeId, int firstVirtualEdgeId,
IntArrayList closestEdges, EdgeIteratorStateReverseExtractor edgeIteratorStateReverseExtractor,
- boolean isSearchDirectionReversed) {
+ boolean isSearchDirectionReversed, int startSegmentLinkId, EncodingManager encodingManager) {
super(weighting, firstVirtualNodeId, firstVirtualEdgeId, closestEdges);
this.isSearchDirectionReversed = isSearchDirectionReversed;
this.edgeIteratorStateReverseExtractor = edgeIteratorStateReverseExtractor;
this.firstVirtualEdgeId = firstVirtualEdgeId;
+ this.startSegmentLinkId = startSegmentLinkId;
+ this.encodingManager = encodingManager;
}
@Override
@@ -49,24 +56,40 @@ public double calcEdgeWeight(EdgeIteratorState edgeState, boolean reverse) {
// With bidirectional start segments, the search goes two ways for both down and upstream isochrones.
// The branches that are starting in the wrong direction of travelling (as determined by the nearest
// match) are filtered out.
- if (isVirtualEdge(edgeState.getEdge())
- && edgeIteratorStateReverseExtractor.hasReversed(edgeState) != isSearchDirectionReversed) {
+ if (isVirtualEdge(edgeState.getEdge()) && searchDirectionIsCorrect(edgeState) && isStartSegment(edgeState)) {
return Double.POSITIVE_INFINITY;
}
return super.calcEdgeWeight(edgeState, reverse);
}
+ private boolean isStartSegment(EdgeIteratorState edgeState) {
+ return startSegmentLinkId == getLinkId(edgeState);
+ }
+
+ private boolean searchDirectionIsCorrect(EdgeIteratorState edgeState) {
+ return edgeIteratorStateReverseExtractor.hasReversed(edgeState) != isSearchDirectionReversed;
+ }
+
private boolean isVirtualEdge(int edge) {
return edge >= this.firstVirtualEdgeId;
}
+ private int getLinkId(EdgeIteratorState edge) {
+ return edge.get(encodingManager.getIntEncodedValue(WAY_ID_KEY));
+ }
+
public static QueryGraphWeightingAdapter fromQueryGraph(Weighting baseWeighting, QueryGraph queryGraph,
- EdgeIteratorStateReverseExtractor edgeIteratorStateReverseExtractor, boolean reverseFlow) {
+ EdgeIteratorStateReverseExtractor edgeIteratorStateReverseExtractor, boolean reverseFlow, int matchedLinkId,
+ EncodingManager encodingManager) {
return new QueryGraphWeightingAdapter(baseWeighting,
queryGraph.getBaseGraph().getNodes(),
- queryGraph.getBaseGraph().getEdges(), queryGraph
- .getQueryOverlay()
- .getClosestEdges(),
- edgeIteratorStateReverseExtractor, reverseFlow);
+ queryGraph.getBaseGraph().getEdges(),
+ queryGraph
+ .getQueryOverlay()
+ .getClosestEdges(),
+ edgeIteratorStateReverseExtractor,
+ reverseFlow,
+ matchedLinkId,
+ encodingManager);
}
}
diff --git a/map-matcher-library/src/main/java/com/graphhopper/routing/querygraph/VirtualEdgeIteratorStateReverseExtractor.java b/map-matcher-library/src/main/java/com/graphhopper/routing/querygraph/VirtualEdgeIteratorStateReverseExtractor.java
index d332c06e..cb5e978b 100644
--- a/map-matcher-library/src/main/java/com/graphhopper/routing/querygraph/VirtualEdgeIteratorStateReverseExtractor.java
+++ b/map-matcher-library/src/main/java/com/graphhopper/routing/querygraph/VirtualEdgeIteratorStateReverseExtractor.java
@@ -1,9 +1,12 @@
package com.graphhopper.routing.querygraph;
+import static com.graphhopper.storage.EdgeIteratorStateReverseExtractor.getEdgeIteratorStateImpl;
+
import com.graphhopper.util.EdgeIteratorState;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import lombok.SneakyThrows;
+
/**
* The geometry direction of the edge iterator wayGeometry does not necessarily reflect the direction of a street or the
* original encoded geometry direction. It is just the direction of the exploration of the graph. GraphHopper sometimes
@@ -11,25 +14,26 @@
* problems with the bearing and fraction calculation as well as the determination whether the travelling direction is
* reversed with respect to the original geometry direction for bidirectional road segments. To fix this an internal
* attribute of the edge iterator state is used indicating it has done so or not. Since this attribute is package
- * private the same package structure is used.
- * The class is for handling specific VirtualEdgeIteratorState and VirtualEdgeIterator implementations
- * The VirtualEdgeIterator is package private so this class has to be in com.graphhopper.routing.querygraph
- * to access it.
+ * private the same package structure is used. The class is for handling specific VirtualEdgeIteratorState and
+ * VirtualEdgeIterator implementations The VirtualEdgeIterator is package private so this class has to be in
+ * com.graphhopper.routing.querygraph to access it.
*
* @see Edge direction problem
* @see Understanding edge directions
*/
public final class VirtualEdgeIteratorStateReverseExtractor {
- private VirtualEdgeIteratorStateReverseExtractor(){
+
+ private VirtualEdgeIteratorStateReverseExtractor() {
//static class
}
+
@SneakyThrows
public static boolean hasReversed(EdgeIteratorState closestEdge) {
if (closestEdge instanceof VirtualEdgeIteratorState virtualEdgeIteratorState) {
return extractReversedFromVirtualEdge(virtualEdgeIteratorState);
} else if (closestEdge instanceof VirtualEdgeIterator virtualEdgeIterator) {
return extractReversedFromVirtualEdge(extractEdgeIteratorStateFromVirtualEdgeIterator(virtualEdgeIterator));
- }else {
+ } else {
throw new IllegalArgumentException(
"This method can only be called with an EdgeIterable,VirtualEdgeIteratorState "
+ "or VirtualEdgeIterator"
@@ -38,18 +42,30 @@ public static boolean hasReversed(EdgeIteratorState closestEdge) {
}
}
- private static boolean extractReversedFromVirtualEdge(VirtualEdgeIteratorState closestEdge)
+ private static boolean extractReversedFromVirtualEdge(EdgeIteratorState closestEdge)
throws NoSuchFieldException, IllegalAccessException {
Field field = closestEdge.getClass().getDeclaredField("reverse"); //NoSuchFieldException
field.setAccessible(true);
return (boolean) field.get(closestEdge);
}
+ /**
+ * The virtual-edge iterator is a wrapper class around a list of edgeIterator states and can contain both
+ * IteratorStateImpl and VirtualEdgeIteratorState in its list.
+ *
+ * @param virtualEdgeIterator
+ * @return EdgeIteratorState
+ */
@SneakyThrows
- private static VirtualEdgeIteratorState extractEdgeIteratorStateFromVirtualEdgeIterator(
+ private static EdgeIteratorState extractEdgeIteratorStateFromVirtualEdgeIterator(
VirtualEdgeIterator virtualEdgeIterator) {
Method method = virtualEdgeIterator.getClass().getDeclaredMethod("getCurrentEdge");
method.setAccessible(true);
- return (VirtualEdgeIteratorState) method.invoke(virtualEdgeIterator);
+ EdgeIteratorState edgeIteratorState = (EdgeIteratorState) method.invoke(virtualEdgeIterator);
+ if (edgeIteratorState instanceof VirtualEdgeIteratorState virtualEdgeIteratorState) {
+ return virtualEdgeIteratorState;
+ } else {
+ return getEdgeIteratorStateImpl(edgeIteratorState);
+ }
}
}
diff --git a/map-matcher-library/src/main/java/com/graphhopper/storage/EdgeIteratorStateReverseExtractor.java b/map-matcher-library/src/main/java/com/graphhopper/storage/EdgeIteratorStateReverseExtractor.java
index db709276..b1ce1b29 100644
--- a/map-matcher-library/src/main/java/com/graphhopper/storage/EdgeIteratorStateReverseExtractor.java
+++ b/map-matcher-library/src/main/java/com/graphhopper/storage/EdgeIteratorStateReverseExtractor.java
@@ -26,7 +26,17 @@ public boolean hasReversed(EdgeIteratorState closestEdge) {
return edgeIterable.reverse;
} else {
return VirtualEdgeIteratorStateReverseExtractor.hasReversed(closestEdge);
+ }
+ }
+
+ public static EdgeIteratorState getEdgeIteratorStateImpl(EdgeIteratorState closestEdge) {
+ if (closestEdge instanceof EdgeIteratorStateImpl edgeIterable) {
+ return edgeIterable;
+ } else {
+ throw new IllegalArgumentException(
+ "This method can only be called with an EdgeIteratorStateImpl instance of EdgeIteratorState %s".formatted(
+ closestEdge));
}
}
}
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/isochrone/IsochroneService.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/isochrone/IsochroneService.java
index c522d60d..74ab219b 100644
--- a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/isochrone/IsochroneService.java
+++ b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/isochrone/IsochroneService.java
@@ -2,7 +2,6 @@
import static java.util.Comparator.comparing;
import static nu.ndw.nls.routingmapmatcher.network.model.Link.WAY_ID_KEY;
-import static nu.ndw.nls.routingmapmatcher.util.PathUtil.determineEdgeDirection;
import com.graphhopper.config.Profile;
import com.graphhopper.routing.ev.DecimalEncodedValue;
@@ -11,7 +10,6 @@
import com.graphhopper.routing.util.EncodingManager;
import com.graphhopper.routing.util.TraversalMode;
import com.graphhopper.storage.BaseGraph;
-import com.graphhopper.storage.EdgeIteratorStateReverseExtractor;
import com.graphhopper.storage.index.LocationIndexTree;
import com.graphhopper.storage.index.Snap;
import com.graphhopper.util.EdgeIteratorState;
@@ -22,7 +20,6 @@
import nu.ndw.nls.routingmapmatcher.isochrone.algorithm.IsochroneByTimeDistanceAndWeight;
import nu.ndw.nls.routingmapmatcher.isochrone.algorithm.ShortestPathTreeFactory;
import nu.ndw.nls.routingmapmatcher.isochrone.mappers.IsochroneMatchMapper;
-import nu.ndw.nls.routingmapmatcher.model.EdgeIteratorTravelDirection;
import nu.ndw.nls.routingmapmatcher.model.IsochroneMatch;
import nu.ndw.nls.routingmapmatcher.model.IsochroneUnit;
import nu.ndw.nls.routingmapmatcher.model.base.BaseLocation;
@@ -37,7 +34,6 @@ public class IsochroneService {
private static final int MILLISECONDS = 1000;
private final EncodingManager encodingManager;
private final BaseGraph baseGraph;
- private final EdgeIteratorStateReverseExtractor edgeIteratorStateReverseExtractor;
private final IsochroneMatchMapper isochroneMatchMapper;
private final ShortestPathTreeFactory shortestPathTreeFactory;
private final LocationIndexTree locationIndexTree;
@@ -86,24 +82,24 @@ private List getIsochroneMatches(Point startPoint, int matchedLi
// It also sets the closestNode of the matchedQueryResult to the virtual node ID. In this way, it creates a
// start point for isochrone calculation based on the snapped point coordinates.
QueryGraph queryGraph = QueryGraph.create(baseGraph, startSegment);
- boolean searchDirectionIsReversed = reversed != reverseFlow;
IsochroneByTimeDistanceAndWeight isochrone = shortestPathTreeFactory
.createShortestPathTreeByTimeDistanceAndWeight(null, queryGraph, TraversalMode.EDGE_BASED,
- isochroneValue, isochroneUnit, searchDirectionIsReversed);
+ isochroneValue, isochroneUnit, reverseFlow, reversed, matchedLinkId);
// Here the closestNode is the virtual node ID created by the queryGraph.lookup.
List isoLabels = new ArrayList<>();
isochrone.search(startSegment.getClosestNode(), isoLabels::add);
boolean searchDirectionReversed = reversed != reverseFlow;
EdgeIteratorState startEdge = startSegment.getClosestEdge();
return isoLabels.stream()
- .filter(isoLabel -> ! isoLabel.isRoot())
+ .filter(isoLabel -> !isoLabel.isRoot())
.sorted(comparing(IsoLabel::getDistance))
.map(isoLabel -> {
// Specify the maximum distance on which to crop the geometries.
// In the case of seconds, convert to meters based on the average speed of the iso label.
double maxDistance = IsochroneUnit.METERS == isochroneUnit ? isochroneValue
: calculateMaxDistance(queryGraph, isochroneValue, isoLabel, searchDirectionReversed);
- return isochroneMatchMapper.mapToIsochroneMatch(isoLabel, maxDistance, queryGraph, startEdge);
+ return isochroneMatchMapper.mapToIsochroneMatch(isoLabel, maxDistance, queryGraph, startEdge,
+ reverseFlow);
})
.toList();
}
@@ -135,7 +131,7 @@ private double calculateMaxDistance(QueryGraph queryGraph, double maximumTimeInS
private double getAverageSpeedFromEdge(EdgeIteratorState currentEdge, boolean useSpeedFromReversedDirection) {
DecimalEncodedValue vehicleSpeedDecimalEncodedValue = encodingManager.getDecimalEncodedValue(
- VehicleSpeed.key(profile.getVehicle()));
+ VehicleSpeed.key(profile.getName()));
if (useSpeedFromReversedDirection) {
return currentEdge.getReverse(vehicleSpeedDecimalEncodedValue);
}
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/isochrone/algorithm/ShortestPathTreeFactory.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/isochrone/algorithm/ShortestPathTreeFactory.java
index 27e70793..c721ce18 100644
--- a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/isochrone/algorithm/ShortestPathTreeFactory.java
+++ b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/isochrone/algorithm/ShortestPathTreeFactory.java
@@ -2,6 +2,7 @@
import com.graphhopper.routing.querygraph.QueryGraph;
import com.graphhopper.routing.querygraph.QueryGraphWeightingAdapter;
+import com.graphhopper.routing.util.EncodingManager;
import com.graphhopper.routing.util.TraversalMode;
import com.graphhopper.routing.weighting.Weighting;
import com.graphhopper.storage.EdgeIteratorStateReverseExtractor;
@@ -15,21 +16,16 @@ public class ShortestPathTreeFactory {
private static final int MILLISECONDS = 1000;
private final Weighting defaultWeighting;
+ private final EncodingManager encodingManager;
public IsochroneByTimeDistanceAndWeight createShortestPathTreeByTimeDistanceAndWeight(Weighting weighting,
- QueryGraph queryGraph,
- TraversalMode traversalMode,
- double isochroneValue,
- IsochroneUnit isochroneUnit,
- boolean isSearchDirectionReversed
- ) {
-
+ QueryGraph queryGraph, TraversalMode traversalMode, double isochroneValue, IsochroneUnit isochroneUnit,
+ boolean reverseFlow, boolean reversed, int matchedLinkId) {
Weighting baseWeighting = weighting == null ? this.defaultWeighting : weighting;
Weighting queryGraphWeighting = QueryGraphWeightingAdapter.fromQueryGraph(baseWeighting, queryGraph,
- new EdgeIteratorStateReverseExtractor(),isSearchDirectionReversed);
+ new EdgeIteratorStateReverseExtractor(), reverseFlow != reversed, matchedLinkId, encodingManager);
IsochroneByTimeDistanceAndWeight isochrone = new IsochroneByTimeDistanceAndWeight(queryGraph,
- queryGraphWeighting, isSearchDirectionReversed,
- traversalMode);
+ queryGraphWeighting, reverseFlow, traversalMode);
if (isochroneUnit == IsochroneUnit.METERS) {
isochrone.setDistanceLimit(isochroneValue);
} else if (isochroneUnit == IsochroneUnit.SECONDS) {
@@ -39,5 +35,4 @@ public IsochroneByTimeDistanceAndWeight createShortestPathTreeByTimeDistanceAndW
}
return isochrone;
}
-
}
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/isochrone/mappers/IsochroneMatchMapper.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/isochrone/mappers/IsochroneMatchMapper.java
index 53fa41cf..27e529a4 100644
--- a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/isochrone/mappers/IsochroneMatchMapper.java
+++ b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/isochrone/mappers/IsochroneMatchMapper.java
@@ -1,9 +1,9 @@
package nu.ndw.nls.routingmapmatcher.isochrone.mappers;
+import static nu.ndw.nls.routingmapmatcher.network.model.Link.REVERSED_LINK_ID;
import static nu.ndw.nls.routingmapmatcher.network.model.Link.WAY_ID_KEY;
-import com.graphhopper.routing.ev.IntEncodedValue;
import com.graphhopper.routing.querygraph.QueryGraph;
import com.graphhopper.routing.util.EncodingManager;
import com.graphhopper.storage.EdgeIteratorStateReverseExtractor;
@@ -29,17 +29,17 @@ public class IsochroneMatchMapper {
* Maps an IsoLabel to an IsochroneMatch with cropped geometries aligned to travelling direction and respective
* start and end fractions.
*
- * @param isoLabel the iso label to map
+ * @param isoLabel the iso label to map
+ * @param reverseFlow whether the isochrone path is upstream (true) or downstream (false)
* @return an instance of IsochroneMatch
*/
public IsochroneMatch mapToIsochroneMatch(IsoLabel isoLabel, double maxDistance, QueryGraph queryGraph,
- EdgeIteratorState startEdge) {
+ EdgeIteratorState startEdge, boolean reverseFlow) {
EdgeIteratorState currentEdge = queryGraph.getEdgeIteratorState(isoLabel.getEdge(), isoLabel.getNode());
// Here, the reversed boolean indicates the direction of travelling along the edge with respect to the original
// alignment of the geometry (can be backward for bidirectional edges or for upstream isochrone searches).
boolean reversed = edgeIteratorStateReverseExtractor.hasReversed(currentEdge);
- IntEncodedValue idEnc = encodingManager.getIntEncodedValue(WAY_ID_KEY);
- int matchedLinkId = currentEdge.get(idEnc);
+ int matchedLinkId = getLinkIdInDirection(currentEdge, reversed, reverseFlow);
double totalDistanceTravelled = isoLabel.getDistance();
// This is the entire way geometry, except for the start segment, which is split up at the start point.
LineString isoLabelWayGeometry = pointListUtil.toLineString(currentEdge.fetchWayGeometry(FetchMode.ALL));
@@ -48,7 +48,7 @@ public IsochroneMatch mapToIsochroneMatch(IsoLabel isoLabel, double maxDistance,
// directions as indicated by the edgeDirection.
// Here the fractions are calculated based on the entire start-segment geometry with respect to the partial
// edges.
- boolean isStartSegment = isStartSegment(matchedLinkId, startEdge);
+ boolean isStartSegment = isStartSegment(matchedLinkId, startEdge, reverseFlow);
LineString fullGeometry = isStartSegment
? getStartSegmentWayGeometryInTravelDirection(reversed, startEdge) : isoLabelWayGeometry;
@@ -65,36 +65,61 @@ public IsochroneMatch mapToIsochroneMatch(IsoLabel isoLabel, double maxDistance,
? fractionAndDistanceCalculator.calculateFractionAndDistance(fullGeometry,
partialGeometry.getEndPoint().getCoordinate()).getFraction() : 1.0;
+ // Invert values for upstream.
+ double correctedStartFraction = reverseFlow ? (1 - endFraction) : startFraction;
+ double correctedEndFraction = reverseFlow ? (1 - startFraction) : endFraction;
+ boolean correctedReversed = (reversed != reverseFlow) && !hasReversedLinkId(currentEdge);
+ LineString correctedGeometry = reverseFlow ? partialGeometry.reverse() : partialGeometry;
+
return IsochroneMatch
.builder()
+ .edge(currentEdge)
.matchedLinkId(matchedLinkId)
- .startFraction(startFraction)
- .endFraction(endFraction)
- .reversed(reversed)
- .parentLink(createParentLink(isoLabel, queryGraph))
- .geometry(partialGeometry)
+ .startFraction(correctedStartFraction)
+ .endFraction(correctedEndFraction)
+ .reversed(correctedReversed)
+ .parentLink(createParentLink(isoLabel, queryGraph, reverseFlow))
+ .geometry(correctedGeometry)
.build();
}
- private IsochroneParentLink createParentLink(IsoLabel isoLabel, QueryGraph queryGraph) {
- if (!isoLabel.parentIsRoot()) {
- IntEncodedValue idEnc = encodingManager.getIntEncodedValue(WAY_ID_KEY);
- EdgeIteratorState parentEdge = queryGraph.getEdgeIteratorState(isoLabel.getParent().getEdge(),
- isoLabel.getParent().getNode());
- boolean reversed = edgeIteratorStateReverseExtractor.hasReversed(parentEdge);
- return IsochroneParentLink
- .builder()
- .linkId(parentEdge.get(idEnc))
- .reversed(reversed)
- .build();
- } else {
+ private IsochroneParentLink createParentLink(IsoLabel isoLabel, QueryGraph queryGraph, boolean reverseFlow) {
+ if (isoLabel.parentIsRoot()) {
return null;
}
+
+ EdgeIteratorState parentEdge = queryGraph.getEdgeIteratorState(isoLabel.getParent().getEdge(),
+ isoLabel.getParent().getNode());
+ boolean reversed = edgeIteratorStateReverseExtractor.hasReversed(parentEdge);
+ int linkId = getLinkIdInDirection(parentEdge, reversed, reverseFlow);
+ return IsochroneParentLink
+ .builder()
+ .linkId(linkId)
+ .reversed((reversed != reverseFlow) && !hasReversedLinkId(parentEdge))
+ .build();
+ }
+
+ private int getLinkId(EdgeIteratorState edge) {
+ return edge.get(encodingManager.getIntEncodedValue(WAY_ID_KEY));
+ }
+
+ private int getReversedLinkId(EdgeIteratorState edge) {
+ return edge.get(encodingManager.getIntEncodedValue(REVERSED_LINK_ID));
+ }
+
+ private boolean hasReversedLinkId(EdgeIteratorState edge) {
+ return getReversedLinkId(edge) > 0;
+ }
+
+ private int getLinkIdInDirection(EdgeIteratorState startEdge, boolean reversed, boolean reverseFlow) {
+ return (reversed != reverseFlow) && hasReversedLinkId(startEdge)
+ ? getReversedLinkId(startEdge)
+ : getLinkId(startEdge);
}
- public boolean isStartSegment(int roadSectionId, EdgeIteratorState startEdge) {
- IntEncodedValue idEnc = encodingManager.getIntEncodedValue(WAY_ID_KEY);
- int startSegmentId = startEdge.get(idEnc);
+ private boolean isStartSegment(int roadSectionId, EdgeIteratorState startEdge, boolean reverseFlow) {
+ boolean reversed = edgeIteratorStateReverseExtractor.hasReversed(startEdge);
+ int startSegmentId = getLinkIdInDirection(startEdge, reversed, reverseFlow);
return roadSectionId == startSegmentId;
}
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/mappers/MatchedLinkMapper.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/mappers/MatchedLinkMapper.java
index b0ab2e88..0b1d3914 100644
--- a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/mappers/MatchedLinkMapper.java
+++ b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/mappers/MatchedLinkMapper.java
@@ -9,8 +9,8 @@
/**
* {@link MatchedLinkMapper} maps a {@link List} of {@link MatchedEdgeLink} that describes a Leg/Path into a
* {@link List of {@link MatchedLink}. The start fraction of the leg is applied to the first link and the end fraction
- * is applied to the last link. All other fractions are either 0 for start and 1 for end as they are fully routed
- * from start to end.
+ * is applied to the last link. All other fractions are either 0 for start and 1 for end as they are fully routed from
+ * start to end.
*/
@Component
public class MatchedLinkMapper {
@@ -22,7 +22,7 @@ public class MatchedLinkMapper {
public List map(List matchedEdgeLinks, double firstStartFraction,
double lastEndFraction) {
- final int indexLast = matchedEdgeLinks.size()-1;
+ final int indexLast = matchedEdgeLinks.size() - 1;
int i = 0;
List matchedLinks = new ArrayList<>();
@@ -54,5 +54,4 @@ public List map(List matchedEdgeLinks, double firs
return matchedLinks;
}
-
}
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/model/IsochroneMatch.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/model/IsochroneMatch.java
index 62453a3f..60e4df77 100644
--- a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/model/IsochroneMatch.java
+++ b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/model/IsochroneMatch.java
@@ -1,5 +1,6 @@
package nu.ndw.nls.routingmapmatcher.model;
+import com.graphhopper.util.EdgeIteratorState;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
@@ -13,6 +14,7 @@
@ToString
public class IsochroneMatch {
+ private final EdgeIteratorState edge;
private final IsochroneParentLink parentLink;
private final int matchedLinkId;
@ToString.Exclude
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/model/MatchedQueryResult.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/model/MatchedQueryResult.java
index 83c4f628..c4c65186 100644
--- a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/model/MatchedQueryResult.java
+++ b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/model/MatchedQueryResult.java
@@ -23,6 +23,7 @@ public class MatchedQueryResult {
private final Point inputPoint;
private final int matchedLinkId;
+ private final int matchedReversedLinkId;
private final BearingFilter bearingFilter;
private final LineString originalGeometry;
private final EdgeIteratorTravelDirection travelDirection;
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/model/linestring/MatchedEdgeLink.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/model/linestring/MatchedEdgeLink.java
index 358adbe5..40c86867 100644
--- a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/model/linestring/MatchedEdgeLink.java
+++ b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/model/linestring/MatchedEdgeLink.java
@@ -10,6 +10,7 @@
@EqualsAndHashCode
@ToString
public class MatchedEdgeLink {
+
private final int linkId;
private final boolean reversed;
}
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/model/linestring/MatchedLink.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/model/linestring/MatchedLink.java
index 8472ac6e..c14db2ef 100644
--- a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/model/linestring/MatchedLink.java
+++ b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/model/linestring/MatchedLink.java
@@ -1,6 +1,5 @@
package nu.ndw.nls.routingmapmatcher.model.linestring;
-
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
@@ -8,8 +7,6 @@
import lombok.With;
import lombok.experimental.SuperBuilder;
-
-
@With
@Getter
@ToString
@@ -17,6 +14,7 @@
@EqualsAndHashCode
@AllArgsConstructor
public class MatchedLink {
+
private final int linkId;
private final boolean reversed;
private final double startFraction;
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/model/singlepoint/MatchedPoint.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/model/singlepoint/MatchedPoint.java
index 2d405c55..b10c3dd0 100644
--- a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/model/singlepoint/MatchedPoint.java
+++ b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/model/singlepoint/MatchedPoint.java
@@ -13,10 +13,19 @@
public class MatchedPoint {
private final int matchedLinkId;
+ private final int matchedReversedLinkId;
private final boolean reversed;
private final Point snappedPoint;
private final double fraction;
private final double distance;
private final double bearing;
private final double reliability;
+
+ public int getLinkIdInDirection() {
+ return isReversed() && hasReversedLinkId() ? getMatchedReversedLinkId() : getMatchedLinkId();
+ }
+
+ public boolean hasReversedLinkId() {
+ return getMatchedReversedLinkId() > 0;
+ }
}
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/GraphHopperNetworkService.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/GraphHopperNetworkService.java
index 5f2a6d66..2192ef0e 100644
--- a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/GraphHopperNetworkService.java
+++ b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/GraphHopperNetworkService.java
@@ -4,24 +4,26 @@
import static nu.ndw.nls.routingmapmatcher.util.GraphHopperNetworkPathUtils.formatNormalizedPath;
import com.graphhopper.config.Profile;
-import com.graphhopper.routing.util.VehicleTagParserFactory;
+import com.graphhopper.routing.ev.DefaultImportRegistry;
+import com.graphhopper.routing.ev.ImportRegistry;
import java.nio.file.Path;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
+import java.util.stream.Stream;
import lombok.RequiredArgsConstructor;
import nu.ndw.nls.routingmapmatcher.exception.GraphHopperNotImportedException;
import nu.ndw.nls.routingmapmatcher.network.annotations.mappers.EncodedValuesMapper;
import nu.ndw.nls.routingmapmatcher.network.annotations.model.EncodedValuesByTypeDto;
-import nu.ndw.nls.routingmapmatcher.network.init.annotation.AnnotatedEncodedMapperFactory;
-import nu.ndw.nls.routingmapmatcher.network.init.annotation.AnnotatedEncodedValueFactory;
import nu.ndw.nls.routingmapmatcher.network.init.annotation.EncodedMapperFactoryRegistry;
import nu.ndw.nls.routingmapmatcher.network.init.annotation.EncodedValueFactoryRegistry;
-import nu.ndw.nls.routingmapmatcher.network.init.vehicle.CustomVehicleEncodedValuesFactory;
-import nu.ndw.nls.routingmapmatcher.network.init.vehicle.LinkVehicleParserFactory;
+import nu.ndw.nls.routingmapmatcher.network.init.vehicle.LinkImportRegistry;
+import nu.ndw.nls.routingmapmatcher.network.mappers.CustomModelMapper;
+import nu.ndw.nls.routingmapmatcher.network.mappers.ProfileAccessAndSpeedAttributesMapper;
import nu.ndw.nls.routingmapmatcher.network.model.Link;
import nu.ndw.nls.routingmapmatcher.network.model.LinkVehicleMapper;
+import nu.ndw.nls.routingmapmatcher.network.model.ProfileAccessAndSpeedAttributes;
import nu.ndw.nls.routingmapmatcher.network.model.RoutingNetworkSettings;
import org.springframework.stereotype.Service;
@@ -38,10 +40,11 @@ public class GraphHopperNetworkService {
private static final String NO_NETWORK_MSG = "GraphHopper network %s is not imported on disk";
private final LinkVehicleMapperProvider linkVehicleMapperProvider;
- private final EncodedMapperFactoryRegistry encodedMapperFactoryRegistry;
private final EncodedValueFactoryRegistry encodedValueFactoryRegistry;
- private final CustomVehicleEncodedValuesFactory vehicleEncodedValuesFactory;
private final EncodedValuesMapper encodedValuesMapper;
+ private final EncodedMapperFactoryRegistry encodedMapperFactoryRegistry;
+ private final CustomModelMapper customModelMapper;
+ private final ProfileAccessAndSpeedAttributesMapper profileAccessAndSpeedAttributesMapper;
/**
@@ -52,9 +55,11 @@ public class GraphHopperNetworkService {
*/
public NetworkGraphHopper inMemory(RoutingNetworkSettings networkSettings) {
NetworkGraphHopper graphHopper = new NetworkGraphHopper(networkSettings);
+
+ Map> providers = linkVehicleMapperProvider.getLinksForType(
+ networkSettings.getLinkType());
+ validateVehicles(networkSettings.getProfiles(), providers, networkSettings.getLinkType());
configureGraphHopper(networkSettings.getLinkType(), networkSettings.getProfiles(), graphHopper);
- // defines for each vehicle the values of the above, deducted from the network and other logic
- graphHopper.setVehicleTagParserFactory(getVehicleTagParserFactory(networkSettings));
graphHopper.setStoreOnFlush(false);
// Required even though we explicitly set store on flush to false
@@ -65,6 +70,7 @@ public NetworkGraphHopper inMemory(RoutingNetworkSettings ne
return graphHopper;
}
+
/***
* In order to separate reads and writes to/form disk cache this method only loads existing networks from disk.
* Use this method to load a previously stored network.
@@ -101,11 +107,10 @@ public void storeOnDisk(RoutingNetworkSettings networkSettin
Path path = requireNonNull(networkSettings.getGraphhopperRootPath(), NO_PATH_MSG_WRITE);
String nameAndVersion = requireNonNull(networkSettings.getNetworkNameAndVersion(), NO_NAME_MSG_WRITE);
graphHopper.setGraphHopperLocation(formatNormalizedPath(path, nameAndVersion).toString());
-
+ Map> providers = linkVehicleMapperProvider.getLinksForType(
+ networkSettings.getLinkType());
+ validateVehicles(networkSettings.getProfiles(), providers, networkSettings.getLinkType());
configureGraphHopper(networkSettings.getLinkType(), networkSettings.getProfiles(), graphHopper);
- // defines for each vehicle the values of the above, deducted from the network and other logic
- graphHopper.setVehicleTagParserFactory(getVehicleTagParserFactory(networkSettings));
-
graphHopper.clean();
graphHopper.setStoreOnFlush(true);
graphHopper.importAndClose();
@@ -122,39 +127,40 @@ public void storeOnDisk(RoutingNetworkSettings networkSettin
private void configureGraphHopper(Class linkClass, List profiles,
NetworkGraphHopper networkGraphHopper) {
networkGraphHopper.setElevation(false);
- // defines for each vehicle how data is encoded
- networkGraphHopper.setVehicleEncodedValuesFactory(vehicleEncodedValuesFactory);
EncodedValuesByTypeDto encodedValuesByTypeDto = encodedValuesMapper.map(linkClass);
- AnnotatedEncodedValueFactory encodedvalueFactory = new AnnotatedEncodedValueFactory<>(
- encodedValueFactoryRegistry, encodedValuesByTypeDto);
- AnnotatedEncodedMapperFactory tagParserFactory = new AnnotatedEncodedMapperFactory<>(
- encodedMapperFactoryRegistry, encodedValuesByTypeDto);
-
- //How to set a value in a link
- networkGraphHopper.setEncodedValueFactory(encodedvalueFactory);
-
- //How to get back a value from a link
- networkGraphHopper.setTagParserFactory(tagParserFactory);
-
- networkGraphHopper.setEncodedValuesString(String.join(DELIMITER, encodedValuesByTypeDto.keySet()));
-
+ Map> providers = linkVehicleMapperProvider.getLinksForType(
+ linkClass);
+ ProfileAccessAndSpeedAttributes profileAccessAndSpeedAttributes = profileAccessAndSpeedAttributesMapper.map(
+ profiles);
+ String encodedValuesString = getEncodedValuesString(profileAccessAndSpeedAttributes.getAll(),
+ encodedValuesByTypeDto);
+ ImportRegistry importRegistry = new LinkImportRegistry<>(encodedValuesByTypeDto,
+ encodedValueFactoryRegistry, encodedMapperFactoryRegistry,
+ providers,
+ new DefaultImportRegistry(),
+ profileAccessAndSpeedAttributes);
+ addSpeedAndAccessRestrictionsToProfiles(profiles);
+ networkGraphHopper.setImportRegistry(importRegistry);
+ networkGraphHopper.setEncodedValuesString(encodedValuesString);
networkGraphHopper.setProfiles(profiles);
networkGraphHopper.setMinNetworkSize(0);
}
- private VehicleTagParserFactory getVehicleTagParserFactory(RoutingNetworkSettings
- networkSettings) {
- Map> providers = linkVehicleMapperProvider.getLinksForType(
- networkSettings.getLinkType());
- validateVehicles(networkSettings.getProfiles(), providers, networkSettings.getLinkType());
- return new LinkVehicleParserFactory<>(providers);
+ private String getEncodedValuesString(List accessAndSpeedAttributes,
+ EncodedValuesByTypeDto encodedValuesByTypeDto) {
+ return Stream.concat(
+ encodedValuesByTypeDto.keySet().stream(),
+ accessAndSpeedAttributes.stream()
+ )
+ .collect(Collectors.joining(DELIMITER));
}
+
private void validateVehicles(List profiles, Map> providers,
Class linkClass) {
Set missingVehicles = profiles.stream()
- .map(Profile::getVehicle)
+ .map(Profile::getName)
.filter(vehicle -> !providers.containsKey(vehicle))
.collect(Collectors.toSet());
if (!missingVehicles.isEmpty()) {
@@ -164,4 +170,8 @@ private void validateVehicles(List profiles, Map profiles) {
+ profiles.forEach(profile -> profile.setCustomModel(customModelMapper.mapToCustomModel(profile)));
+ }
+
}
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/LinkVehicleMapperProvider.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/LinkVehicleMapperProvider.java
index e452d696..819f9829 100644
--- a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/LinkVehicleMapperProvider.java
+++ b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/LinkVehicleMapperProvider.java
@@ -7,6 +7,7 @@
import java.util.stream.Collectors;
import nu.ndw.nls.routingmapmatcher.network.model.Link;
import nu.ndw.nls.routingmapmatcher.network.model.LinkVehicleMapper;
+import nu.ndw.nls.routingmapmatcher.util.Constants;
import org.springframework.stereotype.Component;
@Component
@@ -46,6 +47,9 @@ private Optional validate(Class extends Link> linkClass,
}
}
+
+
+
public Map> getLinksForType(Class linkType) {
return Optional.ofNullable(vehiclesByLinkType.get(linkType)).orElse(List.of()).stream()
.collect(Collectors.toMap(
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/NetworkGraphHopper.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/NetworkGraphHopper.java
index a99878bb..49e6469d 100644
--- a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/NetworkGraphHopper.java
+++ b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/NetworkGraphHopper.java
@@ -81,7 +81,7 @@ protected void importOSM() {
if (this.dataDate != null) {
putDateProperty(DATAREADER_DATA_DATE, this.dataDate);
}
- this.writeEncodingManagerToProperties();
+
}
@Override
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/annotations/mappers/DirectionalFieldGenericTypeArgumentMapper.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/annotations/mappers/DirectionalFieldGenericTypeArgumentMapper.java
index c0c692e8..520a5873 100644
--- a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/annotations/mappers/DirectionalFieldGenericTypeArgumentMapper.java
+++ b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/annotations/mappers/DirectionalFieldGenericTypeArgumentMapper.java
@@ -2,9 +2,11 @@
import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
+import java.util.Optional;
import nu.ndw.nls.routingmapmatcher.network.model.DirectionalDto;
import nu.ndw.nls.routingmapmatcher.network.model.Link;
import org.springframework.stereotype.Component;
+import org.springframework.util.ReflectionUtils;
/**
* Retrieves the generic type argument from a field of type {@link DirectionalDto}
@@ -21,16 +23,13 @@ public class DirectionalFieldGenericTypeArgumentMapper {
* @return {@link Class } which is the generic type argument of {@link DirectionalDto}
*/
public Class> map(Class annotatedClassType, String fieldName) {
-
- Field directionalField;
-
- try {
- directionalField = annotatedClassType.getDeclaredField(fieldName);
- } catch (NoSuchFieldException e) {
- throw new IllegalStateException("Direction field by name " + fieldName + " should exist!", e);
- }
+ Field directionalField = getDirectionalField(annotatedClassType, fieldName);
return (Class>) ((ParameterizedType) directionalField.getGenericType()).getActualTypeArguments()[0];
}
+ private Field getDirectionalField(Class clazz, String fieldName) {
+ return Optional.ofNullable(ReflectionUtils.findField(clazz, fieldName))
+ .orElseThrow(() -> new IllegalArgumentException("No such field %s in %s".formatted(fieldName, clazz)));
+ }
}
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/init/annotation/AnnotatedEncodedMapperFactory.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/init/annotation/AnnotatedEncodedMapperFactory.java
deleted file mode 100644
index cf356a8b..00000000
--- a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/init/annotation/AnnotatedEncodedMapperFactory.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Licensed to GraphHopper GmbH under one or more contributor
- * license agreements. See the NOTICE file distributed with this work for
- * additional information regarding copyright ownership.
- *
- * GraphHopper GmbH licenses this file to you under the Apache License,
- * Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package nu.ndw.nls.routingmapmatcher.network.init.annotation;
-
-import com.graphhopper.routing.ev.EncodedValueLookup;
-import com.graphhopper.routing.util.parsers.TagParser;
-import com.graphhopper.routing.util.parsers.TagParserFactory;
-import com.graphhopper.util.PMap;
-import lombok.extern.slf4j.Slf4j;
-import nu.ndw.nls.routingmapmatcher.network.annotations.model.EncodedValuesByTypeDto;
-import nu.ndw.nls.routingmapmatcher.network.init.annotation.mappers.AbstractEncodedMapper;
-import nu.ndw.nls.routingmapmatcher.network.init.annotation.parserfactories.EncodedMapperFactory;
-import nu.ndw.nls.routingmapmatcher.network.model.Link;
-
-
-/**
- * Is a tag parser factory that wires all {@link nu.ndw.nls.routingmapmatcher.network.init.annotation.parserfactories.EncodedMapperFactory}s that are available in the spring
- * context and uses the field meta-data to resolve the correct {@link nu.ndw.nls.routingmapmatcher.network.init.annotation.parserfactories.EncodedMapperFactory} and instantiates an
- * instance of {@link AbstractEncodedMapper}, which is a GraphHopper {@link TagParser}
- *
- * @param Link type
- */
-@Slf4j
-public class AnnotatedEncodedMapperFactory implements TagParserFactory {
-
- private final EncodedValuesByTypeDto encodedValuesByTypeDto;
-
- private final EncodedMapperFactoryRegistry classToEncodedMapperFactory;
-
- public AnnotatedEncodedMapperFactory(EncodedMapperFactoryRegistry classToEncodedMapperFactory,
- EncodedValuesByTypeDto encodedValuesByTypeDto) {
- this.classToEncodedMapperFactory = classToEncodedMapperFactory ;
- this.encodedValuesByTypeDto = encodedValuesByTypeDto;
- }
-
- @Override
- public AbstractEncodedMapper create(EncodedValueLookup lookup, String name, PMap properties) {
- Class> type = encodedValuesByTypeDto.getValueTypeByKey(name).orElseThrow(() ->
- new IllegalStateException("No annotate encoded value configuration found by name: " + name));
-
- return createEncodedMapper(lookup, type, name);
- }
-
- private AbstractEncodedMapper createEncodedMapper(EncodedValueLookup lookup, Class valueType,
- String name) {
-
- EncodedMapperFactory encodedMapperFactory =
- classToEncodedMapperFactory.lookupEncodedMapperFactory(valueType).orElseThrow(
- () -> new IllegalStateException(
- "No tag parser found for name: %s with type: %s".formatted(name, valueType)));
-
- return encodedMapperFactory.create(lookup, encodedValuesByTypeDto.get(valueType, name));
- }
-
-
-}
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/init/annotation/AnnotatedEncodedValueFactory.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/init/annotation/AnnotatedEncodedValueFactory.java
deleted file mode 100644
index d3c98106..00000000
--- a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/init/annotation/AnnotatedEncodedValueFactory.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package nu.ndw.nls.routingmapmatcher.network.init.annotation;
-
-import com.graphhopper.routing.ev.EncodedValue;
-import com.graphhopper.util.PMap;
-import lombok.extern.slf4j.Slf4j;
-import nu.ndw.nls.routingmapmatcher.network.annotations.model.EncodedValueDto;
-import nu.ndw.nls.routingmapmatcher.network.annotations.model.EncodedValuesByTypeDto;
-import nu.ndw.nls.routingmapmatcher.network.init.annotation.encodedvaluefactories.EncodedValueFactory;
-import nu.ndw.nls.routingmapmatcher.network.model.Link;
-
-
-/**
- * A GraphHopper {@link com.graphhopper.routing.ev.EncodedValueFactory} that uses a list of available {@link EncodedValueFactory} to
- * instantiate encoders for annotated values described by {@link EncodedValuesByTypeDto }
- * @param Type safe link
- */
-@Slf4j
-public class AnnotatedEncodedValueFactory implements com.graphhopper.routing.ev.EncodedValueFactory {
-
- private final EncodedValueFactoryRegistry encodedValueFactoryRegistry;
- private final EncodedValuesByTypeDto encodedValuesByTypeDto;
-
- public AnnotatedEncodedValueFactory(EncodedValueFactoryRegistry encodedValueFactoryRegistry,
- EncodedValuesByTypeDto encodedValuesByTypeDto) {
- this.encodedValueFactoryRegistry = encodedValueFactoryRegistry;
- this.encodedValuesByTypeDto = encodedValuesByTypeDto;
- }
-
- @Override
- public EncodedValue create(String name, PMap properties) {
- Class> type = encodedValuesByTypeDto.getValueTypeByKey(name).orElseThrow(() -> new IllegalStateException(
- "Field requested for which there is no encoded value annotation: " + name));
- return create(type, name);
- }
-
- private EncodedValue create(Class type, String name) {
- EncodedValueDto encodedValueDto = encodedValuesByTypeDto.get(type, name);
-
- EncodedValueFactory encodedValueFactory =
- encodedValueFactoryRegistry.lookupEncodedValueFactory(type).orElseThrow(
- () -> new IllegalStateException(
- "No encoded value factory found for name: " + name + " with type: " + type));
-
- return encodedValueFactory.encode(encodedValueDto);
- }
-
-
-
-}
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/init/vehicle/CustomVehicleEncodedValuesFactory.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/init/vehicle/CustomVehicleEncodedValuesFactory.java
deleted file mode 100644
index c5f578b7..00000000
--- a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/init/vehicle/CustomVehicleEncodedValuesFactory.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package nu.ndw.nls.routingmapmatcher.network.init.vehicle;
-
-import com.graphhopper.routing.ev.BooleanEncodedValue;
-import com.graphhopper.routing.ev.DecimalEncodedValue;
-import com.graphhopper.routing.ev.SimpleBooleanEncodedValue;
-import com.graphhopper.routing.ev.TurnRestriction;
-import com.graphhopper.routing.ev.VehicleAccess;
-import com.graphhopper.routing.ev.VehicleSpeed;
-import com.graphhopper.routing.util.VehicleEncodedValues;
-import com.graphhopper.routing.util.VehicleEncodedValuesFactory;
-import com.graphhopper.util.PMap;
-import org.springframework.stereotype.Component;
-
-@Component
-public class CustomVehicleEncodedValuesFactory implements VehicleEncodedValuesFactory {
-
- private static final int DEFAULT_SPEED_BITS = 5;
-
- @Override
- public VehicleEncodedValues createVehicleEncodedValues(String name, PMap properties) {
- BooleanEncodedValue accessEnc = VehicleAccess.create(name);
- BooleanEncodedValue turnEnc = new SimpleBooleanEncodedValue(TurnRestriction.key(name), true);
- DecimalEncodedValue averageSpeedEnc = VehicleSpeed.create(name, DEFAULT_SPEED_BITS, DEFAULT_SPEED_BITS, true);
- return new VehicleEncodedValues(name, accessEnc, averageSpeedEnc, null, turnEnc);
- }
-
-}
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/init/vehicle/LinkImportRegistry.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/init/vehicle/LinkImportRegistry.java
new file mode 100644
index 00000000..b15e6fb1
--- /dev/null
+++ b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/init/vehicle/LinkImportRegistry.java
@@ -0,0 +1,119 @@
+package nu.ndw.nls.routingmapmatcher.network.init.vehicle;
+
+import com.graphhopper.routing.ev.DefaultImportRegistry;
+import com.graphhopper.routing.ev.EncodedValue;
+import com.graphhopper.routing.ev.EncodedValueLookup;
+import com.graphhopper.routing.ev.ImportRegistry;
+import com.graphhopper.routing.ev.ImportUnit;
+import com.graphhopper.routing.ev.VehicleAccess;
+import com.graphhopper.routing.ev.VehicleSpeed;
+import com.graphhopper.routing.util.parsers.TagParser;
+import com.graphhopper.util.PMap;
+import java.util.Map;
+import java.util.Optional;
+import java.util.function.BiFunction;
+import lombok.RequiredArgsConstructor;
+import nu.ndw.nls.routingmapmatcher.network.annotations.model.EncodedValueDto;
+import nu.ndw.nls.routingmapmatcher.network.annotations.model.EncodedValuesByTypeDto;
+import nu.ndw.nls.routingmapmatcher.network.init.annotation.EncodedMapperFactoryRegistry;
+import nu.ndw.nls.routingmapmatcher.network.init.annotation.EncodedValueFactoryRegistry;
+import nu.ndw.nls.routingmapmatcher.network.init.annotation.encodedvaluefactories.EncodedValueFactory;
+import nu.ndw.nls.routingmapmatcher.network.init.annotation.mappers.AbstractEncodedMapper;
+import nu.ndw.nls.routingmapmatcher.network.init.annotation.parserfactories.EncodedMapperFactory;
+import nu.ndw.nls.routingmapmatcher.network.init.vehicle.parsers.LinkAccessParser;
+import nu.ndw.nls.routingmapmatcher.network.init.vehicle.parsers.LinkAverageSpeedParser;
+import nu.ndw.nls.routingmapmatcher.network.model.Link;
+import nu.ndw.nls.routingmapmatcher.network.model.LinkVehicleMapper;
+import nu.ndw.nls.routingmapmatcher.network.model.ProfileAccessAndSpeedAttributes;
+
+@RequiredArgsConstructor
+public class LinkImportRegistry implements ImportRegistry {
+
+ private static final int DEFAULT_SPEED_BITS = 5;
+
+ private final EncodedValuesByTypeDto encodedValuesByTypeDto;
+ private final EncodedValueFactoryRegistry encodedValueFactoryRegistry;
+ private final EncodedMapperFactoryRegistry classToEncodedMapperFactory;
+ private final Map> linkMappersByVehicleType;
+ private final DefaultImportRegistry defaultImportRegistry;
+ private final ProfileAccessAndSpeedAttributes profileAccessAndSpeedAttributes;
+
+ @Override
+ public ImportUnit createImportUnit(String attributeName) {
+ return getAttributeDataType(attributeName)
+ .map(dataType -> ImportUnit.create(attributeName,
+ props -> createEncodedValueForAttributeType(dataType, attributeName),
+ createTagParserFunction(attributeName, dataType)))
+ // The gh framework always encodes some extra internal attributes on the network
+ // here the fallback delegates to the gh import registry
+ .orElseGet(() -> defaultImportRegistry.createImportUnit(attributeName));
+ }
+
+ private Optional> getAttributeDataType(String attributeName) {
+ if (profileAccessAndSpeedAttributes.isSpeedAttribute(attributeName)) {
+ return Optional.of(Double.class);
+ } else if (profileAccessAndSpeedAttributes.isAccessAttribute(attributeName)) {
+ return Optional.of(Boolean.class);
+ } else {
+ return encodedValuesByTypeDto.getValueTypeByKey(attributeName);
+ }
+ }
+
+ private BiFunction createTagParserFunction(String attributeName,
+ Class> type) {
+ if (profileAccessAndSpeedAttributes.isSpeedAttribute(attributeName)) {
+ return (lookup, props) -> createSpeedTagParserForAttributeType(lookup, attributeName);
+ }
+ if (profileAccessAndSpeedAttributes.isAccessAttribute(attributeName)) {
+ return (lookup, props) -> createAccessibleTagParserForAttributeType(lookup, attributeName);
+ }
+ return (lookup, props) -> createTagParserForAttributeType(lookup, type, attributeName);
+ }
+
+ private TagParser createSpeedTagParserForAttributeType(EncodedValueLookup lookup, String attributeName) {
+ String vehicleName = profileAccessAndSpeedAttributes.getVehicleName(attributeName);
+ return new LinkAverageSpeedParser<>(lookup, vehicleName, getMapperForAttribute(attributeName));
+ }
+
+ private TagParser createAccessibleTagParserForAttributeType(EncodedValueLookup lookup,
+ String attributeName) {
+ String vehicleName = profileAccessAndSpeedAttributes.getVehicleName(attributeName);
+ return new LinkAccessParser<>(lookup, vehicleName, getMapperForAttribute(attributeName));
+ }
+
+ private EncodedValue createEncodedValueForAttributeType(Class type, String name) {
+ String vehicleName = profileAccessAndSpeedAttributes.getVehicleName(name);
+ if (profileAccessAndSpeedAttributes.isSpeedAttribute(name)) {
+ return VehicleSpeed.create(vehicleName, DEFAULT_SPEED_BITS, DEFAULT_SPEED_BITS, true);
+ } else if (profileAccessAndSpeedAttributes.isAccessAttribute(name)) {
+ return VehicleAccess.create(vehicleName);
+ }
+ EncodedValueDto encodedValueDto = encodedValuesByTypeDto.get(type, name);
+ EncodedValueFactory encodedValueFactory =
+ encodedValueFactoryRegistry.lookupEncodedValueFactory(type)
+ .orElseThrow(() -> new IllegalStateException(
+ "No encoded value factory found for name: %s with type: %s".formatted(name, type)));
+
+ return encodedValueFactory.encode(encodedValueDto);
+ }
+
+ private AbstractEncodedMapper createTagParserForAttributeType(EncodedValueLookup lookup,
+ Class valueType,
+ String name) {
+ EncodedMapperFactory encodedMapperFactory =
+ classToEncodedMapperFactory.lookupEncodedMapperFactory(valueType)
+ .orElseThrow(() -> new IllegalStateException(
+ "No tag parser found for name: %s with type: %s".formatted(name, valueType)));
+
+ return encodedMapperFactory.create(lookup, encodedValuesByTypeDto.get(valueType, name));
+ }
+
+ private LinkVehicleMapper getMapperForAttribute(String attributeName) {
+ String vehicleName = profileAccessAndSpeedAttributes.getVehicleName(attributeName);
+ if (linkMappersByVehicleType.containsKey(vehicleName)) {
+ return linkMappersByVehicleType.get(vehicleName);
+ } else {
+ throw new IllegalArgumentException("No link mapper found for name: %s".formatted(vehicleName));
+ }
+ }
+}
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/init/vehicle/LinkVehicleParserFactory.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/init/vehicle/LinkVehicleParserFactory.java
deleted file mode 100644
index 8da390d7..00000000
--- a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/init/vehicle/LinkVehicleParserFactory.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package nu.ndw.nls.routingmapmatcher.network.init.vehicle;
-
-import com.graphhopper.routing.ev.EncodedValueLookup;
-import com.graphhopper.routing.util.VehicleTagParserFactory;
-import com.graphhopper.routing.util.VehicleTagParsers;
-import com.graphhopper.util.PMap;
-import java.util.Map;
-import lombok.RequiredArgsConstructor;
-import nu.ndw.nls.routingmapmatcher.network.init.vehicle.parsers.LinkAccessParser;
-import nu.ndw.nls.routingmapmatcher.network.init.vehicle.parsers.LinkAverageSpeedParser;
-import nu.ndw.nls.routingmapmatcher.network.model.Link;
-import nu.ndw.nls.routingmapmatcher.network.model.LinkVehicleMapper;
-
-@RequiredArgsConstructor
-public class LinkVehicleParserFactory implements VehicleTagParserFactory {
-
- private final Map> linkVehicleMapperMap;
-
- @Override
- public VehicleTagParsers createParsers(EncodedValueLookup encodedValueLookup, String name, PMap properties) {
-
- LinkVehicleMapper linkVehicleMapper = linkVehicleMapperMap.get(name);
-
- LinkAccessParser accessParser = new LinkAccessParser<>(encodedValueLookup, name, linkVehicleMapper);
- LinkAverageSpeedParser averageSpeedParser = new LinkAverageSpeedParser<>(encodedValueLookup, name,
- linkVehicleMapper);
-
- return new VehicleTagParsers(accessParser, averageSpeedParser, null);
- }
-
-}
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/mappers/CustomModelMapper.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/mappers/CustomModelMapper.java
new file mode 100644
index 00000000..55f9103f
--- /dev/null
+++ b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/mappers/CustomModelMapper.java
@@ -0,0 +1,25 @@
+package nu.ndw.nls.routingmapmatcher.network.mappers;
+
+import com.graphhopper.config.Profile;
+import com.graphhopper.json.Statement;
+import com.graphhopper.json.Statement.Op;
+import com.graphhopper.util.CustomModel;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Component;
+
+@Component
+@RequiredArgsConstructor
+public class CustomModelMapper {
+
+ private final SpeedAndAccessAttributeMapper speedAndAccessAttributeMapper;
+
+ public CustomModel mapToCustomModel(Profile profile) {
+ String accessibleAttribute = speedAndAccessAttributeMapper.mapToAccessAttribute(profile);
+ String speedAttribute = speedAndAccessAttributeMapper.mapToSpeedAttribute(profile);
+ Statement priorityStatement = Statement.If(accessibleAttribute + " == false", Op.MULTIPLY, "0");
+ Statement speedStatement = Statement.If("true", Op.LIMIT, speedAttribute);
+ return new CustomModel()
+ .addToPriority(priorityStatement)
+ .addToSpeed(speedStatement);
+ }
+}
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/mappers/ProfileAccessAndSpeedAttributesMapper.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/mappers/ProfileAccessAndSpeedAttributesMapper.java
new file mode 100644
index 00000000..a0c1fbff
--- /dev/null
+++ b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/mappers/ProfileAccessAndSpeedAttributesMapper.java
@@ -0,0 +1,29 @@
+package nu.ndw.nls.routingmapmatcher.network.mappers;
+
+import com.graphhopper.config.Profile;
+import java.util.List;
+import lombok.RequiredArgsConstructor;
+import nu.ndw.nls.routingmapmatcher.network.model.ProfileAccessAndSpeedAttributes;
+import org.springframework.stereotype.Component;
+
+@Component
+@RequiredArgsConstructor
+public class ProfileAccessAndSpeedAttributesMapper {
+
+ private final SpeedAndAccessAttributeMapper speedAndAccessAttributeMapper;
+
+ public ProfileAccessAndSpeedAttributes map(List profiles) {
+ List accessAttributes = profiles.stream()
+ .map(speedAndAccessAttributeMapper::mapToAccessAttribute)
+ .toList();
+ List speedAttributes = profiles.stream()
+ .map(speedAndAccessAttributeMapper::mapToSpeedAttribute)
+ .toList();
+ return ProfileAccessAndSpeedAttributes
+ .builder()
+ .accessAttributes(accessAttributes)
+ .speedAttributes(speedAttributes)
+ .build();
+ }
+
+}
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/mappers/SpeedAndAccessAttributeMapper.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/mappers/SpeedAndAccessAttributeMapper.java
new file mode 100644
index 00000000..74cdb36a
--- /dev/null
+++ b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/mappers/SpeedAndAccessAttributeMapper.java
@@ -0,0 +1,18 @@
+package nu.ndw.nls.routingmapmatcher.network.mappers;
+
+import com.graphhopper.config.Profile;
+import com.graphhopper.routing.ev.VehicleAccess;
+import com.graphhopper.routing.ev.VehicleSpeed;
+import org.springframework.stereotype.Component;
+
+@Component
+public class SpeedAndAccessAttributeMapper {
+
+ public String mapToSpeedAttribute(Profile profile) {
+ return VehicleSpeed.key(profile.getName());
+ }
+
+ public String mapToAccessAttribute(Profile profile) {
+ return VehicleAccess.key(profile.getName());
+ }
+}
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/model/Link.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/model/Link.java
index cc6e4e79..7e780167 100644
--- a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/model/Link.java
+++ b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/model/Link.java
@@ -11,18 +11,28 @@
public class Link extends ReaderWay {
public static final String WAY_ID_KEY = "way_id";
+ public static final String REVERSED_LINK_ID = "reversed_link_id";
private final long fromNodeId;
private final long toNodeId;
private final double distanceInMeters;
private final LineString geometry;
+ @EncodedValue(key = REVERSED_LINK_ID, bits = 31)
+ private final long linkIdReversed;
+
protected Link(long id, long fromNodeId, long toNodeId, double distanceInMeters, LineString geometry) {
+ this(id, fromNodeId, toNodeId, distanceInMeters, geometry, null);
+ }
+
+ protected Link(long id, long fromNodeId, long toNodeId, double distanceInMeters, LineString geometry,
+ Long linkIdReversed) {
super(id);
this.fromNodeId = fromNodeId;
this.toNodeId = toNodeId;
this.distanceInMeters = distanceInMeters;
this.geometry = geometry;
+ this.linkIdReversed = linkIdReversed != null ? linkIdReversed : 0L;
}
@Override
@@ -30,5 +40,4 @@ protected Link(long id, long fromNodeId, long toNodeId, double distanceInMeters,
public long getId() {
return super.getId();
}
-
}
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/model/ProfileAccessAndSpeedAttributes.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/model/ProfileAccessAndSpeedAttributes.java
new file mode 100644
index 00000000..bd8dc9ac
--- /dev/null
+++ b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/network/model/ProfileAccessAndSpeedAttributes.java
@@ -0,0 +1,36 @@
+package nu.ndw.nls.routingmapmatcher.network.model;
+
+import java.util.ArrayList;
+import java.util.List;
+import lombok.Builder;
+
+/**
+ * In gh 9xx we need to add average speed and access attributes per profile we need to generate speed and access
+ * attribute names. This class is responsible for this logic.
+ */
+@Builder
+public record ProfileAccessAndSpeedAttributes(List accessAttributes,
+ List speedAttributes) {
+
+ public List getAll() {
+ List result = new ArrayList<>(accessAttributes);
+ result.addAll(speedAttributes);
+ return result;
+ }
+
+ public boolean isSpeedAttribute(String attributeName) {
+ return speedAttributes.contains(attributeName);
+ }
+
+ public boolean isAccessAttribute(String attributeName) {
+ return accessAttributes.contains(attributeName);
+ }
+
+ public String getVehicleName(String attributeName) {
+ return attributeName
+ .replace("_average_speed", "")
+ .replace("_access", "");
+ }
+
+
+}
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/routing/RouterFactory.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/routing/RouterFactory.java
index 3b5dc094..b2b48e40 100644
--- a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/routing/RouterFactory.java
+++ b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/routing/RouterFactory.java
@@ -18,6 +18,7 @@ public class RouterFactory implements MapMatcherFactory {
@Override
public Router createMapMatcher(NetworkGraphHopper preInitializedNetwork, String profileName) {
- return new Router(preInitializedNetwork, matchedLinkMapper, geometryFactoryWgs84,fractionAndDistanceCalculator);
+ return new Router(preInitializedNetwork, matchedLinkMapper, geometryFactoryWgs84,
+ fractionAndDistanceCalculator);
}
}
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/singlepoint/PointMatchingService.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/singlepoint/PointMatchingService.java
index 53ce1ddf..472bcf8d 100644
--- a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/singlepoint/PointMatchingService.java
+++ b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/singlepoint/PointMatchingService.java
@@ -40,6 +40,7 @@ public List calculateMatches(MatchedQueryResult matchedQueryResult
LineString originalGeometry = matchedQueryResult.getOriginalGeometry();
EdgeIteratorTravelDirection travelDirection = matchedQueryResult.getTravelDirection();
int matchedLinkId = matchedQueryResult.getMatchedLinkId();
+ int matchedReversedLinkId = matchedQueryResult.getMatchedReversedLinkId();
matchedQueryResult.getCutoffGeometryAsLineStrings()
.forEach(cutOffGeometry -> {
Coordinate[] coordinates = cutOffGeometry.getCoordinates();
@@ -48,6 +49,7 @@ public List calculateMatches(MatchedQueryResult matchedQueryResult
MatchedPoint matchedPoint = createMatchedPoint(
inputCoordinate,
matchedLinkId,
+ matchedReversedLinkId,
originalGeometry,
false,
lineString,
@@ -64,6 +66,7 @@ public List calculateMatches(MatchedQueryResult matchedQueryResult
MatchedPoint matchedPoint = createMatchedPoint(
inputCoordinate,
matchedLinkId,
+ matchedReversedLinkId,
originalGeometry,
true,
lineString,
@@ -79,7 +82,8 @@ public List calculateMatches(MatchedQueryResult matchedQueryResult
return matchedPoints;
}
- private MatchedPoint createMatchedPoint(Coordinate input, int matchedLinkId, LineString originalGeometry,
+ private MatchedPoint createMatchedPoint(Coordinate input, int matchedLinkId, int matchedReversedLinkId,
+ LineString originalGeometry,
boolean reversed, LineString aggregatedGeometry, BearingFilter bearingFilter, double cutoffDistance) {
ClosestPointResult projectionResult = closestPointService.closestPoint(
Arrays.asList(aggregatedGeometry.getCoordinates()), input);
@@ -89,6 +93,7 @@ private MatchedPoint createMatchedPoint(Coordinate input, int matchedLinkId, Lin
return MatchedPoint
.builder()
.matchedLinkId(matchedLinkId)
+ .matchedReversedLinkId(matchedReversedLinkId)
.reversed(reversed)
.snappedPoint(geometryFactory.createPoint(projectionResult.point()))
.fraction(reversed ? (1 - fraction) : fraction)
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcher.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcher.java
index be44a5b5..fc89708f 100644
--- a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcher.java
+++ b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcher.java
@@ -1,6 +1,7 @@
package nu.ndw.nls.routingmapmatcher.singlepoint;
import static nu.ndw.nls.routingmapmatcher.model.singlepoint.MatchFilter.ALL;
+import static nu.ndw.nls.routingmapmatcher.network.model.Link.REVERSED_LINK_ID;
import static nu.ndw.nls.routingmapmatcher.network.model.Link.WAY_ID_KEY;
import static nu.ndw.nls.routingmapmatcher.util.MatchUtil.getQueryResults;
import static nu.ndw.nls.routingmapmatcher.util.PathUtil.determineEdgeDirection;
@@ -15,6 +16,7 @@
import com.graphhopper.storage.EdgeIteratorStateReverseExtractor;
import com.graphhopper.storage.index.LocationIndexTree;
import com.graphhopper.storage.index.Snap;
+import com.graphhopper.util.CustomModel;
import com.graphhopper.util.EdgeIteratorState;
import com.graphhopper.util.FetchMode;
import com.graphhopper.util.PMap;
@@ -37,6 +39,7 @@
import nu.ndw.nls.routingmapmatcher.model.singlepoint.SinglePointMatch;
import nu.ndw.nls.routingmapmatcher.model.singlepoint.SinglePointMatch.CandidateMatch;
import nu.ndw.nls.routingmapmatcher.network.NetworkGraphHopper;
+import nu.ndw.nls.routingmapmatcher.util.Constants;
import nu.ndw.nls.routingmapmatcher.util.PointListUtil;
import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.geom.LineString;
@@ -68,19 +71,25 @@ public SinglePointMapMatcher(DiameterToPolygonMapper diameterToPolygonMapper,
this.locationIndexTree = network.getLocationIndex();
BaseGraph baseGraph = network.getBaseGraph();
EncodingManager encodingManager = network.getEncodingManager();
- Weighting weighting = network.createWeighting(profile, new PMap());
+ Weighting shortestWeightingForIsochrone = network.createWeighting(profile, createShortestDistanceHints());
this.edgeIteratorStateReverseExtractor = new EdgeIteratorStateReverseExtractor();
this.pointListUtil = new PointListUtil();
- this.isochroneService = new IsochroneService(encodingManager, baseGraph, edgeIteratorStateReverseExtractor,
+ this.isochroneService = new IsochroneService(encodingManager, baseGraph,
new IsochroneMatchMapper(encodingManager, edgeIteratorStateReverseExtractor,
pointListUtil,
fractionAndDistanceCalculator),
- new ShortestPathTreeFactory(weighting), this.locationIndexTree, profile);
+ new ShortestPathTreeFactory(shortestWeightingForIsochrone, network.getEncodingManager()),
+ this.locationIndexTree, profile);
this.pointMatchingService = new PointMatchingService(geometryFactoryWgs84, bearingCalculator,
- fractionAndDistanceCalculator,closestPointService);
+ fractionAndDistanceCalculator, closestPointService);
}
+ private PMap createShortestDistanceHints() {
+ return new PMap()
+ .putObject(CustomModel.KEY, Constants.SHORTEST_CUSTOM_MODEL);
+ }
+
public SinglePointMatch match(SinglePointLocation singlePointLocation) {
Preconditions.checkNotNull(singlePointLocation);
Weighting matchWeighting = network.createWeighting(profile, new PMap());
@@ -116,8 +125,8 @@ private CandidateMatch mapToCandidateMatch(SinglePointLocation singlePointLocati
return CandidateMatch
.builder()
- .matchedLinkId(matchedPoint.getMatchedLinkId())
- .reversed(matchedPoint.isReversed())
+ .matchedLinkId(matchedPoint.getLinkIdInDirection())
+ .reversed(matchedPoint.isReversed() && !matchedPoint.hasReversedLinkId())
.upstream(upstream)
.downstream(downstream)
.snappedPoint(matchedPoint.getSnappedPoint())
@@ -135,7 +144,7 @@ private List getMatchedPoints(SinglePointLocation singlePointLocat
.filter(e -> intersects(circle, e))
.flatMap(e -> calculateMatches(e, circle, singlePointLocation)
.stream())
- .sorted(singlePointLocation.getMatchSort().getSort())
+ .sorted(singlePointLocation.getMatchSort().getSort().thenComparing(MatchedPoint::getLinkIdInDirection))
.toList();
if (sorted.isEmpty() || singlePointLocation.getMatchFilter() == ALL) {
return sorted;
@@ -181,10 +190,12 @@ private List calculateMatches(EdgeIteratorState edge, Polygon circ
edgeIteratorStateReverseExtractor.hasReversed(edge) ? wayGeometry.reverse() : wayGeometry;
Geometry cutoffGeometry = circle.intersection(originalGeometry);
EdgeIteratorTravelDirection travelDirection = determineEdgeDirection(edge, network.getEncodingManager(),
- profile.getVehicle());
+ profile.getName());
int matchedLinkId = edge.get(network.getEncodingManager().getIntEncodedValue(WAY_ID_KEY));
+ int matchedReversedLinkId = edge.get(network.getEncodingManager().getIntEncodedValue(REVERSED_LINK_ID));
var matchedQueryResult = MatchedQueryResult.builder()
.matchedLinkId(matchedLinkId)
+ .matchedReversedLinkId(matchedReversedLinkId)
.inputPoint(singlePointLocation.getPoint())
.cutoffDistance(singlePointLocation.getCutoffDistance())
.bearingFilter(singlePointLocation.getBearingFilter())
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherFactory.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherFactory.java
index 9b94d7b8..80634b5d 100644
--- a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherFactory.java
+++ b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherFactory.java
@@ -27,4 +27,5 @@ public SinglePointMapMatcher createMapMatcher(NetworkGraphHopper preInitializedN
geometryFactoryWgs84, fractionAndDistanceCalculator, preInitializedNetwork, profileName,
closestPointService);
}
+
}
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/starttoend/StartToEndMapMatcher.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/starttoend/StartToEndMapMatcher.java
index 60113f47..1872a5ab 100644
--- a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/starttoend/StartToEndMapMatcher.java
+++ b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/starttoend/StartToEndMapMatcher.java
@@ -18,6 +18,7 @@
import com.graphhopper.storage.BaseGraph;
import com.graphhopper.storage.index.LocationIndexTree;
import com.graphhopper.storage.index.Snap;
+import com.graphhopper.util.CustomModel;
import com.graphhopper.util.PMap;
import java.util.ArrayList;
import java.util.Comparator;
@@ -30,6 +31,7 @@
import nu.ndw.nls.routingmapmatcher.model.linestring.LineStringLocation;
import nu.ndw.nls.routingmapmatcher.model.linestring.LineStringMatch;
import nu.ndw.nls.routingmapmatcher.network.NetworkGraphHopper;
+import nu.ndw.nls.routingmapmatcher.util.Constants;
import nu.ndw.nls.routingmapmatcher.util.LineStringMatchUtil;
import nu.ndw.nls.routingmapmatcher.util.LineStringScoreUtil;
import org.locationtech.jts.geom.Point;
@@ -62,7 +64,12 @@ public StartToEndMapMatcher(NetworkGraphHopper networkGraphHopper, String profil
this.locationIndexTree = networkGraphHopper.getLocationIndex();
this.lineStringMatchUtil = new LineStringMatchUtil(networkGraphHopper, profile, fractionAndDistanceCalculator);
this.lineStringScoreUtil = new LineStringScoreUtil(fractionAndDistanceCalculator);
- this.weighting = networkGraphHopper.createWeighting(profile, new PMap());
+ this.weighting = networkGraphHopper.createWeighting(profile, createShortestDistanceHints());
+ }
+
+ private PMap createShortestDistanceHints() {
+ return new PMap()
+ .putObject(CustomModel.KEY, Constants.SHORTEST_CUSTOM_MODEL);
}
public LineStringMatch match(LineStringLocation lineStringLocation) {
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/util/Constants.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/util/Constants.java
new file mode 100644
index 00000000..825b41cc
--- /dev/null
+++ b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/util/Constants.java
@@ -0,0 +1,12 @@
+package nu.ndw.nls.routingmapmatcher.util;
+
+import com.graphhopper.util.CustomModel;
+import lombok.experimental.UtilityClass;
+
+@UtilityClass
+public class Constants {
+
+ public static final double WEIGHTING_SHORTEST_DISTANCE_INFLUENCE = 10_000D;
+ public static final CustomModel SHORTEST_CUSTOM_MODEL = new CustomModel()
+ .setDistanceInfluence(WEIGHTING_SHORTEST_DISTANCE_INFLUENCE);
+}
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/util/LineStringMatchUtil.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/util/LineStringMatchUtil.java
index bab9e509..5780f893 100644
--- a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/util/LineStringMatchUtil.java
+++ b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/util/LineStringMatchUtil.java
@@ -1,21 +1,18 @@
package nu.ndw.nls.routingmapmatcher.util;
+import static nu.ndw.nls.routingmapmatcher.util.Constants.SHORTEST_CUSTOM_MODEL;
+
import com.graphhopper.config.Profile;
import com.graphhopper.routing.Path;
-import com.graphhopper.routing.ev.BooleanEncodedValue;
-import com.graphhopper.routing.ev.DecimalEncodedValue;
-import com.graphhopper.routing.ev.VehicleAccess;
-import com.graphhopper.routing.ev.VehicleSpeed;
import com.graphhopper.routing.querygraph.QueryGraph;
import com.graphhopper.routing.util.EncodingManager;
-import com.graphhopper.routing.weighting.ShortestWeighting;
import com.graphhopper.routing.weighting.Weighting;
-import com.graphhopper.storage.BaseGraph;
import com.graphhopper.storage.EdgeIteratorStateReverseExtractor;
-import com.graphhopper.storage.index.LocationIndexTree;
+import com.graphhopper.util.CustomModel;
import com.graphhopper.util.EdgeIteratorState;
import com.graphhopper.util.FetchMode;
import com.graphhopper.util.Helper;
+import com.graphhopper.util.PMap;
import com.graphhopper.util.PathSimplification;
import com.graphhopper.util.PointList;
import com.graphhopper.util.RamerDouglasPeucker;
@@ -47,28 +44,32 @@ public class LineStringMatchUtil {
private final MatchedLinkMapper matchedLinkMapper = new MatchedLinkMapper();
private final FractionAndDistanceCalculator fractionAndDistanceCalculator;
- private LineStringMatchUtil(LocationIndexTree locationIndexTree, BaseGraph baseGraph,
- EncodingManager encodingManager, Profile profile,
+ public LineStringMatchUtil(NetworkGraphHopper networkGraphHopper, Profile profile,
FractionAndDistanceCalculator fractionAndDistanceCalculator) {
- this.encodingManager = encodingManager;
+
+ PMap requestHints = createShortestDistanceHints();
+ Weighting shortestWeighting = networkGraphHopper.createWeighting(profile, requestHints);
+
+ this.encodingManager = networkGraphHopper.getEncodingManager();
this.fractionAndDistanceCalculator = fractionAndDistanceCalculator;
- BooleanEncodedValue accessEnc = encodingManager.getBooleanEncodedValue(VehicleAccess.key(profile.getVehicle()));
- DecimalEncodedValue speedEnc = encodingManager.getDecimalEncodedValue(VehicleSpeed.key(profile.getVehicle()));
- Weighting weighting = new ShortestWeighting(accessEnc, speedEnc);
EdgeIteratorStateReverseExtractor edgeIteratorStateReverseExtractor = new EdgeIteratorStateReverseExtractor();
this.pointListUtil = new PointListUtil();
IsochroneMatchMapper isochroneMatchMapper = new IsochroneMatchMapper(encodingManager,
- edgeIteratorStateReverseExtractor, pointListUtil,fractionAndDistanceCalculator);
- this.isochroneService = new IsochroneService(encodingManager, baseGraph, edgeIteratorStateReverseExtractor,
- isochroneMatchMapper, new ShortestPathTreeFactory(weighting), locationIndexTree, profile);
+ edgeIteratorStateReverseExtractor, pointListUtil, fractionAndDistanceCalculator);
+ this.isochroneService = new IsochroneService(encodingManager,
+ networkGraphHopper.getBaseGraph(),
+ isochroneMatchMapper,
+ new ShortestPathTreeFactory(shortestWeighting, networkGraphHopper.getEncodingManager()),
+ networkGraphHopper.getLocationIndex(),
+ profile);
}
- public LineStringMatchUtil(NetworkGraphHopper networkGraphHopper, Profile profile,
- FractionAndDistanceCalculator fractionAndDistanceCalculator) {
- this(networkGraphHopper.getLocationIndex(), networkGraphHopper.getBaseGraph(),
- networkGraphHopper.getEncodingManager(), profile, fractionAndDistanceCalculator);
+ private PMap createShortestDistanceHints() {
+ return new PMap()
+ .putObject(CustomModel.KEY, SHORTEST_CUSTOM_MODEL);
}
+
public LineStringMatch createMatch(LineStringLocation lineStringLocation, Path path, QueryGraph queryGraph,
double reliability) {
List edges = path.calcEdges();
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/util/PathUtil.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/util/PathUtil.java
index 7eed4832..79d52411 100644
--- a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/util/PathUtil.java
+++ b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/util/PathUtil.java
@@ -1,5 +1,6 @@
package nu.ndw.nls.routingmapmatcher.util;
+import static nu.ndw.nls.routingmapmatcher.network.model.Link.REVERSED_LINK_ID;
import static nu.ndw.nls.routingmapmatcher.network.model.Link.WAY_ID_KEY;
import com.graphhopper.routing.ev.VehicleAccess;
@@ -32,18 +33,33 @@ public static List determineMatchedLinks(EncodingManager encodi
Collection edges) {
List matchedEdgeLinks = new ArrayList<>();
for (EdgeIteratorState edge : edges) {
- int matchedLinkId = edge.get(encodingManager.getIntEncodedValue(WAY_ID_KEY));
+ boolean reversed = EDGE_ITERATOR_STATE_REVERSE_EXTRACTOR.hasReversed(edge);
+ int matchedLinkId = reversed && hasReversedLinkId(encodingManager, edge)
+ ? getReversedLinkId(encodingManager, edge)
+ : getLinkId(encodingManager, edge);
if (matchedEdgeLinks.isEmpty() ||
matchedEdgeLinks.getLast().getLinkId() != matchedLinkId) {
matchedEdgeLinks.add(MatchedEdgeLink.builder()
.linkId(matchedLinkId)
- .reversed(EDGE_ITERATOR_STATE_REVERSE_EXTRACTOR.hasReversed(edge))
+ .reversed(reversed && !hasReversedLinkId(encodingManager, edge))
.build());
}
}
return matchedEdgeLinks;
}
+ private static int getLinkId(EncodingManager encodingManager, EdgeIteratorState edge) {
+ return edge.get(encodingManager.getIntEncodedValue(WAY_ID_KEY));
+ }
+
+ private static int getReversedLinkId(EncodingManager encodingManager, EdgeIteratorState edge) {
+ return edge.get(encodingManager.getIntEncodedValue(REVERSED_LINK_ID));
+ }
+
+ private static boolean hasReversedLinkId(EncodingManager encodingManager, EdgeIteratorState edge) {
+ return getReversedLinkId(encodingManager, edge) > 0L;
+ }
+
/**
* This method determines the direction on which one can travel over a path. We always need to validate the travel
* direction because of the way how graphhopper creates node indexes and always wants to store edges with the lower
@@ -101,8 +117,6 @@ public static double determineEndLinkFraction(EdgeIteratorState lastEdge, QueryG
.getEndPoint().getCoordinate();
return fractionAndDistanceCalculator.calculateFractionAndDistance(originalGeometry, coordinate)
.getFraction();
-
-
}
private static EdgeIteratorState findOriginalEdge(EdgeIteratorState edge, QueryGraph queryGraph) {
diff --git a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/viterbi/ViterbiLineStringMapMatcher.java b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/viterbi/ViterbiLineStringMapMatcher.java
index 5b4c9e9c..87f3a2c4 100644
--- a/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/viterbi/ViterbiLineStringMapMatcher.java
+++ b/map-matcher-library/src/main/java/nu/ndw/nls/routingmapmatcher/viterbi/ViterbiLineStringMapMatcher.java
@@ -1,5 +1,6 @@
package nu.ndw.nls.routingmapmatcher.viterbi;
+import static nu.ndw.nls.routingmapmatcher.util.Constants.WEIGHTING_SHORTEST_DISTANCE_INFLUENCE;
import static nu.ndw.nls.routingmapmatcher.util.MatchUtil.getQueryResults;
import com.google.common.base.Preconditions;
@@ -15,6 +16,7 @@
import com.graphhopper.routing.weighting.Weighting;
import com.graphhopper.storage.index.LocationIndexTree;
import com.graphhopper.storage.index.Snap;
+import com.graphhopper.util.CustomModel;
import com.graphhopper.util.PMap;
import com.graphhopper.util.Parameters;
import com.graphhopper.util.PathSimplification;
@@ -31,6 +33,7 @@
import nu.ndw.nls.routingmapmatcher.model.linestring.LineStringLocation;
import nu.ndw.nls.routingmapmatcher.model.linestring.LineStringMatch;
import nu.ndw.nls.routingmapmatcher.network.NetworkGraphHopper;
+import nu.ndw.nls.routingmapmatcher.util.Constants;
import nu.ndw.nls.routingmapmatcher.util.LineStringMatchUtil;
import nu.ndw.nls.routingmapmatcher.util.LineStringScoreUtil;
import nu.ndw.nls.routingmapmatcher.util.PointListUtil;
@@ -135,6 +138,7 @@ private MapMatching createMapMatching(LineStringLocation lineStringLocation, PMa
private PMap createHints() {
PMap hints = new PMap();
+ hints.putObject(CustomModel.KEY, Constants.SHORTEST_CUSTOM_MODEL);
hints.putObject(PROFILE_KEY, this.profile.getName());
hints.putObject(Parameters.CH.DISABLE, true);
return hints;
diff --git a/map-matcher-library/src/test/java/com/graphhopper/routing/querygraph/QueryGraphWeightingAdapterTest.java b/map-matcher-library/src/test/java/com/graphhopper/routing/querygraph/QueryGraphWeightingAdapterTest.java
index de183755..b9ad5bbd 100644
--- a/map-matcher-library/src/test/java/com/graphhopper/routing/querygraph/QueryGraphWeightingAdapterTest.java
+++ b/map-matcher-library/src/test/java/com/graphhopper/routing/querygraph/QueryGraphWeightingAdapterTest.java
@@ -1,12 +1,14 @@
package com.graphhopper.routing.querygraph;
+import static nu.ndw.nls.routingmapmatcher.network.model.Link.WAY_ID_KEY;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.InstanceOfAssertFactories.DOUBLE;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoInteractions;
import static org.mockito.Mockito.when;
import com.carrotsearch.hppc.IntArrayList;
+import com.graphhopper.routing.ev.IntEncodedValue;
+import com.graphhopper.routing.util.EncodingManager;
import com.graphhopper.routing.weighting.Weighting;
import com.graphhopper.storage.EdgeIteratorStateReverseExtractor;
import com.graphhopper.util.EdgeIteratorState;
@@ -19,17 +21,24 @@
@ExtendWith(MockitoExtension.class)
class QueryGraphWeightingAdapterTest {
- public static final int FIRST_VIRTUAL_NODE_ID = 3;
- public static final int FIRST_VIRTUAL_EDGE_ID = 4;
- public static final double WEIGHT = 1D;
+ private static final int FIRST_VIRTUAL_NODE_ID = 3;
+ private static final int FIRST_VIRTUAL_EDGE_ID = 4;
+ private static final int START_LINK_ID = 10;
+ private static final double WEIGHT = 1D;
+ private static final int NORMAL_EDGE_ID = 2;
+ private static final int VIRTUAL_EDGE_ID = 5;
@Mock
private Weighting weighting;
@Mock
private EdgeIteratorStateReverseExtractor edgeIteratorStateReverseExtractor;
@Mock
+ private EncodingManager encodingManager;
+ @Mock
private EdgeIteratorState edgeState;
@Mock
private IntArrayList closestEdges;
+ @Mock
+ private IntEncodedValue encodedValue;
private QueryGraphWeightingAdapter adapter;
@@ -39,26 +48,58 @@ void setup() {
FIRST_VIRTUAL_EDGE_ID,
closestEdges,
edgeIteratorStateReverseExtractor,
- false);
+ false, START_LINK_ID, encodingManager);
+ }
+
+ @Test
+ void calcEdgeWeight_ok_virtual_edge_no_start_segment() {
+ when(edgeIteratorStateReverseExtractor.hasReversed(edgeState)).thenReturn(true);
+ when(edgeState.get(encodedValue)).thenReturn(0);
+ when(weighting.calcEdgeWeight(edgeState, false)).thenReturn(WEIGHT);
+ when(encodingManager.getIntEncodedValue(WAY_ID_KEY)).thenReturn(encodedValue);
+ when(edgeState.getEdge()).thenReturn(VIRTUAL_EDGE_ID);
+
+ double weight = adapter.calcEdgeWeight(edgeState, false);
+
+ assertThat(weight).isEqualTo(WEIGHT);
+ verify(weighting).calcEdgeWeight(edgeState, false);
+ }
+
+ @Test
+ void calcEdgeWeight_ok_virtual_edge_search_direction_nok() {
+ when(edgeIteratorStateReverseExtractor.hasReversed(edgeState)).thenReturn(false);
+ when(weighting.calcEdgeWeight(edgeState, false)).thenReturn(WEIGHT);
+ when(edgeState.getEdge()).thenReturn(VIRTUAL_EDGE_ID);
+ double weight = adapter.calcEdgeWeight(edgeState, false);
+
+ assertThat(weight).isEqualTo(WEIGHT);
+
+ verify(weighting).calcEdgeWeight(edgeState, false);
}
@Test
void calcEdgeWeight_ok_no_virtual_edge() {
- when(weighting.calcEdgeWeight(edgeState, false))
- .thenReturn(WEIGHT);
- when(edgeState.getEdge()).thenReturn(2);
+ when(weighting.calcEdgeWeight(edgeState, false)).thenReturn(WEIGHT);
+ when(edgeState.getEdge()).thenReturn(NORMAL_EDGE_ID);
double weight = adapter.calcEdgeWeight(edgeState, false);
assertThat(weight).isEqualTo(WEIGHT);
+
verify(weighting).calcEdgeWeight(edgeState, false);
+
verifyNoInteractions(edgeIteratorStateReverseExtractor);
}
@Test
void calcEdgeWeight_ok_virtual_edge_no_access() {
- when(edgeState.getEdge()).thenReturn(5);
+ when(edgeState.getEdge()).thenReturn(VIRTUAL_EDGE_ID);
when(edgeIteratorStateReverseExtractor.hasReversed(edgeState)).thenReturn(true);
+ when(encodingManager.getIntEncodedValue(WAY_ID_KEY)).thenReturn(encodedValue);
+ when(edgeState.get(encodedValue)).thenReturn(START_LINK_ID);
+
double weight = adapter.calcEdgeWeight(edgeState, false);
+
assertThat(weight).isEqualTo(Double.POSITIVE_INFINITY);
verifyNoInteractions(weighting);
}
+
}
diff --git a/map-matcher-library/src/test/java/com/graphhopper/storage/EdgeIteratorStateReverseExtractorTest.java b/map-matcher-library/src/test/java/com/graphhopper/storage/EdgeIteratorStateReverseExtractorTest.java
new file mode 100644
index 00000000..a69af7ed
--- /dev/null
+++ b/map-matcher-library/src/test/java/com/graphhopper/storage/EdgeIteratorStateReverseExtractorTest.java
@@ -0,0 +1,40 @@
+package com.graphhopper.storage;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.catchThrowable;
+import static org.mockito.Mockito.when;
+
+import com.graphhopper.storage.BaseGraph.EdgeIteratorStateImpl;
+import com.graphhopper.util.EdgeIteratorState;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+@ExtendWith(MockitoExtension.class)
+class EdgeIteratorStateReverseExtractorTest {
+
+ @Mock
+ private EdgeIteratorStateImpl edgeIteratorStateImpl;
+
+ @Mock
+ private EdgeIteratorState otherEdgeIteratorState;
+
+ @Test
+ void getEdgeIteratorStateImpl_ok() {
+
+ assertThat(EdgeIteratorStateReverseExtractor.getEdgeIteratorStateImpl(edgeIteratorStateImpl)).isEqualTo(edgeIteratorStateImpl);
+ }
+
+ @Test
+ void getEdgeIteratorStateImpl_invalidObjectType() {
+
+ when(otherEdgeIteratorState.toString()).thenReturn("object_toStringValue");
+
+ assertThat(catchThrowable(
+ () -> EdgeIteratorStateReverseExtractor.getEdgeIteratorStateImpl(otherEdgeIteratorState)))
+ .isExactlyInstanceOf(IllegalArgumentException.class)
+ .hasMessage(
+ "This method can only be called with an EdgeIteratorStateImpl instance of EdgeIteratorState object_toStringValue");
+ }
+}
\ No newline at end of file
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/isochrone/IsochroneServiceTest.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/isochrone/IsochroneServiceTest.java
index 85090e11..9c18ac92 100644
--- a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/isochrone/IsochroneServiceTest.java
+++ b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/isochrone/IsochroneServiceTest.java
@@ -12,7 +12,6 @@
import static org.mockito.Mockito.when;
import com.graphhopper.config.Profile;
-import com.graphhopper.routing.ev.BooleanEncodedValue;
import com.graphhopper.routing.ev.DecimalEncodedValue;
import com.graphhopper.routing.ev.VehicleSpeed;
import com.graphhopper.routing.querygraph.QueryGraph;
@@ -86,8 +85,7 @@ class IsochroneServiceTest {
private EdgeIteratorState currentEdge;
@Mock
private DecimalEncodedValue decimalEncodedValue;
- @Mock
- private BooleanEncodedValue booleanEncodedValue;
+
@Captor
private ArgumentCaptor maxDistanceArgumentCaptor;
@@ -105,20 +103,29 @@ void getUpstreamIsochroneMatches_ok_meters() {
when(location.getUpstreamIsochrone()).thenReturn(ISOCHRONE_VALUE_METERS);
when(location.getUpstreamIsochroneUnit()).thenReturn(IsochroneUnit.METERS);
- when(isochroneMatchMapper.mapToIsochroneMatch(isoLabel, ISOCHRONE_VALUE_METERS, queryGraph, startEdge))
+ when(isochroneMatchMapper.mapToIsochroneMatch(isoLabel, ISOCHRONE_VALUE_METERS, queryGraph, startEdge,
+ true))
.thenReturn(IsochroneMatch.builder().build());
+
wrapWithStaticMock(() -> isochroneService.getUpstreamIsochroneMatches(point, LINK_ID, REVERSED, location));
- verify(shortestPathTreeFactory).createShortestPathTreeByTimeDistanceAndWeight(null, queryGraph,
- TraversalMode.EDGE_BASED, ISOCHRONE_VALUE_METERS, IsochroneUnit.METERS, true);
- }
+ verify(shortestPathTreeFactory).createShortestPathTreeByTimeDistanceAndWeight(
+ null,
+ queryGraph,
+ TraversalMode.EDGE_BASED,
+ ISOCHRONE_VALUE_METERS,
+ IsochroneUnit.METERS,
+ true,
+ REVERSED,
+ LINK_ID);
+ }
@Test
void getUpstreamIsochroneMatches_ok_seconds() {
IsoLabel endLabel = createIsoLabel(200, 10800, 1, 2, 10800);
setupFixture();
doSearchWithMockConsumer(endLabel);
- when(profile.getVehicle()).thenReturn(VEHICLE_CAR);
+ when(profile.getName()).thenReturn(VEHICLE_CAR);
when(location.getUpstreamIsochrone()).thenReturn(ISOCHRONE_VALUE_SECONDS);
when(location.getUpstreamIsochroneUnit()).thenReturn(IsochroneUnit.SECONDS);
@@ -128,9 +135,9 @@ void getUpstreamIsochroneMatches_ok_seconds() {
when(currentEdge.getReverse(decimalEncodedValue)).thenReturn(REVERSE_SPEED);
wrapWithStaticMock(() -> isochroneService.getUpstreamIsochroneMatches(point, LINK_ID, REVERSED, location));
verify(isochroneMatchMapper).mapToIsochroneMatch(eq(endLabel), maxDistanceArgumentCaptor.capture(),
- eq(queryGraph), eq(startEdge));
+ eq(queryGraph), eq(startEdge), eq(true));
verify(shortestPathTreeFactory).createShortestPathTreeByTimeDistanceAndWeight(null, queryGraph,
- TraversalMode.EDGE_BASED, ISOCHRONE_VALUE_SECONDS, IsochroneUnit.SECONDS, true);
+ TraversalMode.EDGE_BASED, ISOCHRONE_VALUE_SECONDS, IsochroneUnit.SECONDS, true, REVERSED, LINK_ID);
Double maxDistance = maxDistanceArgumentCaptor.getValue();
// The max distance based on 8 seconds will be around 200 - ((10.8-8) * 13.89 meters/second) ~ 161.1 meters
assertThat(maxDistance).isCloseTo(161.1, Percentage.withPercentage(0.1));
@@ -141,7 +148,7 @@ void getDownstreamIsochroneMatches_ok_seconds() {
IsoLabel endLabel = createIsoLabel(200, 10800, 1, 2, 10800);
setupFixture();
doSearchWithMockConsumer(endLabel);
- when(profile.getVehicle()).thenReturn(VEHICLE_CAR);
+ when(profile.getName()).thenReturn(VEHICLE_CAR);
when(location.getDownstreamIsochrone()).thenReturn(ISOCHRONE_VALUE_SECONDS);
when(location.getDownstreamIsochroneUnit()).thenReturn(IsochroneUnit.SECONDS);
when(queryGraph.getEdgeIteratorState(anyInt(), anyInt())).thenReturn(currentEdge);
@@ -150,9 +157,9 @@ void getDownstreamIsochroneMatches_ok_seconds() {
when(currentEdge.get(decimalEncodedValue)).thenReturn(SPEED);
wrapWithStaticMock(() -> isochroneService.getDownstreamIsochroneMatches(point, LINK_ID, REVERSED, location));
verify(isochroneMatchMapper).mapToIsochroneMatch(eq(endLabel), maxDistanceArgumentCaptor.capture(),
- eq(queryGraph), eq(startEdge));
+ eq(queryGraph), eq(startEdge), eq(false));
verify(shortestPathTreeFactory).createShortestPathTreeByTimeDistanceAndWeight(null, queryGraph,
- TraversalMode.EDGE_BASED, ISOCHRONE_VALUE_SECONDS, IsochroneUnit.SECONDS, false);
+ TraversalMode.EDGE_BASED, ISOCHRONE_VALUE_SECONDS, IsochroneUnit.SECONDS, false, REVERSED, LINK_ID);
Double maxDistance = maxDistanceArgumentCaptor.getValue();
// The max distance based on 8 seconds will be around 200 - ((10.8-8) * 27.77 meters/second) ~ 122.2 meters
assertThat(maxDistance).isCloseTo(122.2, Percentage.withPercentage(0.1));
@@ -165,11 +172,12 @@ void getDownstreamIsochroneMatches_ok_meters() {
doSearchWithMockConsumer(isoLabel);
when(location.getDownstreamIsochrone()).thenReturn(ISOCHRONE_VALUE_METERS);
when(location.getDownstreamIsochroneUnit()).thenReturn(IsochroneUnit.METERS);
- when(isochroneMatchMapper.mapToIsochroneMatch(isoLabel, ISOCHRONE_VALUE_METERS, queryGraph, startEdge))
+ when(isochroneMatchMapper.mapToIsochroneMatch(isoLabel, ISOCHRONE_VALUE_METERS, queryGraph, startEdge,
+ false))
.thenReturn(IsochroneMatch.builder().build());
wrapWithStaticMock(() -> isochroneService.getDownstreamIsochroneMatches(point, LINK_ID, REVERSED, location));
verify(shortestPathTreeFactory).createShortestPathTreeByTimeDistanceAndWeight(null, queryGraph,
- TraversalMode.EDGE_BASED, ISOCHRONE_VALUE_METERS, IsochroneUnit.METERS, false);
+ TraversalMode.EDGE_BASED, ISOCHRONE_VALUE_METERS, IsochroneUnit.METERS, false, REVERSED, LINK_ID);
}
private void wrapWithStaticMock(Runnable function) {
@@ -182,7 +190,7 @@ private void wrapWithStaticMock(Runnable function) {
private void doSearchWithMockConsumer(IsoLabel isoLabel) {
when(startSegment.getClosestEdge()).thenReturn(startEdge);
when(shortestPathTreeFactory.createShortestPathTreeByTimeDistanceAndWeight(any(), any(), any(), anyDouble(),
- any(), anyBoolean())).thenReturn(isochroneByTimeDistanceAndWeight);
+ any(), anyBoolean(), anyBoolean(), eq(LINK_ID))).thenReturn(isochroneByTimeDistanceAndWeight);
doAnswer(ans -> {
Consumer callback = ans.getArgument(1, Consumer.class);
callback.accept(isoLabel);
@@ -190,7 +198,6 @@ private void doSearchWithMockConsumer(IsoLabel isoLabel) {
}).when(isochroneByTimeDistanceAndWeight).search(eq(START_NODE_ID), any());
}
-
private void setupFixture() {
when(point.getY()).thenReturn(Y_COORDINATE);
when(point.getX()).thenReturn(X_COORDINATE);
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/isochrone/mappers/IsochroneMatchMapperTest.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/isochrone/mappers/IsochroneMatchMapperTest.java
index 0dac8aa5..a20a2cfd 100644
--- a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/isochrone/mappers/IsochroneMatchMapperTest.java
+++ b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/isochrone/mappers/IsochroneMatchMapperTest.java
@@ -2,6 +2,7 @@
import static nu.ndw.nls.routingmapmatcher.isochrone.IsochroneTestHelper.createIsoLabel;
import static nu.ndw.nls.routingmapmatcher.isochrone.IsochroneTestHelper.createIsoLabelWithNonRootParent;
+import static nu.ndw.nls.routingmapmatcher.network.model.Link.REVERSED_LINK_ID;
import static nu.ndw.nls.routingmapmatcher.network.model.Link.WAY_ID_KEY;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.when;
@@ -43,6 +44,7 @@ class IsochroneMatchMapperTest {
private static final Coordinate COORDINATE_3 = new Coordinate(5.430860, 52.174151);
private static final int MATCHED_LINK_ID_ONE = 1;
private static final int PARENT_LINK_ID = 2;
+ private static final int MATCHED_REVERSED_LINK_ID = 42;
@Mock
private QueryGraph queryGraph;
@@ -53,19 +55,21 @@ class IsochroneMatchMapperTest {
@Mock
private EdgeIteratorState currentEdge;
-
@Mock
private EdgeIteratorState parentEdge;
-
@Mock
private EdgeIteratorState startEdge;
+
@Mock
private EdgeIteratorStateReverseExtractor edgeIteratorStateReverseExtractor;
@Mock
private PointList pointList;
@Mock
- private IntEncodedValue intEncodedValue;
+ private IntEncodedValue matchedLinkIdEncodedValue;
+ @Mock
+ private IntEncodedValue matchedReversedLinkIdEncodedValue;
+
@Autowired
private FractionAndDistanceCalculator fractionAndDistanceCalculator;
@@ -75,9 +79,9 @@ class IsochroneMatchMapperTest {
private IsochroneMatchMapper isochroneMatchMapper;
-
@BeforeEach
void setup() {
+
GeometryFactory geometryFactory = new GeometryFactoryWgs84();
startSegmentWayGeometry = geometryFactory.createLineString(new Coordinate[]{
COORDINATE_1,
@@ -94,92 +98,202 @@ void setup() {
@Test
void mapToIsochroneMatch_ok_parent() {
+
IsoLabel isoLabel = createIsoLabelWithNonRootParent(0, 0);
- setupFixture(false, 0, isoLabel);
+ setupFixture(0, isoLabel);
+
when(pointListUtil.toLineString(pointList)).thenReturn(isoLabelWayGeometry);
when(queryGraph.getEdgeIteratorState(isoLabel.getParent().getEdge(), isoLabel.getParent().getNode()))
.thenReturn(parentEdge);
- when(parentEdge.get(intEncodedValue)).thenReturn(PARENT_LINK_ID);
+ when(parentEdge.get(matchedLinkIdEncodedValue)).thenReturn(PARENT_LINK_ID);
+ when(edgeIteratorStateReverseExtractor.hasReversed(startEdge)).thenReturn(false);
when(edgeIteratorStateReverseExtractor.hasReversed(parentEdge)).thenReturn(false);
- IsochroneMatch result = isochroneMatchMapper.mapToIsochroneMatch(isoLabel, MAX_DISTANCE, queryGraph, startEdge);
- assertThat(result.getMatchedLinkId()).isEqualTo(MATCHED_LINK_ID_ONE);
- assertThat(result.getStartFraction()).isEqualTo(0);
- assertThat(result.getEndFraction()).isEqualTo(1.0);
- assertThat(result.isReversed()).isFalse();
- assertThat(result.getGeometry()).isEqualTo(isoLabelWayGeometry);
- assertThat(result.getParentLink().getLinkId()).isEqualTo(PARENT_LINK_ID);
- assertThat(result.getParentLink().isReversed()).isFalse();
+
+ IsochroneMatch isochroneMatch = isochroneMatchMapper.mapToIsochroneMatch(
+ isoLabel,
+ MAX_DISTANCE,
+ queryGraph,
+ startEdge,
+ false);
+
+ assertThat(isochroneMatch.getEdge()).isEqualTo(currentEdge);
+ assertThat(isochroneMatch.getMatchedLinkId()).isEqualTo(MATCHED_LINK_ID_ONE);
+ assertThat(isochroneMatch.getStartFraction()).isEqualTo(0);
+ assertThat(isochroneMatch.getEndFraction()).isEqualTo(1.0);
+ assertThat(isochroneMatch.isReversed()).isFalse();
+ assertThat(isochroneMatch.getGeometry()).isEqualTo(isoLabelWayGeometry);
+ assertThat(isochroneMatch.getParentLink().getLinkId()).isEqualTo(PARENT_LINK_ID);
+ assertThat(isochroneMatch.getParentLink().isReversed()).isFalse();
}
@Test
void mapToIsochroneMatch_ok_startSegment() {
+
IsoLabel isoLabel = createIsoLabel(0, 0);
- setupFixtureStartSegment(false, isoLabel);
- IsochroneMatch result = isochroneMatchMapper.mapToIsochroneMatch(isoLabel, MAX_DISTANCE, queryGraph, startEdge);
- assertThat(result.getMatchedLinkId()).isEqualTo(MATCHED_LINK_ID_ONE);
- assertThat(result.getStartFraction()).isEqualTo(0);
- assertThat(result.getEndFraction()).isEqualTo(0.6337610596812917);
- assertThat(result.isReversed()).isFalse();
- assertThat(result.getGeometry()).isEqualTo(isoLabelWayGeometry);
+ setupFixtureStartSegment(isoLabel);
+ IsochroneMatch isochroneMatch = isochroneMatchMapper.mapToIsochroneMatch(
+ isoLabel,
+ MAX_DISTANCE,
+ queryGraph,
+ startEdge,
+ false);
+
+ assertThat(isochroneMatch.getEdge()).isEqualTo(currentEdge);
+ assertThat(isochroneMatch.getMatchedLinkId()).isEqualTo(MATCHED_LINK_ID_ONE);
+ assertThat(isochroneMatch.getStartFraction()).isEqualTo(0);
+ assertThat(isochroneMatch.getEndFraction()).isEqualTo(0.6337610596812917);
+ assertThat(isochroneMatch.isReversed()).isFalse();
+ assertThat(isochroneMatch.getGeometry()).isEqualTo(isoLabelWayGeometry);
}
@Test
void mapToIsochroneMatch_ok_startSegment_reversed() {
+
IsoLabel isoLabel = createIsoLabel(0, 0);
- setupFixtureStartSegment(true, isoLabel);
- IsochroneMatch result = isochroneMatchMapper.mapToIsochroneMatch(isoLabel, MAX_DISTANCE, queryGraph, startEdge);
- assertThat(result.getMatchedLinkId()).isEqualTo(MATCHED_LINK_ID_ONE);
- assertThat(result.getStartFraction()).isEqualTo(0.3662389403187084);
- assertThat(result.getEndFraction()).isEqualTo(1);
- assertThat(result.isReversed()).isTrue();
- assertThat(result.getGeometry()).isEqualTo(isoLabelWayGeometry.reverse());
+ setupFixtureReversedStartSegment(isoLabel);
+ IsochroneMatch isochroneMatch = isochroneMatchMapper.mapToIsochroneMatch(
+ isoLabel,
+ MAX_DISTANCE,
+ queryGraph,
+ startEdge,
+ false);
+
+ assertThat(isochroneMatch.getEdge()).isEqualTo(currentEdge);
+ assertThat(isochroneMatch.getMatchedLinkId()).isEqualTo(MATCHED_REVERSED_LINK_ID);
+ assertThat(isochroneMatch.getStartFraction()).isEqualTo(0.6337610596812917);
+ assertThat(isochroneMatch.getEndFraction()).isEqualTo(0);
+ assertThat(isochroneMatch.isReversed()).isFalse();
+ assertThat(isochroneMatch.getGeometry()).isEqualTo(isoLabelWayGeometry.reverse());
+ }
+
+ @Test
+ void mapToIsochroneMatch_ok_startSegment_reverseFlow() {
+
+ IsoLabel isoLabel = createIsoLabel(0, 0);
+ setupFixtureReversedFlowStartSegment(isoLabel);
+
+ IsochroneMatch isochroneMatch = isochroneMatchMapper.mapToIsochroneMatch(
+ isoLabel,
+ MAX_DISTANCE,
+ queryGraph,
+ startEdge,
+ true);
+
+ assertThat(isochroneMatch.getMatchedLinkId()).isEqualTo(MATCHED_LINK_ID_ONE);
+ assertThat(isochroneMatch.getStartFraction()).isEqualTo(0.3662389403187083);
+ assertThat(isochroneMatch.getEndFraction()).isEqualTo(1);
+ assertThat(isochroneMatch.isReversed()).isFalse();
+ assertThat(isochroneMatch.getGeometry()).isEqualTo(isoLabelWayGeometry.reverse());
}
@Test
void mapToIsochroneMatch_ok_startSegment_croppedGeometry() {
+
IsoLabel isoLabel = createIsoLabel(250.30366999283603, 0);
Geometry originalGeometry = isoLabelWayGeometry.copy();
- setupFixtureStartSegment(false, isoLabel);
- IsochroneMatch result = isochroneMatchMapper.mapToIsochroneMatch(isoLabel, MAX_DISTANCE, queryGraph, startEdge);
- assertThat(result.getMatchedLinkId()).isEqualTo(MATCHED_LINK_ID_ONE);
- assertThat(result.getStartFraction()).isEqualTo(0.0);
- assertThat(result.getEndFraction()).isEqualTo(0.5063949887068743);
- assertThat(result.isReversed()).isFalse();
- assertThat(result.getGeometry().getLength()).isLessThan(originalGeometry.getLength());
- double lengthInMeters = fractionAndDistanceCalculator.calculateLengthInMeters(result.getGeometry());
+ setupFixtureStartSegment(isoLabel);
+
+ IsochroneMatch isochroneMatch = isochroneMatchMapper.mapToIsochroneMatch(
+ isoLabel,
+ MAX_DISTANCE,
+ queryGraph,
+ startEdge,
+ false);
+
+ assertThat(isochroneMatch.getMatchedLinkId()).isEqualTo(MATCHED_LINK_ID_ONE);
+ assertThat(isochroneMatch.getStartFraction()).isEqualTo(0.0);
+ assertThat(isochroneMatch.getEndFraction()).isEqualTo(0.5063949887068743);
+ assertThat(isochroneMatch.isReversed()).isFalse();
+ assertThat(isochroneMatch.getGeometry().getLength()).isLessThan(originalGeometry.getLength());
+
+ double lengthInMeters = fractionAndDistanceCalculator.calculateLengthInMeters(isochroneMatch.getGeometry());
assertThat(lengthInMeters).isCloseTo(MAX_DISTANCE, Percentage.withPercentage(0.0001));
}
@Test
void mapToIsochroneMatch_ok_croppedGeometry() {
+
Geometry originalGeometry = isoLabelWayGeometry.copy();
IsoLabel isoLabel = createIsoLabel(250.30366999283603, 0);
- setupFixture(false, 2, isoLabel);
+ setupFixture(2, isoLabel);
+
when(pointListUtil.toLineString(pointList)).thenReturn(isoLabelWayGeometry);
- IsochroneMatch result = isochroneMatchMapper.mapToIsochroneMatch(isoLabel, MAX_DISTANCE, queryGraph, startEdge);
- assertThat(result.getMatchedLinkId()).isEqualTo(MATCHED_LINK_ID_ONE);
- assertThat(result.getStartFraction()).isEqualTo(0.0);
- assertThat(result.getEndFraction()).isEqualTo(0.7990314030362362);
- assertThat(result.isReversed()).isFalse();
- assertThat(result.getGeometry().getLength()).isLessThan(originalGeometry.getLength());
- double lengthInMeters = fractionAndDistanceCalculator.calculateLengthInMeters(result.getGeometry());
+
+ IsochroneMatch isochroneMatch = isochroneMatchMapper.mapToIsochroneMatch(
+ isoLabel,
+ MAX_DISTANCE,
+ queryGraph,
+ startEdge,
+ false);
+
+ assertThat(isochroneMatch.getMatchedLinkId()).isEqualTo(MATCHED_LINK_ID_ONE);
+ assertThat(isochroneMatch.getStartFraction()).isEqualTo(0.0);
+ assertThat(isochroneMatch.getEndFraction()).isEqualTo(0.7990314030362362);
+ assertThat(isochroneMatch.isReversed()).isFalse();
+ assertThat(isochroneMatch.getGeometry().getLength()).isLessThan(originalGeometry.getLength());
+
+ double lengthInMeters = fractionAndDistanceCalculator.calculateLengthInMeters(isochroneMatch.getGeometry());
assertThat(lengthInMeters).isCloseTo(MAX_DISTANCE, Percentage.withPercentage(0.0001));
}
- private void setupFixtureStartSegment(boolean reversed, IsoLabel isoLabel) {
+ private void setupFixtureStartSegment(IsoLabel isoLabel) {
+
+ // If reversed EdgeIterator returns reversed geometry
+ LineString wayGeometry = isoLabelWayGeometry;
+ setupFixture(MATCHED_LINK_ID_ONE, isoLabel);
+ when(edgeIteratorStateReverseExtractor.hasReversed(startEdge)).thenReturn(false);
+ when(startEdge.fetchWayGeometry(FetchMode.ALL)).thenReturn(pointList);
+ when(pointListUtil.toLineString(pointList)).thenReturn(wayGeometry, startSegmentWayGeometry);
+ }
+
+ private void setupFixtureReversedStartSegment(IsoLabel isoLabel) {
+
// If reversed EdgeIterator returns reversed geometry
- LineString wayGeometry = reversed ? isoLabelWayGeometry.reverse() : isoLabelWayGeometry;
- setupFixture(reversed, MATCHED_LINK_ID_ONE, isoLabel);
+ LineString wayGeometry = isoLabelWayGeometry.reverse();
+ setupFixtureReversed(MATCHED_REVERSED_LINK_ID, isoLabel);
+ when(edgeIteratorStateReverseExtractor.hasReversed(startEdge)).thenReturn(true);
when(startEdge.fetchWayGeometry(FetchMode.ALL)).thenReturn(pointList);
when(pointListUtil.toLineString(pointList)).thenReturn(wayGeometry, startSegmentWayGeometry);
}
- private void setupFixture(boolean reversed, int startSegmentId, IsoLabel isoLabel) {
+ private void setupFixtureReversedFlowStartSegment(IsoLabel isoLabel) {
+
+ // If reversed EdgeIterator returns reversed geometry
+ LineString wayGeometry = isoLabelWayGeometry;
+ setupFixtureReversedFlow(MATCHED_LINK_ID_ONE, isoLabel);
+ when(edgeIteratorStateReverseExtractor.hasReversed(currentEdge)).thenReturn(true);
+ when(edgeIteratorStateReverseExtractor.hasReversed(startEdge)).thenReturn(true);
+ when(startEdge.fetchWayGeometry(FetchMode.ALL)).thenReturn(pointList);
+ when(pointListUtil.toLineString(pointList)).thenReturn(wayGeometry, startSegmentWayGeometry);
+ }
+
+ private void setupFixture(int linkId, IsoLabel isoLabel) {
+
+ when(queryGraph.getEdgeIteratorState(isoLabel.getEdge(), isoLabel.getNode())).thenReturn(currentEdge);
+ when(edgeIteratorStateReverseExtractor.hasReversed(currentEdge)).thenReturn(false);
+ when(encodingManager.getIntEncodedValue(WAY_ID_KEY)).thenReturn(matchedLinkIdEncodedValue);
+ when(currentEdge.get(matchedLinkIdEncodedValue)).thenReturn(MATCHED_LINK_ID_ONE);
+ when(startEdge.get(matchedLinkIdEncodedValue)).thenReturn(linkId);
+ when(currentEdge.fetchWayGeometry(FetchMode.ALL)).thenReturn(pointList);
+ }
+
+ private void setupFixtureReversed(int linkId, IsoLabel isoLabel) {
+
+ when(queryGraph.getEdgeIteratorState(isoLabel.getEdge(), isoLabel.getNode())).thenReturn(currentEdge);
+ when(edgeIteratorStateReverseExtractor.hasReversed(currentEdge)).thenReturn(true);
+ when(encodingManager.getIntEncodedValue(REVERSED_LINK_ID)).thenReturn(matchedReversedLinkIdEncodedValue);
+ when(currentEdge.get(matchedReversedLinkIdEncodedValue)).thenReturn(MATCHED_REVERSED_LINK_ID);
+ when(startEdge.get(matchedReversedLinkIdEncodedValue)).thenReturn(linkId);
+ when(currentEdge.fetchWayGeometry(FetchMode.ALL)).thenReturn(pointList);
+ }
+
+ private void setupFixtureReversedFlow(int linkId, IsoLabel isoLabel) {
+
when(queryGraph.getEdgeIteratorState(isoLabel.getEdge(), isoLabel.getNode())).thenReturn(currentEdge);
- when(edgeIteratorStateReverseExtractor.hasReversed(currentEdge)).thenReturn(reversed, false);
- when(encodingManager.getIntEncodedValue(WAY_ID_KEY)).thenReturn(intEncodedValue);
- when(currentEdge.get(intEncodedValue)).thenReturn(MATCHED_LINK_ID_ONE);
- when(startEdge.get(intEncodedValue)).thenReturn(startSegmentId);
+ when(edgeIteratorStateReverseExtractor.hasReversed(currentEdge)).thenReturn(true);
+ when(encodingManager.getIntEncodedValue(WAY_ID_KEY)).thenReturn(matchedLinkIdEncodedValue);
+ when(currentEdge.get(matchedLinkIdEncodedValue)).thenReturn(MATCHED_LINK_ID_ONE);
+ when(startEdge.get(matchedLinkIdEncodedValue)).thenReturn(linkId);
when(currentEdge.fetchWayGeometry(FetchMode.ALL)).thenReturn(pointList);
}
}
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/CustomRoutingWithRestrictionsTest.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/CustomRoutingWithRestrictionsTest.java
index 5834f276..42cc15f2 100644
--- a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/CustomRoutingWithRestrictionsTest.java
+++ b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/CustomRoutingWithRestrictionsTest.java
@@ -1,5 +1,6 @@
package nu.ndw.nls.routingmapmatcher.network;
+import static nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.CAR;
import static nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.HGV_ACCESSIBLE_KEY;
import static nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.getTestNetwork;
import static org.assertj.core.api.Assertions.assertThat;
@@ -24,8 +25,6 @@
@Slf4j
public class CustomRoutingWithRestrictionsTest {
- private static final String CAR_FASTEST = "car_fastest";
-
private static final Coordinate START_NODE = new Coordinate(5.108409, 52.081079);
private static final Coordinate NODE_A = new Coordinate(5.1099461, 52.0794303);
private static final Coordinate NODE_B = new Coordinate(5.1110934, 52.0782690);
@@ -100,7 +99,7 @@ private static void liftHgvRestriction(NetworkGraphHopper graphHopper) {
private static GHRequest getRequest(GHPoint from, GHPoint to) {
return new GHRequest()
- .setProfile(CAR_FASTEST)
+ .setProfile(CAR)
.addPoint(from)
.addPoint(to);
}
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/LinkVehicleMapperProviderTest.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/LinkVehicleMapperProviderTest.java
index 80f4b19f..b8f8959e 100644
--- a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/LinkVehicleMapperProviderTest.java
+++ b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/LinkVehicleMapperProviderTest.java
@@ -88,22 +88,21 @@ private LinkVehicleMapper mockVehicle(Class linkClass, St
private static class TestALink extends Link {
public TestALink() {
- super(0, 1, 2, 5.0, null);
+ super(0, 1, 2, 5.0, null, null);
}
}
private static class TestBLink extends Link {
public TestBLink() {
- super(0, 1, 2, 5.0, null);
+ super(0, 1, 2, 5.0, null, null);
}
}
private static class TestCLink extends Link {
public TestCLink() {
- super(0, 1, 2, 5.0, null);
+ super(0, 1, 2, 5.0, null, null);
}
}
-
-}
\ No newline at end of file
+}
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/annotations/mappers/DirectionalFieldGenericTypeArgumentMapperTest.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/annotations/mappers/DirectionalFieldGenericTypeArgumentMapperTest.java
index 8578e91c..4b6f4dcd 100644
--- a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/annotations/mappers/DirectionalFieldGenericTypeArgumentMapperTest.java
+++ b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/annotations/mappers/DirectionalFieldGenericTypeArgumentMapperTest.java
@@ -14,7 +14,6 @@ class DirectionalFieldGenericTypeArgumentMapperTest {
private final DirectionalFieldGenericTypeArgumentMapper directionalFieldGenericTypeArgumentMapper =
new DirectionalFieldGenericTypeArgumentMapper();
-
@Getter
@Setter
private static class TestDto extends Link {
@@ -24,7 +23,7 @@ private static class TestDto extends Link {
private DirectionalDto integerField;
protected TestDto(long id, long fromNodeId, long toNodeId, double distanceInMeters, LineString geometry) {
- super(id, fromNodeId, toNodeId, distanceInMeters, geometry);
+ super(id, fromNodeId, toNodeId, distanceInMeters, geometry, null);
}
}
@@ -33,7 +32,4 @@ void map() {
assertEquals(String.class, directionalFieldGenericTypeArgumentMapper.map(TestDto.class, "stringField"));
assertEquals(Integer.class, directionalFieldGenericTypeArgumentMapper.map(TestDto.class, "integerField"));
}
-
-
-
-}
\ No newline at end of file
+}
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/annotations/mappers/EncodedValuesMapperTest.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/annotations/mappers/EncodedValuesMapperTest.java
index e5613693..1d295da4 100644
--- a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/annotations/mappers/EncodedValuesMapperTest.java
+++ b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/annotations/mappers/EncodedValuesMapperTest.java
@@ -21,7 +21,6 @@ class EncodedValuesMapperTest {
private final EncodedValuesMapper encodedValuesMapper = new EncodedValuesMapper(new AnnotationMapper(),
new DirectionalFieldGenericTypeArgumentMapper());
-
@Getter
public static class MyLink extends Link {
@@ -29,12 +28,11 @@ public static class MyLink extends Link {
protected MyLink(long id, long fromNodeId, long toNodeId, double distanceInMeters, LineString geometry,
Boolean booleanField, DirectionalDto directionalInteger) {
super(id, fromNodeId, toNodeId, distanceInMeters,
- geometry);
+ geometry, null);
this.booleanField = booleanField;
this.directionalInteger = directionalInteger;
}
-
@EncodedValue(key = "booleanField")
private final Boolean booleanField;
@@ -74,8 +72,6 @@ void map() {
assertNull(id.valueReverseSupplier());
assertEquals(1L, id.valueSupplier().apply(myLinkInstance));
-
-
EncodedValueDto booleanField = map.get(Boolean.class, "booleanField");
assertEquals("booleanField", booleanField.key());
assertEquals( Boolean.class, booleanField.valueType());
@@ -85,7 +81,6 @@ void map() {
assertNull(booleanField.valueReverseSupplier());
assertTrue(booleanField.valueSupplier().apply(myLinkInstance));
-
EncodedValueDto directionalIntegerField = map.get(Integer.class, "directionalInteger");
assertEquals("directionalInteger", directionalIntegerField.key());
assertEquals( Integer.class, directionalIntegerField.valueType());
@@ -95,6 +90,5 @@ void map() {
assertNotNull(directionalIntegerField.valueReverseSupplier());
assertEquals(10, directionalIntegerField.valueSupplier().apply(myLinkInstance));
assertEquals(20, directionalIntegerField.valueReverseSupplier().apply(myLinkInstance));
-
}
-}
\ No newline at end of file
+}
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/init/annotation/AnnotatedEncodedMapperFactoryTest.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/init/annotation/AnnotatedEncodedMapperFactoryTest.java
deleted file mode 100644
index 5b1dd750..00000000
--- a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/init/annotation/AnnotatedEncodedMapperFactoryTest.java
+++ /dev/null
@@ -1,132 +0,0 @@
-package nu.ndw.nls.routingmapmatcher.network.init.annotation;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.mockito.Mockito.when;
-
-import com.graphhopper.routing.ev.EncodedValueLookup;
-import com.graphhopper.util.PMap;
-import java.util.Optional;
-import nu.ndw.nls.routingmapmatcher.network.annotations.model.EncodedValueDto;
-import nu.ndw.nls.routingmapmatcher.network.annotations.model.EncodedValuesByTypeDto;
-import nu.ndw.nls.routingmapmatcher.network.init.annotation.mappers.AbstractEncodedMapper;
-import nu.ndw.nls.routingmapmatcher.network.model.Link;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.locationtech.jts.geom.LineString;
-import org.mockito.Mock;
-import org.mockito.junit.jupiter.MockitoExtension;
-
-@ExtendWith(MockitoExtension.class)
-class AnnotatedEncodedMapperFactoryTest {
-
- public static final String FIELD_KEY_BOOLEAN = "field_key_boolean";
- public static final String FIELD_KEY_STRING = "field_key_string";
-
- private static class MyLink extends Link {
-
- public MyLink(long id, long fromNodeId, long toNodeId, double distanceInMeters, LineString geometry) {
- super(id, fromNodeId, toNodeId, distanceInMeters, geometry);
- }
- }
-
- @Mock
- private EncodedMapperFactoryRegistry encodedMapperFactoryRegistry;
- @Mock
- private nu.ndw.nls.routingmapmatcher.network.init.annotation.parserfactories.EncodedMapperFactory booleanEncodedMapperFactory;
-
- @Mock
- private nu.ndw.nls.routingmapmatcher.network.init.annotation.parserfactories.EncodedMapperFactory stringEncodedMapperFactory;
-
- @Mock
- private EncodedValuesByTypeDto encodedValuesByTypeDto;
-
- @Mock
- private EncodedValueLookup encodedValueLookup;
-
- @Mock
- private PMap map;
-
- @Mock
- private AbstractEncodedMapper booleanEncodedMapper;
-
- @Mock
- private AbstractEncodedMapper stringEncodedMapper;
-
- @Mock
- private EncodedValueDto fieldKeyBooleanEncodedValueInstance;
- @Mock
- private EncodedValueDto fieldKeyStringEncodedValueInstance;
-
-
- @Test
- void create_ok_createsEncodedMappers() {
- when(encodedMapperFactoryRegistry.lookupEncodedMapperFactory(Boolean.class))
- .thenReturn(Optional.of(booleanEncodedMapperFactory));
-
- when(encodedMapperFactoryRegistry.lookupEncodedMapperFactory(String.class))
- .thenReturn(Optional.of(stringEncodedMapperFactory));
-
- when(encodedValuesByTypeDto.getValueTypeByKey(FIELD_KEY_BOOLEAN)).thenReturn(Optional.of(Boolean.class));
- when(encodedValuesByTypeDto.get(Boolean.class, FIELD_KEY_BOOLEAN)).thenReturn(
- fieldKeyBooleanEncodedValueInstance);
- when(encodedValuesByTypeDto.getValueTypeByKey(FIELD_KEY_STRING)).thenReturn(Optional.of(String.class));
- when(encodedValuesByTypeDto.get(String.class, FIELD_KEY_STRING)).thenReturn(fieldKeyStringEncodedValueInstance);
-
- when(booleanEncodedMapperFactory.create(encodedValueLookup, fieldKeyBooleanEncodedValueInstance)).thenReturn(
- booleanEncodedMapper);
-
- when(stringEncodedMapperFactory.create(encodedValueLookup, fieldKeyStringEncodedValueInstance)).thenReturn(
- stringEncodedMapper);
-
- AnnotatedEncodedMapperFactory annotatedEncodedMapperFactory =
- new AnnotatedEncodedMapperFactory<>(encodedMapperFactoryRegistry, encodedValuesByTypeDto);
-
- assertEquals(booleanEncodedMapper,
- annotatedEncodedMapperFactory.create(encodedValueLookup, FIELD_KEY_BOOLEAN, map));
- assertEquals(stringEncodedMapper, annotatedEncodedMapperFactory.create(encodedValueLookup, FIELD_KEY_STRING, map));
- }
-
- /**
- * This scenario can occur when an {@link nu.ndw.nls.routingmapmatcher.network.annotations.EncodedValue} is applied
- * on a type for which there is no encoded mapper factory in the spring boot context
- */
- @Test
- void create_fail_missingEncodedFactoryForType() {
- when(encodedMapperFactoryRegistry.lookupEncodedMapperFactory(Boolean.class))
- .thenReturn(Optional.empty());
-
- when(encodedValuesByTypeDto.getValueTypeByKey(FIELD_KEY_BOOLEAN)).thenReturn(Optional.of(Boolean.class));
-
- AnnotatedEncodedMapperFactory annotatedEncodedMapperFactory =
- new AnnotatedEncodedMapperFactory<>(encodedMapperFactoryRegistry, encodedValuesByTypeDto);
-
- IllegalStateException illegalStateException = assertThrows(IllegalStateException.class, () -> {
- annotatedEncodedMapperFactory.create(encodedValueLookup, FIELD_KEY_BOOLEAN, map);
- });
-
-
- assertEquals("No tag parser found for name: field_key_boolean with type: class java.lang.Boolean",
- illegalStateException.getMessage());
- }
-
- /**
- * This scenario should never occur, because it means that GraphHopper tries to encode a value for which there
- * is no annotated configuration. If there is no annotated configuration, then the field shouldn't be encoded in
- * the first place.
- */
- @Test
- void create_fail_incorrectState() {
- when(encodedValuesByTypeDto.getValueTypeByKey(FIELD_KEY_BOOLEAN)).thenReturn(Optional.empty());
-
- AnnotatedEncodedMapperFactory annotatedEncodedMapperFactory =
- new AnnotatedEncodedMapperFactory<>(encodedMapperFactoryRegistry, encodedValuesByTypeDto);
-
- IllegalStateException illegalStateException = assertThrows(IllegalStateException.class, () -> {
- annotatedEncodedMapperFactory.create(encodedValueLookup, FIELD_KEY_BOOLEAN, map);
- });
-
- assertEquals("No annotate encoded value configuration found by name: field_key_boolean",
- illegalStateException.getMessage());
- }
-}
\ No newline at end of file
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/init/annotation/AnnotatedEncodedValueFactoryTest.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/init/annotation/AnnotatedEncodedValueFactoryTest.java
deleted file mode 100644
index ecb365c4..00000000
--- a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/init/annotation/AnnotatedEncodedValueFactoryTest.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package nu.ndw.nls.routingmapmatcher.network.init.annotation;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import com.graphhopper.util.PMap;
-import java.util.Optional;
-import nu.ndw.nls.routingmapmatcher.network.annotations.model.EncodedValueDto;
-import nu.ndw.nls.routingmapmatcher.network.annotations.model.EncodedValuesByTypeDto;
-import nu.ndw.nls.routingmapmatcher.network.init.annotation.encodedvaluefactories.EncodedValueFactory;
-import nu.ndw.nls.routingmapmatcher.network.model.Link;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.locationtech.jts.geom.LineString;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.junit.jupiter.MockitoExtension;
-
-@ExtendWith(MockitoExtension.class)
-class AnnotatedEncodedValueFactoryTest {
-
- public static final String VALUE_KEY_A = "value_key_a";
-
- private static class MyLink extends Link {
- protected MyLink(long id, long fromNodeId, long toNodeId, double distanceInMeters,
- LineString geometry) {
- super(id, fromNodeId, toNodeId, distanceInMeters, geometry);
- }
- }
-
- @Mock
- private EncodedValueFactoryRegistry encodedValueFactoryRegistry;
-
- @Mock
- private EncodedValuesByTypeDto encodedValuesByTypeDto;
-
- @Mock
- private EncodedValueDto encodedValueDtoString;
-
- @Mock
- private EncodedValueFactory stringEncodedValueFactory;
-
- @Mock
- private PMap map;
-
- @InjectMocks
- private AnnotatedEncodedValueFactory annotatedEncodedValueFactory;
-
-
- @Test
- void create_ok_encodesType() {
- when(encodedValuesByTypeDto.getValueTypeByKey(VALUE_KEY_A))
- .thenReturn(Optional.of(String.class));
- when(encodedValuesByTypeDto.get(String.class, VALUE_KEY_A)).thenReturn(encodedValueDtoString);
-
- when(encodedValueFactoryRegistry.lookupEncodedValueFactory(String.class))
- .thenReturn(Optional.of(stringEncodedValueFactory));
-
- annotatedEncodedValueFactory.create(VALUE_KEY_A, map);
-
- verify(stringEncodedValueFactory).encode(encodedValueDtoString);
- }
-
- @Test
- void create_fail_noEncodedValueDtoFound() {
- when(encodedValuesByTypeDto.getValueTypeByKey(VALUE_KEY_A))
- .thenReturn(Optional.empty());
-
- IllegalStateException illegalStateException = assertThrows(IllegalStateException.class,
- () -> annotatedEncodedValueFactory.create(VALUE_KEY_A, map));
-
- assertEquals("Field requested for which there is no encoded value annotation: value_key_a",
- illegalStateException.getMessage());
-
- verify(stringEncodedValueFactory, never()).encode(encodedValueDtoString);
- }
-
- @Test
- void create_fail_noEncodedValueFactoryFoundForType() {
- when(encodedValuesByTypeDto.getValueTypeByKey(VALUE_KEY_A))
- .thenReturn(Optional.of(String.class));
- when(encodedValuesByTypeDto.get(String.class, VALUE_KEY_A)).thenReturn(encodedValueDtoString);
-
- when(encodedValueFactoryRegistry.lookupEncodedValueFactory(String.class))
- .thenReturn(Optional.empty());
-
- IllegalStateException illegalStateException = assertThrows(IllegalStateException.class,
- () -> annotatedEncodedValueFactory.create(VALUE_KEY_A, map));
-
- assertEquals("No encoded value factory found for name: value_key_a with type: class java.lang.String",
- illegalStateException.getMessage());
-
-
- verify(stringEncodedValueFactory,never()).encode(encodedValueDtoString);
- }
-}
\ No newline at end of file
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/init/annotation/mappers/AbstractEncodedValueMapperTest.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/init/annotation/mappers/AbstractEncodedValueMapperTest.java
index d3ed3f97..b63797e3 100644
--- a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/init/annotation/mappers/AbstractEncodedValueMapperTest.java
+++ b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/init/annotation/mappers/AbstractEncodedValueMapperTest.java
@@ -26,7 +26,7 @@ class AbstractEncodedValueMapperTest {
private static class MyLink extends Link {
protected MyLink(long id, long fromNodeId, long toNodeId, double distanceInMeters,
LineString geometry) {
- super(id, fromNodeId, toNodeId, distanceInMeters, geometry);
+ super(id, fromNodeId, toNodeId, distanceInMeters, geometry, null);
}
}
@@ -176,4 +176,4 @@ private void assertReverseSetNotInvoked(EncodedValueMapper annotatedParser) {
assertNull(annotatedParser.getEdgeIntAccessReverse());
assertNull(annotatedParser.getValueReverse());
}
-}
\ No newline at end of file
+}
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/init/vehicle/CustomVehicleEncodedValuesFactoryTest.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/init/vehicle/CustomVehicleEncodedValuesFactoryTest.java
deleted file mode 100644
index 4ab147e2..00000000
--- a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/init/vehicle/CustomVehicleEncodedValuesFactoryTest.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package nu.ndw.nls.routingmapmatcher.network.init.vehicle;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-import com.graphhopper.routing.util.VehicleEncodedValues;
-import com.graphhopper.util.PMap;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.junit.jupiter.MockitoExtension;
-
-@ExtendWith(MockitoExtension.class)
-class CustomVehicleEncodedValuesFactoryTest {
-
- @Mock
- PMap properties;
-
- @InjectMocks
- CustomVehicleEncodedValuesFactory factory;
-
- @Test
- void createVehicleEncodedValues_ok() {
-
- VehicleEncodedValues result = factory.createVehicleEncodedValues("vehicle_name", properties);
-
- assertEquals("vehicle_name", result.getName());
- assertEquals("vehicle_name_access", result.getAccessEnc().getName());
- assertEquals("vehicle_name_average_speed", result.getAverageSpeedEnc().getName());
- assertEquals("vehicle_name_turn_restriction", result.getTurnRestrictionEnc().getName());
-
- }
-
-}
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/init/vehicle/LinkImportRegistryTest.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/init/vehicle/LinkImportRegistryTest.java
new file mode 100644
index 00000000..7ed22c3c
--- /dev/null
+++ b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/init/vehicle/LinkImportRegistryTest.java
@@ -0,0 +1,90 @@
+package nu.ndw.nls.routingmapmatcher.network.init.vehicle;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.when;
+
+import com.graphhopper.routing.ev.DefaultImportRegistry;
+import com.graphhopper.routing.ev.ImportUnit;
+import java.util.Map;
+import java.util.Optional;
+import nu.ndw.nls.routingmapmatcher.network.annotations.model.EncodedValueDto;
+import nu.ndw.nls.routingmapmatcher.network.annotations.model.EncodedValuesByTypeDto;
+import nu.ndw.nls.routingmapmatcher.network.init.annotation.EncodedMapperFactoryRegistry;
+import nu.ndw.nls.routingmapmatcher.network.init.annotation.EncodedValueFactoryRegistry;
+import nu.ndw.nls.routingmapmatcher.network.init.annotation.encodedvaluefactories.EncodedValueFactory;
+import nu.ndw.nls.routingmapmatcher.network.model.Link;
+import nu.ndw.nls.routingmapmatcher.network.model.LinkVehicleMapper;
+import nu.ndw.nls.routingmapmatcher.network.model.ProfileAccessAndSpeedAttributes;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+@ExtendWith(MockitoExtension.class)
+class LinkImportRegistryTest {
+
+ public static final String TEST_ATTRIBUTE = "test_attribute";
+ @Mock
+ private EncodedValuesByTypeDto extends Link> encodedValuesByTypeDto;
+ @Mock
+ private EncodedValueFactoryRegistry encodedValueFactoryRegistry;
+ @Mock
+ private EncodedMapperFactoryRegistry classToEncodedMapperFactory;
+ @Mock
+ private Map> linkMappersByVehicleType;
+ @Mock
+ private DefaultImportRegistry defaultImportRegistry;
+ @Mock
+ private ProfileAccessAndSpeedAttributes profileAccessAndSpeedAttributes;
+ @Mock
+ private ImportUnit importUnit;
+ @Mock
+ private EncodedValueDto encodedValueDto;
+ @Mock
+ private EncodedValueFactory encodedValueFactory;
+
+ @InjectMocks
+ private LinkImportRegistry linkImportRegistry;
+
+ @Test
+ void createImportUnit_ok() {
+ when(profileAccessAndSpeedAttributes.isSpeedAttribute(TEST_ATTRIBUTE))
+ .thenReturn(false);
+ when(profileAccessAndSpeedAttributes.isAccessAttribute(TEST_ATTRIBUTE))
+ .thenReturn(false);
+ when(encodedValuesByTypeDto.getValueTypeByKey(TEST_ATTRIBUTE))
+ .thenReturn(Optional.of(String.class));
+ ImportUnit result = linkImportRegistry.createImportUnit(TEST_ATTRIBUTE);
+ assertThat(result).isNotNull();
+ }
+
+ @Test
+ void createImportUnit_ok_access_attribute() {
+ when(profileAccessAndSpeedAttributes.isSpeedAttribute(TEST_ATTRIBUTE))
+ .thenReturn(false);
+ when(profileAccessAndSpeedAttributes.isAccessAttribute(TEST_ATTRIBUTE))
+ .thenReturn(true);
+ ImportUnit result = linkImportRegistry.createImportUnit(TEST_ATTRIBUTE);
+ assertThat(result).isNotNull();
+ }
+
+ @Test
+ void createImportUnit_ok_speed_attribute() {
+ when(profileAccessAndSpeedAttributes.isSpeedAttribute(TEST_ATTRIBUTE))
+ .thenReturn(true);
+ ImportUnit result = linkImportRegistry.createImportUnit(TEST_ATTRIBUTE);
+ assertThat(result).isNotNull();
+ }
+
+ @Test
+ void createImportUnit_ok_default_import_registry() {
+ when(profileAccessAndSpeedAttributes.isSpeedAttribute(TEST_ATTRIBUTE))
+ .thenReturn(false);
+ when(profileAccessAndSpeedAttributes.isAccessAttribute(TEST_ATTRIBUTE))
+ .thenReturn(false);
+ when(defaultImportRegistry.createImportUnit(TEST_ATTRIBUTE)).thenReturn(importUnit);
+ ImportUnit result = linkImportRegistry.createImportUnit(TEST_ATTRIBUTE);
+ assertThat(result).isEqualTo(importUnit);
+ }
+}
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/init/vehicle/LinkVehicleParserFactoryTest.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/init/vehicle/LinkVehicleParserFactoryTest.java
deleted file mode 100644
index 27172e46..00000000
--- a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/init/vehicle/LinkVehicleParserFactoryTest.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package nu.ndw.nls.routingmapmatcher.network.init.vehicle;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertInstanceOf;
-import static org.mockito.Mockito.when;
-
-import com.graphhopper.routing.ev.BooleanEncodedValue;
-import com.graphhopper.routing.ev.DecimalEncodedValue;
-import com.graphhopper.routing.ev.EncodedValueLookup;
-import com.graphhopper.routing.util.VehicleTagParsers;
-import com.graphhopper.util.PMap;
-import java.util.Map;
-import nu.ndw.nls.routingmapmatcher.network.init.vehicle.parsers.LinkAccessParser;
-import nu.ndw.nls.routingmapmatcher.network.init.vehicle.parsers.LinkAverageSpeedParser;
-import nu.ndw.nls.routingmapmatcher.network.model.Link;
-import nu.ndw.nls.routingmapmatcher.network.model.LinkVehicleMapper;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.junit.jupiter.MockitoExtension;
-
-@ExtendWith(MockitoExtension.class)
-class LinkVehicleParserFactoryTest {
-
- private static final String NAME = "vehicle_name";
-
- @Mock
- private Map> linkVehicleMapperMap;
- @Mock
- private LinkVehicleMapper linkVehicleMapper;
- @Mock
- private EncodedValueLookup encodedValueLookup;
- @Mock
- private BooleanEncodedValue encodedAccess;
- @Mock
- private DecimalEncodedValue encodedSpeed;
- @Mock
- PMap properties;
-
- @InjectMocks
- private LinkVehicleParserFactory linkVehicleParserFactory;
-
- @Test
- void createParsers_ok() {
- when(linkVehicleMapperMap.get(NAME)).thenReturn(linkVehicleMapper);
- when(encodedValueLookup.getBooleanEncodedValue("vehicle_name_access")).thenReturn(encodedAccess);
- when(encodedValueLookup.getDecimalEncodedValue("vehicle_name_average_speed")).thenReturn(encodedSpeed);
-
- VehicleTagParsers result = linkVehicleParserFactory.createParsers(encodedValueLookup, NAME, properties);
-
- LinkAccessParser accessParser = assertInstanceOf(LinkAccessParser.class, result.getAccessParser());
- assertEquals(linkVehicleMapper, accessParser.getLinkVehicleMapper());
- assertEquals(encodedAccess, accessParser.getAccessEnc());
-
- LinkAverageSpeedParser averageSpeedParser = assertInstanceOf(LinkAverageSpeedParser.class,
- result.getSpeedParser());
- assertEquals(linkVehicleMapper, averageSpeedParser.getLinkVehicleMapper());
- assertEquals(encodedSpeed, averageSpeedParser.getAverageSpeedEnc());
- }
-
-}
\ No newline at end of file
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/mappers/CustomModelMapperTest.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/mappers/CustomModelMapperTest.java
new file mode 100644
index 00000000..3bd716cb
--- /dev/null
+++ b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/mappers/CustomModelMapperTest.java
@@ -0,0 +1,42 @@
+package nu.ndw.nls.routingmapmatcher.network.mappers;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.when;
+
+import com.graphhopper.config.Profile;
+import com.graphhopper.json.Statement;
+import com.graphhopper.util.CustomModel;
+import java.util.List;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+@ExtendWith(MockitoExtension.class)
+class CustomModelMapperTest {
+
+ @Mock
+ private SpeedAndAccessAttributeMapper speedAndAccessAttributeMapper;
+ @Mock
+ private Profile profile;
+ @InjectMocks
+ private CustomModelMapper customModelMapper;
+
+ @Test
+ void mapToCustomModel_ok() {
+ when(speedAndAccessAttributeMapper.mapToAccessAttribute(profile))
+ .thenReturn("car_access");
+ when(speedAndAccessAttributeMapper.mapToSpeedAttribute(profile))
+ .thenReturn("car_average_speed");
+ CustomModel customModel = customModelMapper.mapToCustomModel(profile);
+ List speedStatements = customModel.getSpeed();
+ List accessStatements = customModel.getPriority();
+ assertThat(speedStatements).hasSize(1);
+ assertThat(accessStatements).hasSize(1);
+ assertThat(speedStatements.getFirst().toString())
+ .isEqualTo("{\"if\": \"true\", \"limit_to\": car_average_speed}");
+ assertThat(accessStatements.getFirst().toString())
+ .isEqualTo("{\"if\": \"car_access == false\", \"multiply_by\": 0}");
+ }
+}
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/mappers/ProfileAccessAndSpeedAttributesMapperTest.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/mappers/ProfileAccessAndSpeedAttributesMapperTest.java
new file mode 100644
index 00000000..43baa76c
--- /dev/null
+++ b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/mappers/ProfileAccessAndSpeedAttributesMapperTest.java
@@ -0,0 +1,42 @@
+package nu.ndw.nls.routingmapmatcher.network.mappers;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.when;
+
+import com.graphhopper.config.Profile;
+import java.util.List;
+import nu.ndw.nls.routingmapmatcher.network.model.ProfileAccessAndSpeedAttributes;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+@ExtendWith(MockitoExtension.class)
+class ProfileAccessAndSpeedAttributesMapperTest {
+
+ private static final String CAR_ACCESS = "car_access";
+ private static final String CAR_AVERAGE_SPEED = "car_average_speed";
+ @Mock
+ private SpeedAndAccessAttributeMapper speedAndAccessAttributeMapper;
+ @Mock
+ private Profile profile;
+ @InjectMocks
+ private ProfileAccessAndSpeedAttributesMapper mapper;
+
+ @Test
+ void map_ok() {
+ when(speedAndAccessAttributeMapper.mapToAccessAttribute(profile))
+ .thenReturn(CAR_ACCESS);
+ when(speedAndAccessAttributeMapper.mapToSpeedAttribute(profile))
+ .thenReturn(CAR_AVERAGE_SPEED);
+ ProfileAccessAndSpeedAttributes result = mapper.map(List.of(profile));
+ ProfileAccessAndSpeedAttributes expected = ProfileAccessAndSpeedAttributes
+ .builder()
+ .speedAttributes(List.of(CAR_AVERAGE_SPEED))
+ .accessAttributes(List.of(CAR_ACCESS))
+ .build();
+ assertThat(result).isEqualTo(expected);
+
+ }
+}
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/mappers/SpeedAndAccessAttributeMapperTest.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/mappers/SpeedAndAccessAttributeMapperTest.java
new file mode 100644
index 00000000..43a789b3
--- /dev/null
+++ b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/mappers/SpeedAndAccessAttributeMapperTest.java
@@ -0,0 +1,39 @@
+package nu.ndw.nls.routingmapmatcher.network.mappers;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.when;
+
+import com.graphhopper.config.Profile;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+@ExtendWith(MockitoExtension.class)
+class SpeedAndAccessAttributeMapperTest {
+
+ private static final String CAR = "car";
+ @Mock
+ private Profile profile;
+ private SpeedAndAccessAttributeMapper mapper;
+
+ @BeforeEach
+ void setUp() {
+ mapper = new SpeedAndAccessAttributeMapper();
+ }
+
+ @Test
+ void mapToSpeedAttribute() {
+ when(profile.getName()).thenReturn(CAR);
+ assertThat(mapper.mapToSpeedAttribute(profile))
+ .isEqualTo("car_average_speed");
+ }
+
+ @Test
+ void mapToAccessAttribute() {
+ when(profile.getName()).thenReturn(CAR);
+ assertThat(mapper.mapToAccessAttribute(profile))
+ .isEqualTo("car_access");
+ }
+}
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/model/ProfileAccessAndSpeedAttributesTest.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/model/ProfileAccessAndSpeedAttributesTest.java
new file mode 100644
index 00000000..9fa46a94
--- /dev/null
+++ b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/network/model/ProfileAccessAndSpeedAttributesTest.java
@@ -0,0 +1,61 @@
+package nu.ndw.nls.routingmapmatcher.network.model;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.List;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+class ProfileAccessAndSpeedAttributesTest {
+
+ private static final String CAR_ACCESS = "car_access";
+ private static final String CAR_AVERAGE_SPEED = "car_average_speed";
+ private static final String CAR = "car";
+ private ProfileAccessAndSpeedAttributes profileAccessAndSpeedAttributes;
+
+ @BeforeEach
+ void setUp() {
+ profileAccessAndSpeedAttributes = ProfileAccessAndSpeedAttributes
+ .builder()
+ .accessAttributes(List.of(CAR_ACCESS))
+ .speedAttributes(List.of(CAR_AVERAGE_SPEED))
+ .build();
+ }
+
+ @Test
+ void getAll_ok() {
+ List result = profileAccessAndSpeedAttributes.getAll();
+ assertThat(result).contains(CAR_ACCESS, CAR_AVERAGE_SPEED);
+ }
+
+ @Test
+ void isSpeedAttribute_ok() {
+ assertThat(profileAccessAndSpeedAttributes.isSpeedAttribute(CAR_AVERAGE_SPEED)).isTrue();
+ }
+
+ @Test
+ void isAccessAttribute_ok() {
+ assertThat(profileAccessAndSpeedAttributes.isAccessAttribute(CAR_ACCESS)).isTrue();
+ }
+
+ @Test
+ void getVehicleName_ok() {
+ assertThat(profileAccessAndSpeedAttributes.getVehicleName(CAR_ACCESS))
+ .isEqualTo(CAR);
+ assertThat(profileAccessAndSpeedAttributes.getVehicleName(CAR_AVERAGE_SPEED))
+ .isEqualTo(CAR);
+
+ }
+
+ @Test
+ void getAccessAttributes_ok() {
+ List result = profileAccessAndSpeedAttributes.accessAttributes();
+ assertThat(result).contains(CAR_ACCESS);
+ }
+
+ @Test
+ void getSpeedAttributes_ok() {
+ List result = profileAccessAndSpeedAttributes.speedAttributes();
+ assertThat(result).contains(CAR_AVERAGE_SPEED);
+ }
+}
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/routing/BikeRouterIT.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/routing/BikeRouterIT.java
index be94c03a..f3c55b1a 100644
--- a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/routing/BikeRouterIT.java
+++ b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/routing/BikeRouterIT.java
@@ -31,7 +31,7 @@
@ContextConfiguration(classes = {TestConfig.class})
class BikeRouterIT {
- private static final Profile BIKE_PROFILE = new Profile("bike").setVehicle("bike");
+ private static final Profile BIKE_PROFILE = new Profile("bike");
@Autowired
private RouterFactory routerFactory;
@Autowired
@@ -39,7 +39,6 @@ class BikeRouterIT {
private Router router;
-
@Getter
public static class BikeLink extends Link {
@@ -48,7 +47,7 @@ protected BikeLink(long id, long fromNodeId, long toNodeId, double speedInKilome
double reverseSpeedInKilometersPerHour, double distanceInMeters, LineString geometry,
Boolean bicycleAccessible) {
super(id, fromNodeId, toNodeId, distanceInMeters,
- geometry);
+ geometry, null);
this.bicycleAccessible = bicycleAccessible;
this.speed = DirectionalDto.builder()
.forward(speedInKilometersPerHour)
@@ -56,7 +55,6 @@ protected BikeLink(long id, long fromNodeId, long toNodeId, double speedInKilome
.build();
}
-
@EncodedValue(key = "bicycle_accessible")
private final Boolean bicycleAccessible;
@@ -80,7 +78,6 @@ public DirectionalDto getAccessibility(BikeLink link) {
public DirectionalDto getSpeed(BikeLink link) {
return DirectionalDto.builder().forward(0.0).reverse(0.0).build();
}
-
}
public static class BikeLinkBikeMapper extends LinkVehicleMapper {
@@ -173,6 +170,4 @@ void route_newWay_linkNotAccessible() {
assertEquals("Invalid routing request: Connection between locations not found",
routingRequestException.getMessage());
}
-
-
}
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/routing/RouterIT.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/routing/RouterIT.java
index 48eb07ad..2c93d4b1 100644
--- a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/routing/RouterIT.java
+++ b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/routing/RouterIT.java
@@ -1,5 +1,6 @@
package nu.ndw.nls.routingmapmatcher.routing;
+import static nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.CAR;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.List;
@@ -35,7 +36,7 @@ class RouterIT {
@SneakyThrows
private void setupNetwork() {
router = routerFactory.createMapMatcher(TestNetworkProvider.getTestNetworkFromFile("/test-data/links.json"),
- "car");
+ CAR);
}
@SneakyThrows
@@ -46,7 +47,7 @@ void route_ok() {
Point end = geometryFactory.createPoint(new Coordinate(5.428436, 52.175901));
List wayPoints = List.of(start, end);
var result = router.route(RoutingRequest.builder()
- .routingProfile("car_fastest")
+ .routingProfile(CAR)
.wayPoints(wayPoints)
.build());
assertSuccess(result, new Coordinate[]{new Coordinate(5.430483, 52.177693),
@@ -61,7 +62,7 @@ void route_ok_noSimplify() {
Point end = geometryFactory.createPoint(new Coordinate(5.428436, 52.175901));
List wayPoints = List.of(start, end);
var result = router.route(RoutingRequest.builder()
- .routingProfile("car_fastest")
+ .routingProfile(CAR)
.wayPoints(wayPoints)
.simplifyResponseGeometry(false)
.build());
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/routing/RoutingBidirectionalLinkIdIT.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/routing/RoutingBidirectionalLinkIdIT.java
new file mode 100644
index 00000000..04f03e87
--- /dev/null
+++ b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/routing/RoutingBidirectionalLinkIdIT.java
@@ -0,0 +1,221 @@
+
+package nu.ndw.nls.routingmapmatcher.routing;
+
+import static nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.CAR;
+import static nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.getTestNetwork;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.List;
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
+import nu.ndw.nls.geometry.factories.GeometryFactoryWgs84;
+import nu.ndw.nls.routingmapmatcher.TestConfig;
+import nu.ndw.nls.routingmapmatcher.model.routing.RoutingRequest;
+import nu.ndw.nls.routingmapmatcher.model.routing.RoutingResponse;
+import nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.TestLink;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.LineString;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.io.WKTReader;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+
+@Slf4j
+@ExtendWith(SpringExtension.class)
+@ContextConfiguration(classes = {TestConfig.class})
+class RoutingBidirectionalLinkIdIT {
+
+ @Autowired
+ private RouterFactory routerFactory;
+
+ @Autowired
+ private GeometryFactoryWgs84 geometryFactoryWgs84;
+
+ private Router router;
+
+ @SneakyThrows
+ void setupReversedGeometry() {
+ router = routerFactory.createMapMatcher(getTestNetwork(createLinksNoCorrectAlignment()),
+ CAR);
+ }
+
+ @SneakyThrows
+ void setupNormalisedNetwork() {
+ router = routerFactory.createMapMatcher(getTestNetwork(createLinksCorrectAlignment()),
+ CAR);
+ }
+
+ /**
+ * returns 4 unidirectional links with incorrect geometric alignment
+ */
+ private List createLinksNoCorrectAlignment() {
+ return List.of(
+ createLineLink(0, 10, 20, 50, 0, 1, 0, 2),
+ createLineLink(1, 20, 10, 50, 0, 2, 0, 1),
+ createLineLink(2, 20, 30, 50, 0, 2, 0, 3),
+ createLineLink(3, 30, 20, 50, 0, 3, 0, 2)
+ );
+ }
+
+ /**
+ * returns 2 bidirectional links with correct geometric alignment and directional link id
+ */
+ private List createLinksCorrectAlignment() {
+ return List.of(
+ createBiDirectionalLineLink(1, 2, 10, 20, 50, 50, 0, 1, 0, 2),
+ createBiDirectionalLineLink(3, 4, 20, 30, 50, 50, 0, 2, 0, 3)
+ );
+ }
+
+ private TestLink createLineLink(long id, long fromNodeId, long toNodeId, double speed, double... coordinates) {
+ return TestLink.builder()
+ .id(id)
+ .fromNodeId(fromNodeId)
+ .toNodeId(toNodeId)
+ .speedInKilometersPerHour(speed)
+ .reverseSpeedInKilometersPerHour(0)
+ .distanceInMeters(100)
+ .geometry(createLineStringWktReader(coordinates))
+ .build();
+ }
+
+ private TestLink createBiDirectionalLineLink(long id, long reverseLinkId, long fromNodeId, long toNodeId,
+ double speed, double reverseSpeed, double... coordinates) {
+ return TestLink.builder()
+ .id(id)
+ .linkIdReversed(reverseLinkId)
+ .fromNodeId(fromNodeId)
+ .toNodeId(toNodeId)
+ .speedInKilometersPerHour(speed)
+ .reverseSpeedInKilometersPerHour(reverseSpeed)
+ .distanceInMeters(100)
+ .geometry(createLineStringWktReader(coordinates))
+ .build();
+ }
+
+ @SneakyThrows
+ private LineString createLineStringWktReader(double... coordinates) {
+ if (coordinates == null || coordinates.length % 2 != 0) {
+ throw new IllegalStateException("Must have coordinates and must come in pairs of two (x, y)");
+ }
+
+ StringBuilder lineStringSb = new StringBuilder("LINESTRING(");
+ for (int i = 0; i < coordinates.length; i += 2) {
+ if (i > 0) {
+ lineStringSb.append(", ");
+ }
+ lineStringSb.append(coordinates[i]);
+ lineStringSb.append(" ");
+ lineStringSb.append(coordinates[i + 1]);
+ }
+
+ lineStringSb.append(")");
+
+ log.debug("Loading line string: {}", lineStringSb);
+ WKTReader wktReader = new WKTReader(geometryFactoryWgs84);
+ return (LineString) wktReader.read(lineStringSb.toString());
+ }
+
+ @SneakyThrows
+ @Test
+ void route_ok_reverse() {
+ setupReversedGeometry();
+ Point start = geometryFactoryWgs84.createPoint(new Coordinate(0, 3));
+ Point end = geometryFactoryWgs84.createPoint(new Coordinate(0, 1));
+ List wayPoints = List.of(start, end);
+ RoutingResponse response = router.route(RoutingRequest.builder()
+ .routingProfile(CAR)
+ .wayPoints(wayPoints)
+ .build());
+ assertThat(response.getMatchedLinks())
+ .hasSize(2)
+ .satisfiesExactly(
+ first -> {
+ assertThat(first.getLinkId()).isEqualTo(3);
+ assertThat(first.isReversed()).isFalse();
+ },
+ last -> {
+ assertThat(last.getLinkId()).isEqualTo(1);
+ assertThat(last.isReversed()).isFalse();
+ }
+ );
+ }
+
+ @SneakyThrows
+ @Test
+ void route_ok_forward() {
+ setupReversedGeometry();
+ Point start = geometryFactoryWgs84.createPoint(new Coordinate(0, 1));
+ Point end = geometryFactoryWgs84.createPoint(new Coordinate(0, 3));
+ List wayPoints = List.of(start, end);
+ RoutingResponse response = router.route(RoutingRequest.builder()
+ .routingProfile(CAR)
+ .wayPoints(wayPoints)
+ .build());
+ assertThat(response.getMatchedLinks())
+ .hasSize(2)
+ .satisfiesExactly(
+ first -> {
+ assertThat(first.getLinkId()).isEqualTo(0);
+ assertThat(first.isReversed()).isFalse();
+ },
+ last -> {
+ assertThat(last.getLinkId()).isEqualTo(2);
+ assertThat(last.isReversed()).isFalse();
+ }
+ );
+ }
+
+ @SneakyThrows
+ @Test
+ void route_ok_normalised_reversed() {
+ setupNormalisedNetwork();
+ Point start = geometryFactoryWgs84.createPoint(new Coordinate(0, 3));
+ Point end = geometryFactoryWgs84.createPoint(new Coordinate(0, 1));
+ List wayPoints = List.of(start, end);
+ RoutingResponse result = router.route(RoutingRequest.builder()
+ .routingProfile(CAR)
+ .wayPoints(wayPoints)
+ .build());
+ assertThat(result.getMatchedLinks())
+ .hasSize(2)
+ .satisfiesExactly(
+ first -> {
+ assertThat(first.getLinkId()).isEqualTo(4);
+ assertThat(first.isReversed()).isFalse();
+ },
+ last -> {
+ assertThat(last.getLinkId()).isEqualTo(2);
+ assertThat(last.isReversed()).isFalse();
+ }
+ );
+ }
+
+ @SneakyThrows
+ @Test
+ void route_ok_normalised_forward() {
+ setupNormalisedNetwork();
+ Point start = geometryFactoryWgs84.createPoint(new Coordinate(0, 1));
+ Point end = geometryFactoryWgs84.createPoint(new Coordinate(0, 3));
+ List wayPoints = List.of(start, end);
+ RoutingResponse result = router.route(RoutingRequest.builder()
+ .routingProfile(CAR)
+ .wayPoints(wayPoints)
+ .build());
+ assertThat(result.getMatchedLinks())
+ .hasSize(2)
+ .satisfiesExactly(
+ first -> {
+ assertThat(first.getLinkId()).isEqualTo(1);
+ assertThat(first.isReversed()).isFalse();
+ },
+ last -> {
+ assertThat(last.getLinkId()).isEqualTo(3);
+ assertThat(last.isReversed()).isFalse();
+ }
+ );
+ }
+}
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/routing/RoutingFractionsIT.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/routing/RoutingFractionsIT.java
index 0a3691a2..628d4678 100644
--- a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/routing/RoutingFractionsIT.java
+++ b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/routing/RoutingFractionsIT.java
@@ -35,8 +35,8 @@
class RoutingFractionsIT {
private static final String VEHICLE = "car";
- private static final String PROFILE_NAME = "profile";
- private static final Profile PROFILE = new Profile(PROFILE_NAME).setVehicle(VEHICLE);
+ private static final String PROFILE_NAME = "car";
+ private static final Profile PROFILE = new Profile(VEHICLE);
private static final String NETWORK_NAME = "test_network";
@Autowired
private RouterFactory routerFactory;
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherFilterNonAccessibleIT.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherFilterNonAccessibleIT.java
index 19355d4d..2f4c987c 100644
--- a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherFilterNonAccessibleIT.java
+++ b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherFilterNonAccessibleIT.java
@@ -1,6 +1,6 @@
package nu.ndw.nls.routingmapmatcher.singlepoint;
-import static nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.CAR_FASTEST;
+import static nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.CAR;
import static nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.getTestNetwork;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -42,7 +42,7 @@ class SinglePointMapMatcherFilterNonAccessibleIT {
@BeforeEach
void setup() {
singlePointMapMatcher = singlePointMapMatcherFactory.createMapMatcher(getTestNetwork(createLinks()),
- CAR_FASTEST);
+ CAR);
}
/**
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherFixUTurnsIT.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherFixUTurnsIT.java
index 3629ee8e..84a5dc85 100644
--- a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherFixUTurnsIT.java
+++ b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherFixUTurnsIT.java
@@ -1,8 +1,7 @@
package nu.ndw.nls.routingmapmatcher.singlepoint;
-import static nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.CAR_FASTEST;
-import static nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.CAR_FASTEST_NO_U_TURNS;
+import static nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.CAR_NO_U_TURNS;
import static nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.getTestNetwork;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -48,7 +47,7 @@ class SinglePointMapMatcherFixUTurnsIT {
@BeforeEach
void setup() {
singlePointMapMatcher = singlePointMapMatcherFactory.createMapMatcher(getTestNetwork(createLinks()),
- CAR_FASTEST_NO_U_TURNS);
+ CAR_NO_U_TURNS);
}
/**
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherFractionIT.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherFractionIT.java
index 7cf6b1b5..f0f5b5f6 100644
--- a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherFractionIT.java
+++ b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherFractionIT.java
@@ -1,6 +1,6 @@
package nu.ndw.nls.routingmapmatcher.singlepoint;
-import static nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.CAR_FASTEST;
+import static nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.CAR;
import static nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.getTestNetwork;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -43,7 +43,7 @@ class SinglePointMapMatcherFractionIT {
@BeforeEach
void setup() {
singlePointMapMatcher = singlePointMapMatcherFactory.createMapMatcher(getTestNetwork(createLinks()),
- CAR_FASTEST);
+ CAR);
}
/**
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherIT.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherIT.java
index 8ac1d1c2..acb09fd4 100644
--- a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherIT.java
+++ b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherIT.java
@@ -1,6 +1,6 @@
package nu.ndw.nls.routingmapmatcher.singlepoint;
-import static nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.CAR_FASTEST;
+import static nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.CAR;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.closeTo;
import static org.hamcrest.Matchers.containsInAnyOrder;
@@ -52,7 +52,7 @@ public class SinglePointMapMatcherIT {
@SneakyThrows
private void setupNetwork(String resource) {
singlePointMapMatcher = singlePointMapMatcherFactory.createMapMatcher(
- TestNetworkProvider.getTestNetworkFromFile(resource), CAR_FASTEST);
+ TestNetworkProvider.getTestNetworkFromFile(resource), CAR);
}
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherWithBearingIT.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherWithBearingIT.java
index 9e58edc5..9b2e18f3 100644
--- a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherWithBearingIT.java
+++ b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherWithBearingIT.java
@@ -1,6 +1,6 @@
package nu.ndw.nls.routingmapmatcher.singlepoint;
-import static nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.CAR_FASTEST;
+import static nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.CAR;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
@@ -41,7 +41,7 @@ public class SinglePointMapMatcherWithBearingIT {
@SneakyThrows
private void setupNetwork() {
singlePointMapMatcher = singlePointMapMatcherFactory.createMapMatcher(
- TestNetworkProvider.getTestNetworkFromFile(LINKS_RESOURCE), CAR_FASTEST);
+ TestNetworkProvider.getTestNetworkFromFile(LINKS_RESOURCE), CAR);
}
@BeforeAll
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherWithBidirectionalIsochroneIT.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherWithBidirectionalIsochroneIT.java
new file mode 100644
index 00000000..76ac3309
--- /dev/null
+++ b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherWithBidirectionalIsochroneIT.java
@@ -0,0 +1,154 @@
+package nu.ndw.nls.routingmapmatcher.singlepoint;
+
+import static nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.CAR;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import lombok.SneakyThrows;
+import nu.ndw.nls.geometry.factories.GeometryFactoryWgs84;
+import nu.ndw.nls.routingmapmatcher.TestConfig;
+import nu.ndw.nls.routingmapmatcher.model.IsochroneMatch;
+import nu.ndw.nls.routingmapmatcher.model.IsochroneUnit;
+import nu.ndw.nls.routingmapmatcher.model.singlepoint.BearingFilter;
+import nu.ndw.nls.routingmapmatcher.model.singlepoint.MatchFilter;
+import nu.ndw.nls.routingmapmatcher.model.singlepoint.MatchSort;
+import nu.ndw.nls.routingmapmatcher.model.singlepoint.SinglePointLocation;
+import nu.ndw.nls.routingmapmatcher.model.singlepoint.SinglePointMatch;
+import nu.ndw.nls.routingmapmatcher.model.singlepoint.SinglePointMatch.CandidateMatch;
+import nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.Point;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+
+@ExtendWith(SpringExtension.class)
+@ContextConfiguration(classes = {TestConfig.class})
+public class SinglePointMapMatcherWithBidirectionalIsochroneIT {
+
+ private static final String LINKS_RESOURCE = "/test-data/links_bidirectional.json";
+ private static final Coordinate START_POINT = new Coordinate(5.4303030, 52.1804201);
+ private static final int ISOCHRONE_METERS = 100;
+ private static final BearingFilter BEARING_FILTER_FORWARD = new BearingFilter(105, 10);
+ private static final BearingFilter BEARING_FILTER_REVERSE = new BearingFilter(285, 10);
+ private static final int CUTOFF_DISTANCE = 20;
+ private static final int ID = 1;
+
+ @Autowired
+ private SinglePointMapMatcherFactory singlePointMapMatcherFactory;
+ @Autowired
+ private GeometryFactoryWgs84 geometryFactory;
+
+ private SinglePointMapMatcher singlePointMapMatcher;
+
+ @SneakyThrows
+ private void setupNetwork() {
+ singlePointMapMatcher = singlePointMapMatcherFactory.createMapMatcher(
+ TestNetworkProvider.getTestNetworkFromFile(LINKS_RESOURCE),
+ CAR);
+ }
+
+ @SneakyThrows
+ @Test
+ void match_ok_bidirectionalForwardDownstream() {
+ setupNetwork();
+ Point point = geometryFactory.createPoint(START_POINT);
+ var request = SinglePointLocation
+ .builder()
+ .id(ID)
+ .point(point)
+ .matchSort(MatchSort.SHORTEST_DISTANCE)
+ .matchFilter(MatchFilter.FIRST)
+ .downstreamIsochrone(ISOCHRONE_METERS)
+ .downstreamIsochroneUnit(IsochroneUnit.METERS)
+ .bearingFilter(BEARING_FILTER_FORWARD)
+ .cutoffDistance(CUTOFF_DISTANCE)
+ .build();
+ SinglePointMatch result = singlePointMapMatcher.match(request);
+ assertThat(result.getCandidateMatches()).hasSize(1);
+ CandidateMatch match = result.getCandidateMatches().getFirst();
+ assertThat(match.getDownstream()).hasSize(4);
+ // Here, we expect the one-way segments not to be matched, because they are in the wrong driving direction.
+ assertThat(match.getDownstream()).map(IsochroneMatch::getMatchedLinkId)
+ .containsExactly(6405235, 6405226, 6405225, 6405227);
+ assertThat(match.getDownstream()).noneMatch(IsochroneMatch::isReversed);
+ }
+
+ @SneakyThrows
+ @Test
+ void match_ok_bidirectionalReverseUpstream() {
+ setupNetwork();
+ Point point = geometryFactory.createPoint(START_POINT);
+ var request = SinglePointLocation
+ .builder()
+ .id(ID)
+ .point(point)
+ .matchSort(MatchSort.SHORTEST_DISTANCE)
+ .matchFilter(MatchFilter.FIRST)
+ .upstreamIsochrone(ISOCHRONE_METERS)
+ .upstreamIsochroneUnit(IsochroneUnit.METERS)
+ .bearingFilter(BEARING_FILTER_REVERSE)
+ .cutoffDistance(CUTOFF_DISTANCE)
+ .build();
+ SinglePointMatch result = singlePointMapMatcher.match(request);
+ assertThat(result.getCandidateMatches()).hasSize(1);
+ CandidateMatch match = result.getCandidateMatches().getFirst();
+ assertThat(match.getUpstream()).hasSize(6);
+ // Here, we expect the one-way segments to be matched, because they are in the correct driving direction.
+ assertThat(match.getUpstream()).map(IsochroneMatch::getMatchedLinkId)
+ .containsExactly(6405234, 6405225, 6405239, 6405224, 6405226, 6405238);
+ assertThat(match.getUpstream()).noneMatch(IsochroneMatch::isReversed);
+ }
+
+ @SneakyThrows
+ @Test
+ void match_ok_bidirectionalReverseDownstream() {
+ setupNetwork();
+ Point point = geometryFactory.createPoint(START_POINT);
+ var request = SinglePointLocation
+ .builder()
+ .id(ID)
+ .point(point)
+ .matchSort(MatchSort.SHORTEST_DISTANCE)
+ .matchFilter(MatchFilter.FIRST)
+ .downstreamIsochrone(ISOCHRONE_METERS)
+ .downstreamIsochroneUnit(IsochroneUnit.METERS)
+ .bearingFilter(BEARING_FILTER_REVERSE)
+ .cutoffDistance(CUTOFF_DISTANCE)
+ .build();
+ SinglePointMatch result = singlePointMapMatcher.match(request);
+ assertThat(result.getCandidateMatches()).hasSize(1);
+ CandidateMatch match = result.getCandidateMatches().getFirst();
+ assertThat(match.getDownstream()).hasSize(7);
+ assertThat(match.getDownstream()).map(IsochroneMatch::getMatchedLinkId)
+ .containsExactly(6405234, 6405240, 6405251, 6405241, 6405247, 6405250, 6405252);
+ assertThat(match.getDownstream()).noneMatch(IsochroneMatch::isReversed);
+ }
+
+ @SneakyThrows
+ @Test
+ void match_ok_bidirectionalForwardUpstream() {
+ setupNetwork();
+ Point point = geometryFactory.createPoint(START_POINT);
+ var request = SinglePointLocation
+ .builder()
+ .id(ID)
+ .point(point)
+ .matchSort(MatchSort.SHORTEST_DISTANCE)
+ .matchFilter(MatchFilter.FIRST)
+ .upstreamIsochrone(ISOCHRONE_METERS)
+ .upstreamIsochroneUnit(IsochroneUnit.METERS)
+ .bearingFilter(BEARING_FILTER_FORWARD)
+ .cutoffDistance(CUTOFF_DISTANCE)
+ .build();
+ SinglePointMatch result = singlePointMapMatcher.match(request);
+ assertThat(result.getCandidateMatches()).hasSize(1);
+ CandidateMatch match = result.getCandidateMatches().getFirst();
+ assertThat(match.getUpstream()).hasSize(7);
+ // These are the same 7 segments as in bidirectionalReverseDownstream, but each their reverse link ID.
+ assertThat(match.getUpstream()).map(IsochroneMatch::getMatchedLinkId)
+ .containsExactly(6405235, 6405247, 6405250, 6405246, 6405240, 6405251, 6405249);
+ assertThat(match.getUpstream()).noneMatch(IsochroneMatch::isReversed);
+ }
+}
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherWithIsochroneIT.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherWithIsochroneIT.java
index 1bd0a5c7..3f268c0e 100644
--- a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherWithIsochroneIT.java
+++ b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/singlepoint/SinglePointMapMatcherWithIsochroneIT.java
@@ -1,16 +1,14 @@
package nu.ndw.nls.routingmapmatcher.singlepoint;
-import static nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.CAR_FASTEST;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.closeTo;
-import static org.hamcrest.Matchers.hasSize;
-import static org.hamcrest.Matchers.is;
+import static nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.CAR;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.data.Offset.offset;
import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertTrue;
import lombok.SneakyThrows;
import nu.ndw.nls.geometry.factories.GeometryFactoryWgs84;
import nu.ndw.nls.routingmapmatcher.TestConfig;
+import nu.ndw.nls.routingmapmatcher.model.IsochroneMatch;
import nu.ndw.nls.routingmapmatcher.model.IsochroneUnit;
import nu.ndw.nls.routingmapmatcher.model.singlepoint.BearingFilter;
import nu.ndw.nls.routingmapmatcher.model.singlepoint.MatchFilter;
@@ -31,10 +29,11 @@
@ContextConfiguration(classes = {TestConfig.class})
public class SinglePointMapMatcherWithIsochroneIT {
- private static final String LINKS_RESOURCE = "/test-data/links.json";
+ private static final String LINKS_RESOURCE = "/test-data/links_bidirectional.json";
private static final Coordinate START_POINT = new Coordinate(5.4267250, 52.1767242);
- private static final int UPSTREAM_ISOCHRONE_METERS = 200;
- private static final BearingFilter BEARING_FILTER = new BearingFilter(135, 10);
+ private static final int ISOCHRONE_METERS = 200;
+ private static final int ISOCHRONE_SECONDS = 20;
+ private static final BearingFilter BEARING_FILTER = new BearingFilter(140, 10);
private static final int CUTOFF_DISTANCE = 20;
private static final int ID = 1;
@@ -45,17 +44,16 @@ public class SinglePointMapMatcherWithIsochroneIT {
private SinglePointMapMatcher singlePointMapMatcher;
-
@SneakyThrows
private void setupNetwork() {
singlePointMapMatcher = singlePointMapMatcherFactory.createMapMatcher(
TestNetworkProvider.getTestNetworkFromFile(LINKS_RESOURCE),
- CAR_FASTEST);
+ CAR);
}
@SneakyThrows
@Test
- void matchWithDownstreamIsochrone_ok_meters() {
+ void match_ok_downstreamIsochroneMeters() {
setupNetwork();
Point point = geometryFactory.createPoint(START_POINT);
var request = SinglePointLocation
@@ -64,24 +62,24 @@ void matchWithDownstreamIsochrone_ok_meters() {
.point(point)
.matchSort(MatchSort.SHORTEST_DISTANCE)
.matchFilter(MatchFilter.FIRST)
- .downstreamIsochrone(UPSTREAM_ISOCHRONE_METERS)
- .bearingFilter(BEARING_FILTER)
+ .downstreamIsochrone(ISOCHRONE_METERS)
.downstreamIsochroneUnit(IsochroneUnit.METERS)
+ .bearingFilter(BEARING_FILTER)
.cutoffDistance(CUTOFF_DISTANCE)
.build();
SinglePointMatch result = singlePointMapMatcher.match(request);
- assertThat(result.getCandidateMatches(), hasSize(ID));
+ assertThat(result.getCandidateMatches()).hasSize(1);
CandidateMatch match = result.getCandidateMatches().getFirst();
- assertThat(match.getDownstream(), hasSize(5));
- var startPoint = match.getDownstream().getFirst();
- assertThat(startPoint.getStartFraction(), closeTo(match.getFraction(), 0.000001));
- assertThat(startPoint.getEndFraction(), is(1.0));
+ assertThat(match.getDownstream()).hasSize(5);
+ IsochroneMatch startPoint = match.getDownstream().getFirst();
+ assertThat(startPoint.getStartFraction()).isCloseTo(match.getFraction(), offset(0.000001));
+ assertThat(startPoint.getEndFraction()).isEqualTo(1.0);
assertFalse(startPoint.isReversed());
}
@SneakyThrows
@Test
- void matchWithDownstreamIsochrone_ok_seconds() {
+ void match_ok_downstreamIsochroneSeconds() {
setupNetwork();
Point point = geometryFactory.createPoint(START_POINT);
var request = SinglePointLocation
@@ -90,24 +88,24 @@ void matchWithDownstreamIsochrone_ok_seconds() {
.point(point)
.matchSort(MatchSort.SHORTEST_DISTANCE)
.matchFilter(MatchFilter.FIRST)
- .downstreamIsochrone(20)
- .bearingFilter(BEARING_FILTER)
+ .downstreamIsochrone(ISOCHRONE_SECONDS)
.downstreamIsochroneUnit(IsochroneUnit.SECONDS)
+ .bearingFilter(BEARING_FILTER)
.cutoffDistance(CUTOFF_DISTANCE)
.build();
SinglePointMatch result = singlePointMapMatcher.match(request);
- assertThat(result.getCandidateMatches(), hasSize(ID));
+ assertThat(result.getCandidateMatches()).hasSize(1);
CandidateMatch match = result.getCandidateMatches().getFirst();
- assertThat(match.getDownstream(), hasSize(14));
- var startPoint = match.getDownstream().getFirst();
- assertThat(startPoint.getStartFraction(), closeTo(match.getFraction(), 0.000001));
- assertThat(startPoint.getEndFraction(), is(1.0));
+ assertThat(match.getDownstream()).hasSize(14);
+ IsochroneMatch startPoint = match.getDownstream().getFirst();
+ assertThat(startPoint.getStartFraction()).isCloseTo(match.getFraction(), offset(0.000001));
+ assertThat(startPoint.getEndFraction()).isEqualTo(1.0);
assertFalse(startPoint.isReversed());
}
@SneakyThrows
@Test
- void matchWithUpstreamIsochrone_ok_meters() {
+ void match_ok_upstreamIsochroneMeters() {
setupNetwork();
Point point = geometryFactory.createPoint(START_POINT);
var request = SinglePointLocation
@@ -116,24 +114,24 @@ void matchWithUpstreamIsochrone_ok_meters() {
.point(point)
.matchSort(MatchSort.SHORTEST_DISTANCE)
.matchFilter(MatchFilter.FIRST)
- .upstreamIsochrone(UPSTREAM_ISOCHRONE_METERS)
- .bearingFilter(BEARING_FILTER)
+ .upstreamIsochrone(ISOCHRONE_METERS)
.upstreamIsochroneUnit(IsochroneUnit.METERS)
+ .bearingFilter(BEARING_FILTER)
.cutoffDistance(CUTOFF_DISTANCE)
.build();
SinglePointMatch result = singlePointMapMatcher.match(request);
- assertThat(result.getCandidateMatches(), hasSize(ID));
+ assertThat(result.getCandidateMatches()).hasSize(1);
CandidateMatch match = result.getCandidateMatches().getFirst();
- assertThat(match.getUpstream(), hasSize(5));
- var startPoint = match.getUpstream().getFirst();
- assertThat(startPoint.getStartFraction(), closeTo(1 - match.getFraction(), 0.000001));
- assertThat(startPoint.getEndFraction(), is(1.0));
- assertTrue(startPoint.isReversed());
+ assertThat(match.getUpstream()).hasSize(5);
+ IsochroneMatch startPoint = match.getUpstream().getFirst();
+ assertThat(startPoint.getStartFraction()).isEqualTo(0.0);
+ assertThat(startPoint.getEndFraction()).isCloseTo(match.getFraction(), offset(0.000001));
+ assertFalse(startPoint.isReversed());
}
@SneakyThrows
@Test
- void matchWithUpstreamIsochrone_ok_seconds() {
+ void match_ok_upstreamIsochroneSeconds() {
setupNetwork();
Point point = geometryFactory.createPoint(START_POINT);
var request = SinglePointLocation
@@ -142,18 +140,18 @@ void matchWithUpstreamIsochrone_ok_seconds() {
.point(point)
.matchSort(MatchSort.SHORTEST_DISTANCE)
.matchFilter(MatchFilter.FIRST)
- .upstreamIsochrone(20)
- .bearingFilter(BEARING_FILTER)
+ .upstreamIsochrone(ISOCHRONE_SECONDS)
.upstreamIsochroneUnit(IsochroneUnit.SECONDS)
+ .bearingFilter(BEARING_FILTER)
.cutoffDistance(CUTOFF_DISTANCE)
.build();
SinglePointMatch result = singlePointMapMatcher.match(request);
- assertThat(result.getCandidateMatches(), hasSize(ID));
+ assertThat(result.getCandidateMatches()).hasSize(1);
CandidateMatch match = result.getCandidateMatches().getFirst();
- assertThat(match.getUpstream(), hasSize(11));
- var startPoint = match.getUpstream().getFirst();
- assertThat(startPoint.getStartFraction(), closeTo(1 - match.getFraction(), 0.000001));
- assertThat(startPoint.getEndFraction(), is(1.0));
- assertTrue(startPoint.isReversed());
+ assertThat(match.getUpstream()).hasSize(11);
+ IsochroneMatch startPoint = match.getUpstream().getFirst();
+ assertThat(startPoint.getStartFraction()).isEqualTo(0.0);
+ assertThat(startPoint.getEndFraction()).isCloseTo(match.getFraction(), offset(0.000001));
+ assertFalse(startPoint.isReversed());
}
}
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/starttoend/StartToEndMapMatcherIT.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/starttoend/StartToEndMapMatcherIT.java
index 94952c0a..02e8e1ee 100644
--- a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/starttoend/StartToEndMapMatcherIT.java
+++ b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/starttoend/StartToEndMapMatcherIT.java
@@ -1,6 +1,6 @@
package nu.ndw.nls.routingmapmatcher.starttoend;
-import static nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.CAR_FASTEST;
+import static nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.CAR;
import static nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.OBJECT_MAPPER;
import static org.assertj.core.api.Assertions.assertThat;
@@ -43,7 +43,7 @@ class StartToEndMapMatcherIT {
@BeforeEach
void setup() {
this.startToEndMapMatcher = startToEndMapMatcherFactory.createMapMatcher(
- TestNetworkProvider.getTestNetworkFromFile("/test-data/links.json"), CAR_FASTEST);
+ TestNetworkProvider.getTestNetworkFromFile("/test-data/links.json"), CAR);
}
@SneakyThrows
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/testutil/CreateGeoJsonFromLinksUtil.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/testutil/CreateGeoJsonFromLinksUtil.java
index f1a3d6f3..c5640110 100644
--- a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/testutil/CreateGeoJsonFromLinksUtil.java
+++ b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/testutil/CreateGeoJsonFromLinksUtil.java
@@ -8,6 +8,7 @@
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -51,8 +52,9 @@ void createGeoJson() {
});
List featuresJson = new ArrayList<>();
links.forEach(l -> {
- Map properties = new HashMap<>();
+ Map properties = new LinkedHashMap<>();
properties.put("id", l.getId());
+ properties.put("linkIdReversed", l.getLinkIdReversed());
properties.put("fromNodeId", l.getFromNodeId());
properties.put("toNodeId", l.getToNodeId());
properties.put("speedInKilometersPerHour", l.getSpeedInKilometersPerHour());
@@ -71,7 +73,7 @@ void createGeoJson() {
@SneakyThrows
void testIntersection() {
- final var shapeFactory = createGeometricShapeFactory();
+ var shapeFactory = createGeometricShapeFactory();
Polygon circleA = shapeFactory.createEllipse();
GeoJSONWriter writerCircle = new GeoJSONWriter();
var circleGeometry = writerCircle.write(circleA);
@@ -96,8 +98,9 @@ void testIntersection() {
var geoms = links.stream()
.filter(l -> circleA.intersects(l.getGeometry()))
.map(l -> {
- Map properties = new HashMap<>();
+ Map properties = new LinkedHashMap<>();
properties.put("id", l.getId());
+ properties.put("linkIdReversed", l.getLinkIdReversed());
properties.put("fromNodeId", l.getFromNodeId());
properties.put("toNodeId", l.getToNodeId());
properties.put("speedInKilometersPerHour", l.getSpeedInKilometersPerHour());
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/testutil/TestNetworkProvider.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/testutil/TestNetworkProvider.java
index c04d9af6..f24c02da 100644
--- a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/testutil/TestNetworkProvider.java
+++ b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/testutil/TestNetworkProvider.java
@@ -4,7 +4,7 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.graphhopper.config.Profile;
-import com.graphhopper.util.CustomModel;
+import com.graphhopper.config.TurnCostsConfig;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
@@ -33,7 +33,9 @@
import nu.ndw.nls.routingmapmatcher.network.init.annotation.parserfactories.EncodedIntegerMapperFactory;
import nu.ndw.nls.routingmapmatcher.network.init.annotation.parserfactories.EncodedLongMapperFactory;
import nu.ndw.nls.routingmapmatcher.network.init.annotation.parserfactories.EncodedStringMapperFactory;
-import nu.ndw.nls.routingmapmatcher.network.init.vehicle.CustomVehicleEncodedValuesFactory;
+import nu.ndw.nls.routingmapmatcher.network.mappers.CustomModelMapper;
+import nu.ndw.nls.routingmapmatcher.network.mappers.ProfileAccessAndSpeedAttributesMapper;
+import nu.ndw.nls.routingmapmatcher.network.mappers.SpeedAndAccessAttributeMapper;
import nu.ndw.nls.routingmapmatcher.network.model.DirectionalDto;
import nu.ndw.nls.routingmapmatcher.network.model.Link;
import nu.ndw.nls.routingmapmatcher.network.model.LinkVehicleMapper;
@@ -41,21 +43,45 @@
import nu.ndw.nls.routingmapmatcher.viterbi.LineStringLocationDeserializer;
import nu.ndw.nls.routingmapmatcher.viterbi.LinkDeserializer;
import org.apache.commons.io.IOUtils;
+import org.jetbrains.annotations.NotNull;
import org.locationtech.jts.geom.LineString;
public class TestNetworkProvider {
- private static final double WEIGHTING_SHORTEST_DISTANCE_INFLUENCE = 10_000D;
public static final ObjectMapper OBJECT_MAPPER;
private static final SimpleModule SIMPLE_MODULE;
public static final String HGV_ACCESSIBLE_KEY = "hgv_accessible";
+ public static final String CAR = "car";
+ public static final String CAR_NO_U_TURNS = "car_no_u_turns";
+ public static List TEST_PROFILES = List.of(
+ new Profile(CAR),
+ new Profile(CAR_NO_U_TURNS)
+ .setTurnCostsConfig(new TurnCostsConfig(List.of("motor_vehicle"))
+ .setUTurnCosts(TurnCostsConfig.INFINITE_U_TURN_COSTS))
+ );
- public static GraphHopperNetworkService getNetworkService(List> vehicleProviders) {
+ public static GraphHopperNetworkService getNetworkService(
+ List> vehicleProviders) {
return new GraphHopperNetworkService(
- getLinkVehicleProvider(vehicleProviders), getParserFactories(), getEncoderFactories(),
- getVehicleEncodedValuesFactory(), getEncodedValuesMapper());
+ getLinkVehicleProvider(vehicleProviders), getEncoderFactories(), getEncodedValuesMapper(),
+ getParserFactories(), getCustomModelMapper(), getProfileAccessAndSpeedAttributesMapper());
}
- public static final GraphHopperNetworkService NETWORK_SERVICE = getNetworkService(List.of(new TestLinkCarMapper()));
+
+ @NotNull
+ private static ProfileAccessAndSpeedAttributesMapper getProfileAccessAndSpeedAttributesMapper() {
+ return new ProfileAccessAndSpeedAttributesMapper(
+ new SpeedAndAccessAttributeMapper());
+ }
+
+ @NotNull
+ private static CustomModelMapper getCustomModelMapper() {
+ return new CustomModelMapper(
+ new SpeedAndAccessAttributeMapper());
+ }
+
+ public static final GraphHopperNetworkService NETWORK_SERVICE = getNetworkService(
+ List.of(new TestLinkCarMapper(CAR),
+ new TestLinkCarMapper(CAR_NO_U_TURNS)));
static {
SIMPLE_MODULE = new SimpleModule();
@@ -66,26 +92,11 @@ public static GraphHopperNetworkService getNetworkService(List TEST_PROFILES = List.of(
- new Profile(CAR_FASTEST)
- .setVehicle("car")
- ,
-
- new Profile(CAR_FASTEST_NO_U_TURNS)
- .setVehicle("car")
- .setTurnCosts(true),
-
- new Profile("car_shortest")
- .setVehicle("car")
- .setCustomModel(new CustomModel().setDistanceInfluence(WEIGHTING_SHORTEST_DISTANCE_INFLUENCE))
- );
-
public static List getTestLinks(String path) throws IOException {
InputStream resourceAsStream = TestNetworkProvider.class.getResourceAsStream(path);
String linksJson = IOUtils.toString(Objects.requireNonNull(resourceAsStream), StandardCharsets.UTF_8);
- return OBJECT_MAPPER.readValue(linksJson, new TypeReference<>() {});
+ return OBJECT_MAPPER.readValue(linksJson, new TypeReference<>() {
+ });
}
public static NetworkGraphHopper getTestNetwork(List links) {
@@ -132,10 +143,6 @@ private static EncodedValueFactoryRegistry getEncoderFactories() {
));
}
- private static CustomVehicleEncodedValuesFactory getVehicleEncodedValuesFactory() {
- return new CustomVehicleEncodedValuesFactory();
- }
-
private static LinkVehicleMapperProvider getLinkVehicleProvider(List> vehicles) {
return new LinkVehicleMapperProvider(vehicles);
}
@@ -152,9 +159,8 @@ public static class TestLink extends Link {
@Builder
protected TestLink(long id, long fromNodeId, long toNodeId, double speedInKilometersPerHour,
double reverseSpeedInKilometersPerHour, Boolean hgvAccessible, double distanceInMeters,
- LineString geometry) {
- super(id, fromNodeId, toNodeId, distanceInMeters,
- geometry);
+ LineString geometry, Long linkIdReversed) {
+ super(id, fromNodeId, toNodeId, distanceInMeters, geometry, linkIdReversed);
this.speedInKilometersPerHour = speedInKilometersPerHour;
this.reverseSpeedInKilometersPerHour = reverseSpeedInKilometersPerHour;
this.hgvAccessible = Optional.ofNullable(hgvAccessible).orElse(true);
@@ -163,6 +169,10 @@ protected TestLink(long id, long fromNodeId, long toNodeId, double speedInKilome
public static class TestLinkCarMapper extends LinkVehicleMapper {
+ public TestLinkCarMapper(String profileName) {
+ super(profileName, TestLink.class);
+ }
+
public TestLinkCarMapper() {
super("car", TestLink.class);
}
@@ -182,7 +192,5 @@ public DirectionalDto getSpeed(TestLink link) {
.reverse(link.getReverseSpeedInKilometersPerHour())
.build();
}
-
}
-
}
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/viterbi/LinkDeserializer.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/viterbi/LinkDeserializer.java
index 7ae5a1ff..2fa11bba 100644
--- a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/viterbi/LinkDeserializer.java
+++ b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/viterbi/LinkDeserializer.java
@@ -25,9 +25,11 @@ protected LinkDeserializer(Class> vc) {
public TestLink deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
throws IOException {
JsonNode node = jsonParser.getCodec().readTree(jsonParser);
- int id = node.get("id").intValue();
- int fromNodeId = node.get("fromNodeId").intValue();
- int toNodeId = node.get("toNodeId").intValue();
+ long id = node.get("id").longValue();
+ JsonNode node2 = node.get("linkIdReversed");
+ Long linkIdReversed = node2 == null || node2.isNull() ? null : node2.longValue();
+ long fromNodeId = node.get("fromNodeId").longValue();
+ long toNodeId = node.get("toNodeId").longValue();
double speedInKilometersPerHour = node.get("speedInKilometersPerHour").doubleValue();
double reverseSpeedInKilometersPerHour = node.get("reverseSpeedInKilometersPerHour").doubleValue();
double distanceInMeters = node.get("distanceInMeters").doubleValue();
@@ -36,6 +38,7 @@ public TestLink deserialize(JsonParser jsonParser, DeserializationContext deseri
return TestLink.builder()
.id(id)
+ .linkIdReversed(linkIdReversed)
.fromNodeId(fromNodeId)
.toNodeId(toNodeId)
.speedInKilometersPerHour(speedInKilometersPerHour)
diff --git a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/viterbi/ViterbiLineStringMapMatcherIT.java b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/viterbi/ViterbiLineStringMapMatcherIT.java
index f08b7272..6095865f 100644
--- a/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/viterbi/ViterbiLineStringMapMatcherIT.java
+++ b/map-matcher-library/src/test/java/nu/ndw/nls/routingmapmatcher/viterbi/ViterbiLineStringMapMatcherIT.java
@@ -1,6 +1,6 @@
package nu.ndw.nls.routingmapmatcher.viterbi;
-import static nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.CAR_FASTEST;
+import static nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.CAR;
import static nu.ndw.nls.routingmapmatcher.testutil.TestNetworkProvider.OBJECT_MAPPER;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertNull;
@@ -43,7 +43,7 @@ class ViterbiLineStringMapMatcherIT {
@BeforeEach
void setup() {
viterbiLineStringMapMatcher = viterbiLinestringMapMatcherFactory.createMapMatcher(
- TestNetworkProvider.getTestNetworkFromFile("/test-data/links.json"), CAR_FASTEST);
+ TestNetworkProvider.getTestNetworkFromFile("/test-data/links.json"), CAR);
}
@SneakyThrows
diff --git a/map-matcher-library/src/test/resources/test-data/links_bidirectional.json b/map-matcher-library/src/test/resources/test-data/links_bidirectional.json
new file mode 100644
index 00000000..20685964
--- /dev/null
+++ b/map-matcher-library/src/test/resources/test-data/links_bidirectional.json
@@ -0,0 +1,3422 @@
+[
+ {
+ "id": 3666076,
+ "linkIdReversed": null,
+ "fromNodeId": 596829,
+ "toNodeId": 3873575,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.372,
+ "geometry": "AQIAAAACAAAA/67PnPW5FUDRWzy85xZKQAzqW+Z0uRVATSzwFd0WSkA="
+ },
+ {
+ "id": 3666077,
+ "linkIdReversed": null,
+ "fromNodeId": 3873575,
+ "toNodeId": 3873576,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.372,
+ "geometry": "AQIAAAAEAAAADOpb5nS5FUBNLPAV3RZKQC47xD9suRVAZohjXdwWSkCVY7K4/7gVQDMXuDzWFkpAkE/Iztu4FUCB6EmZ1BZKQA=="
+ },
+ {
+ "id": 3666078,
+ "linkIdReversed": null,
+ "fromNodeId": 3873576,
+ "toNodeId": 3873577,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.372,
+ "geometry": "AQIAAAAEAAAAkE/Iztu4FUCB6EmZ1BZKQAIs8uuHuBVASFLSw9AWSkBvS+SCM7gVQFslWBzOFkpAaY6s/DK4FUBbJVgczhZKQA=="
+ },
+ {
+ "id": 3666079,
+ "linkIdReversed": null,
+ "fromNodeId": 3873577,
+ "toNodeId": 3873578,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.372,
+ "geometry": "AQIAAAADAAAAaY6s/DK4FUBbJVgczhZKQL+c2a7QtxVAtaSjHMwWSkCdY0D2ercVQCdMGM3KFkpA"
+ },
+ {
+ "id": 3666080,
+ "linkIdReversed": null,
+ "fromNodeId": 3873578,
+ "toNodeId": 3873579,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.372,
+ "geometry": "AQIAAAAEAAAAnWNA9nq3FUAnTBjNyhZKQEJ23sZmtxVA1PGYgcoWSkAh5pKq7bYVQCLDKt7IFkpAM6mhDcC2FUBwYHKjyBZKQA=="
+ },
+ {
+ "id": 3666081,
+ "linkIdReversed": null,
+ "fromNodeId": 3873579,
+ "toNodeId": 3873580,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.372,
+ "geometry": "AQIAAAADAAAAM6mhDcC2FUBwYHKjyBZKQLE08KMathVAdlH0wMcWSkA02T9PA7YVQKbVkLjHFkpA"
+ },
+ {
+ "id": 3666082,
+ "linkIdReversed": null,
+ "fromNodeId": 3873580,
+ "toNodeId": 3873581,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.372,
+ "geometry": "AQIAAAADAAAANNk/TwO2FUCm1ZC4xxZKQMk7hzJUtRVA83LYfccWSkAwTKYKRrUVQMTuO4bHFkpA"
+ },
+ {
+ "id": 3666083,
+ "linkIdReversed": null,
+ "fromNodeId": 3873581,
+ "toNodeId": 3873582,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.372,
+ "geometry": "AQIAAAAEAAAAMEymCka1FUDE7juGxxZKQIV3uYjvtBVAdlH0wMcWSkBkIToEjrQVQKWhRiHJFkpAv9TPm4q0FUBGmQ0yyRZKQA=="
+ },
+ {
+ "id": 3666084,
+ "linkIdReversed": null,
+ "fromNodeId": 3873582,
+ "toNodeId": 3873583,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.372,
+ "geometry": "AQIAAAADAAAAv9TPm4q0FUBGmQ0yyRZKQIeKcf4mtBVAzgAXZMsWSkAsDJHT17MVQHk+A+rNFkpA"
+ },
+ {
+ "id": 3666085,
+ "linkIdReversed": null,
+ "fromNodeId": 3873583,
+ "toNodeId": 3873584,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.372,
+ "geometry": "AQIAAAAEAAAALAyR09ezFUB5PgPqzRZKQONV1jbFsxVAH/MBgc4WSkA4gem0brMVQKzj+KHSFkpAHFw65jyzFUDyJyob1hZKQA=="
+ },
+ {
+ "id": 3666086,
+ "linkIdReversed": null,
+ "fromNodeId": 3873584,
+ "toNodeId": 596830,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.372,
+ "geometry": "AQIAAAACAAAAHFw65jyzFUDyJyob1hZKQC43GOqwshVAfEj43t8WSkA="
+ },
+ {
+ "id": 3666087,
+ "linkIdReversed": null,
+ "fromNodeId": 596829,
+ "toNodeId": 3873585,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.171,
+ "geometry": "AQIAAAACAAAA/67PnPW5FUDRWzy85xZKQLzqAfOQuRVASG+4j9wWSkA="
+ },
+ {
+ "id": 3666088,
+ "linkIdReversed": null,
+ "fromNodeId": 3873585,
+ "toNodeId": 3873586,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.171,
+ "geometry": "AQIAAAACAAAAvOoB85C5FUBIb7iP3BZKQPsEUIwsuRVA7gbRWtEWSkA="
+ },
+ {
+ "id": 3666089,
+ "linkIdReversed": null,
+ "fromNodeId": 3873586,
+ "toNodeId": 3873587,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.171,
+ "geometry": "AQIAAAACAAAA+wRQjCy5FUDuBtFa0RZKQLhAguLHuBVAZRpNLsYWSkA="
+ },
+ {
+ "id": 3666090,
+ "linkIdReversed": null,
+ "fromNodeId": 3873587,
+ "toNodeId": 3873588,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.171,
+ "geometry": "AQIAAAACAAAAuECC4se4FUBlGk0uxhZKQPda0HtjuBVADLJl+boWSkA="
+ },
+ {
+ "id": 3666091,
+ "linkIdReversed": null,
+ "fromNodeId": 3873588,
+ "toNodeId": 3873589,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.171,
+ "geometry": "AQIAAAADAAAA91rQe2O4FUAMsmX5uhZKQP1MvW4RuBVAyT1d3bEWSkCu2cpL/rcVQFNBRdWvFkpA"
+ },
+ {
+ "id": 3666092,
+ "linkIdReversed": null,
+ "fromNodeId": 3873589,
+ "toNodeId": 3873590,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.171,
+ "geometry": "AQIAAAACAAAArtnKS/63FUBTQUXVrxZKQE5k5gKXtxVAC0RPyqQWSkA="
+ },
+ {
+ "id": 3666093,
+ "linkIdReversed": null,
+ "fromNodeId": 3873590,
+ "toNodeId": 596831,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.171,
+ "geometry": "AQIAAAACAAAATmTmApe3FUALRE/KpBZKQO7uAbovtxVAw0ZZv5kWSkA="
+ },
+ {
+ "id": 3666094,
+ "linkIdReversed": null,
+ "fromNodeId": 596832,
+ "toNodeId": 3873591,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 38.814,
+ "geometry": "AQIAAAACAAAAFAmmmlm7FUC+E7NeDBdKQE2DonkAuxVAqyNHOgMXSkA="
+ },
+ {
+ "id": 3666095,
+ "linkIdReversed": null,
+ "fromNodeId": 3873591,
+ "toNodeId": 3873592,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 38.814,
+ "geometry": "AQIAAAACAAAATYOieQC7FUCrI0c6AxdKQArcupunuhVAyLd3DfoWSkA="
+ },
+ {
+ "id": 3666096,
+ "linkIdReversed": null,
+ "fromNodeId": 3873592,
+ "toNodeId": 3873593,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 38.814,
+ "geometry": "AQIAAAACAAAACty6m6e6FUDIt3cN+hZKQENWt3pOuhVAtMcL6fAWSkA="
+ },
+ {
+ "id": 3666097,
+ "linkIdReversed": null,
+ "fromNodeId": 3873593,
+ "toNodeId": 596829,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 38.814,
+ "geometry": "AQIAAAACAAAAQ1a3ek66FUC0xwvp8BZKQP+uz5z1uRVA0Vs8vOcWSkA="
+ },
+ {
+ "id": 3666098,
+ "linkIdReversed": null,
+ "fromNodeId": 596833,
+ "toNodeId": 3873594,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 43.905,
+ "geometry": "AQIAAAACAAAAyCO4kbK1FUB1dcdimxZKQHrIlA9BtRVATDPd66QWSkA="
+ },
+ {
+ "id": 3666099,
+ "linkIdReversed": null,
+ "fromNodeId": 3873594,
+ "toNodeId": 3873595,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 43.905,
+ "geometry": "AQIAAAADAAAAesiUD0G1FUBMM93rpBZKQJboLLMItRVAgNjSo6kWSkC5xfzc0LQVQJVkHY6uFkpA"
+ },
+ {
+ "id": 3666100,
+ "linkIdReversed": null,
+ "fromNodeId": 3873595,
+ "toNodeId": 3873596,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 43.905,
+ "geometry": "AQIAAAACAAAAucX83NC0FUCVZB2OrhZKQIYb8PlhtBVATgmISbgWSkA="
+ },
+ {
+ "id": 3666101,
+ "linkIdReversed": null,
+ "fromNodeId": 3873596,
+ "toNodeId": 3873597,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 43.905,
+ "geometry": "AQIAAAACAAAAhhvw+WG0FUBOCYhJuBZKQNdP/1nzsxVACK7yBMIWSkA="
+ },
+ {
+ "id": 3666102,
+ "linkIdReversed": null,
+ "fromNodeId": 3873597,
+ "toNodeId": 3873598,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 43.905,
+ "geometry": "AQIAAAADAAAA10//WfOzFUAIrvIEwhZKQJM5lnfVsxVAJF8JpMQWSkDBVgkWh7MVQNO9TurLFkpA"
+ },
+ {
+ "id": 3666103,
+ "linkIdReversed": null,
+ "fromNodeId": 3873598,
+ "toNodeId": 3873599,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 43.905,
+ "geometry": "AQIAAAACAAAAwVYJFoezFUDTvU7qyxZKQDm2niEcsxVAEEHV6NUWSkA="
+ },
+ {
+ "id": 3666104,
+ "linkIdReversed": null,
+ "fromNodeId": 3873599,
+ "toNodeId": 596830,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 43.905,
+ "geometry": "AQIAAAACAAAAObaeIRyzFUAQQdXo1RZKQC43GOqwshVAfEj43t8WSkA="
+ },
+ {
+ "id": 3666105,
+ "linkIdReversed": null,
+ "fromNodeId": 596830,
+ "toNodeId": 3873600,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 41.702,
+ "geometry": "AQIAAAACAAAALjcY6rCyFUB8SPje3xZKQLjNVIhHshVAAKyOHOkWSkA="
+ },
+ {
+ "id": 3666106,
+ "linkIdReversed": null,
+ "fromNodeId": 3873600,
+ "toNodeId": 3873601,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 41.702,
+ "geometry": "AQIAAAACAAAAuM1UiEeyFUAArI4c6RZKQMRCrWnesRVAhA8lWvIWSkA="
+ },
+ {
+ "id": 3666107,
+ "linkIdReversed": null,
+ "fromNodeId": 3873601,
+ "toNodeId": 3873602,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 41.702,
+ "geometry": "AQIAAAADAAAAxEKtad6xFUCEDyVa8hZKQDz59NiWsRVA+G9enPgWSkDWdD3RdbEVQKlqgqj7FkpA"
+ },
+ {
+ "id": 3666108,
+ "linkIdReversed": null,
+ "fromNodeId": 3873602,
+ "toNodeId": 3873603,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 41.702,
+ "geometry": "AQIAAAACAAAA1nQ90XWxFUCpaoKo+xZKQIF5yJQPsRVAPzkKEAUXSkA="
+ },
+ {
+ "id": 3666109,
+ "linkIdReversed": null,
+ "fromNodeId": 3873603,
+ "toNodeId": 596834,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 41.702,
+ "geometry": "AQIAAAACAAAAgXnIlA+xFUA/OQoQBRdKQKmfNxWpsBVApYP1fw4XSkA="
+ },
+ {
+ "id": 3666110,
+ "linkIdReversed": null,
+ "fromNodeId": 596835,
+ "toNodeId": 3873604,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.328,
+ "geometry": "AQIAAAACAAAAQIhkyLG1FUBh+l5DcBZKQNSYEHNJtRVAPgeWI2QWSkA="
+ },
+ {
+ "id": 3666111,
+ "linkIdReversed": null,
+ "fromNodeId": 3873604,
+ "toNodeId": 3873605,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.328,
+ "geometry": "AQIAAAACAAAA1JgQc0m1FUA+B5YjZBZKQOyH2GDhtBVAGhTNA1gWSkA="
+ },
+ {
+ "id": 3666112,
+ "linkIdReversed": null,
+ "fromNodeId": 3873605,
+ "toNodeId": 3873606,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.328,
+ "geometry": "AQIAAAADAAAA7IfYYOG0FUAaFM0DWBZKQGlSCrq9tBVAjiPW4lMWSkDKMVncf7QVQKTGhJhLFkpA"
+ },
+ {
+ "id": 3666113,
+ "linkIdReversed": null,
+ "fromNodeId": 3873606,
+ "toNodeId": 3873607,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.328,
+ "geometry": "AQIAAAACAAAAyjFZ3H+0FUCkxoSYSxZKQE4oRMAhtBVAS5Ln+j4WSkA="
+ },
+ {
+ "id": 3666114,
+ "linkIdReversed": null,
+ "fromNodeId": 3873607,
+ "toNodeId": 596836,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.328,
+ "geometry": "AQIAAAADAAAATihEwCG0FUBLkuf6PhZKQMb7cfvlsxVAtI8V/DYWSkCCAu/k07MVQL0cdt8xFkpA"
+ },
+ {
+ "id": 3666115,
+ "linkIdReversed": null,
+ "fromNodeId": 596835,
+ "toNodeId": 3873608,
+ "speedInKilometersPerHour": 79,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.247,
+ "geometry": "AQIAAAAEAAAAQIhkyLG1FUBh+l5DcBZKQEaXN4drtRVA56ij42oWSkA17PfEOrUVQDxrt11oFkpAhetRuB61FUChZHJqZxZKQA=="
+ },
+ {
+ "id": 3666116,
+ "linkIdReversed": null,
+ "fromNodeId": 3873608,
+ "toNodeId": 3873609,
+ "speedInKilometersPerHour": 79,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.247,
+ "geometry": "AQIAAAAFAAAAhetRuB61FUChZHJqZxZKQHRd+MH5tBVA5IdKI2YWSkDnVgirsbQVQN7KEp1lFkpABFq6gm20FUBV+3Q8ZhZKQLrA5bFmtBVAN+LJbmYWSkA="
+ },
+ {
+ "id": 3666117,
+ "linkIdReversed": null,
+ "fromNodeId": 3873609,
+ "toNodeId": 3873610,
+ "speedInKilometersPerHour": 79,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.247,
+ "geometry": "AQIAAAAFAAAAusDlsWa0FUA34sluZhZKQFmis8witBVAPGu3XWgWSkB8nGnC9rMVQFgczvxqFkpA/yPTodOzFUD3qwDfbRZKQMx+3enOsxVAbtxifm4WSkA="
+ },
+ {
+ "id": 3666118,
+ "linkIdReversed": null,
+ "fromNodeId": 3873610,
+ "toNodeId": 3873611,
+ "speedInKilometersPerHour": 79,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.247,
+ "geometry": "AQIAAAAEAAAAzH7d6c6zFUBu3GJ+bhZKQJ5cUyCzsxVAxouFIXIWSkC1FmahnbMVQMms3uF2FkpAcTrJVpezFUAyk6gXfBZKQA=="
+ },
+ {
+ "id": 3666119,
+ "linkIdReversed": null,
+ "fromNodeId": 3873611,
+ "toNodeId": 3873612,
+ "speedInKilometersPerHour": 79,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.247,
+ "geometry": "AQIAAAAGAAAAcTrJVpezFUAyk6gXfBZKQO5brROXsxVAhe0nY3wWSkALKqp+pbMVQP8+48KBFkpA9G+X/bqzFUAJUb6ghRZKQBvV6UDWsxVAGVQbnIgWSkDzxklh3rMVQJCEfTuJFkpA"
+ },
+ {
+ "id": 3666120,
+ "linkIdReversed": null,
+ "fromNodeId": 3873612,
+ "toNodeId": 3873613,
+ "speedInKilometersPerHour": 79,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.247,
+ "geometry": "AQIAAAAFAAAA88ZJYd6zFUCQhH07iRZKQIF2hxQDtBVA7iQi/IsWSkDRQCybObQVQJliDoKOFkpAPNnNjH60FUAKou4DkBZKQFPNrKWAtBVA2h1SDJAWSkA="
+ },
+ {
+ "id": 3666121,
+ "linkIdReversed": null,
+ "fromNodeId": 3873613,
+ "toNodeId": 3873614,
+ "speedInKilometersPerHour": 79,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.247,
+ "geometry": "AQIAAAAEAAAAU82spYC0FUDaHVIMkBZKQHqJsUy/tBVAgNJQo5AWSkDgZBu4A7UVQIfD0sCPFkpAhSUeUDa1FUBStkjajRZKQA=="
+ },
+ {
+ "id": 3666122,
+ "linkIdReversed": null,
+ "fromNodeId": 3873614,
+ "toNodeId": 596837,
+ "speedInKilometersPerHour": 79,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.247,
+ "geometry": "AQIAAAAEAAAAhSUeUDa1FUBStkjajRZKQG5OJQNAtRVAXmQCfo0WSkDUY1sGnLUVQDKwjuOHFkpAbarukc21FUBFgxQ8hRZKQA=="
+ },
+ {
+ "id": 3666123,
+ "linkIdReversed": null,
+ "fromNodeId": 596838,
+ "toNodeId": 596835,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 37.896,
+ "geometry": "AQIAAAACAAAAzas6qwW2FUCkbmdfeRZKQECIZMixtRVAYfpeQ3AWSkA="
+ },
+ {
+ "id": 3666124,
+ "linkIdReversed": null,
+ "fromNodeId": 596839,
+ "toNodeId": 3873615,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.586,
+ "geometry": "AQIAAAACAAAA3lZ6bTa2FUCaXIyBdRZKQI8YPbfQtRVAoPzdO2oWSkA="
+ },
+ {
+ "id": 3666125,
+ "linkIdReversed": null,
+ "fromNodeId": 3873615,
+ "toNodeId": 3873616,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.586,
+ "geometry": "AQIAAAACAAAAjxg9t9C1FUCg/N07ahZKQEDa/wBrtRVAppwv9l4WSkA="
+ },
+ {
+ "id": 3666126,
+ "linkIdReversed": null,
+ "fromNodeId": 3873616,
+ "toNodeId": 3873617,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.586,
+ "geometry": "AQIAAAACAAAAQNr/AGu1FUCmnC/2XhZKQG+9pgcFtRVArDyBsFMWSkA="
+ },
+ {
+ "id": 3666127,
+ "linkIdReversed": null,
+ "fromNodeId": 3873617,
+ "toNodeId": 3873618,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.586,
+ "geometry": "AQIAAAACAAAAb72mBwW1FUCsPIGwUxZKQCB/aVGftBVAsdzSakgWSkA="
+ },
+ {
+ "id": 3666128,
+ "linkIdReversed": null,
+ "fromNodeId": 3873618,
+ "toNodeId": 3873619,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.586,
+ "geometry": "AQIAAAACAAAAIH9pUZ+0FUCx3NJqSBZKQNFALJs5tBVAt3wkJT0WSkA="
+ },
+ {
+ "id": 3666129,
+ "linkIdReversed": null,
+ "fromNodeId": 3873619,
+ "toNodeId": 596836,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.586,
+ "geometry": "AQIAAAACAAAA0UAsmzm0FUC3fCQlPRZKQIIC7+TTsxVAvRx23zEWSkA="
+ },
+ {
+ "id": 3666130,
+ "linkIdReversed": null,
+ "fromNodeId": 596836,
+ "toNodeId": 3873620,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 42.122,
+ "geometry": "AQIAAAACAAAAggLv5NOzFUC9HHbfMRZKQCeEDrqEsxVAKII4DycWSkA="
+ },
+ {
+ "id": 3666131,
+ "linkIdReversed": null,
+ "fromNodeId": 3873620,
+ "toNodeId": 3873621,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 42.122,
+ "geometry": "AQIAAAADAAAAJ4QOuoSzFUAogjgPJxZKQJkrg2qDsxVARZvj3CYWSkD67evAObMVQIF8CRUcFkpA"
+ },
+ {
+ "id": 3666132,
+ "linkIdReversed": null,
+ "fromNodeId": 3873621,
+ "toNodeId": 3873622,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 42.122,
+ "geometry": "AQIAAAADAAAA+u3rwDmzFUCBfAkVHBZKQN7lIr4TsxVAJET5ghYWSkD7P4f58rIVQMgL6fAQFkpA"
+ },
+ {
+ "id": 3666204,
+ "linkIdReversed": null,
+ "fromNodeId": 596855,
+ "toNodeId": 3873665,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 40.223,
+ "geometry": "AQIAAAACAAAASfQyiuW2FUDeIcUAiRZKQJSl1vuNthVAJH1aRX8WSkA="
+ },
+ {
+ "id": 3666205,
+ "linkIdReversed": null,
+ "fromNodeId": 3873665,
+ "toNodeId": 596839,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 40.223,
+ "geometry": "AQIAAAACAAAAlKXW+422FUAkfVpFfxZKQN5Wem02thVAmlyMgXUWSkA="
+ },
+ {
+ "id": 3666210,
+ "linkIdReversed": null,
+ "fromNodeId": 3873669,
+ "toNodeId": 3873670,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.912,
+ "geometry": "AQIAAAACAAAAjzhkA+myFUDSNCiaBxZKQPUwtDo5sxVAnNzvUBQWSkA="
+ },
+ {
+ "id": 3666211,
+ "linkIdReversed": null,
+ "fromNodeId": 3873670,
+ "toNodeId": 3873671,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.912,
+ "geometry": "AQIAAAADAAAA9TC0OjmzFUCc3O9QFBZKQC2T4Xg+sxVA9fOmIhUWSkBrYKsEi7MVQPUQje4gFkpA"
+ },
+ {
+ "id": 3666212,
+ "linkIdReversed": null,
+ "fromNodeId": 3873671,
+ "toNodeId": 3873672,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.912,
+ "geometry": "AQIAAAADAAAAa2CrBIuzFUD1EI3uIBZKQFWmmIOgsxVAKerMPSQWSkBaETXR57MVQOl/uRYtFkpA"
+ },
+ {
+ "id": 3666213,
+ "linkIdReversed": null,
+ "fromNodeId": 3873672,
+ "toNodeId": 3873673,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.912,
+ "geometry": "AQIAAAADAAAAWhE10eezFUDpf7kWLRZKQGRz1TxHtBVA6Zyf4jgWSkB2qnzPSLQVQMuD9BQ5FkpA"
+ },
+ {
+ "id": 3666214,
+ "linkIdReversed": null,
+ "fromNodeId": 3873673,
+ "toNodeId": 3873674,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.912,
+ "geometry": "AQIAAAACAAAAdqp8z0i0FUDLg/QUORZKQOwTQDGytBVASMK+nUQWSkA="
+ },
+ {
+ "id": 3666215,
+ "linkIdReversed": null,
+ "fromNodeId": 3873674,
+ "toNodeId": 3873675,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.912,
+ "geometry": "AQIAAAACAAAA7BNAMbK0FUBIwr6dRBZKQOCe508btRVAlXzsLlAWSkA="
+ },
+ {
+ "id": 3666216,
+ "linkIdReversed": null,
+ "fromNodeId": 3873675,
+ "toNodeId": 3873676,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.912,
+ "geometry": "AQIAAAACAAAA4J7nTxu1FUCVfOwuUBZKQNQpj26EtRVA4zYawFsWSkA="
+ },
+ {
+ "id": 3666217,
+ "linkIdReversed": null,
+ "fromNodeId": 3873676,
+ "toNodeId": 3873677,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.912,
+ "geometry": "AQIAAAACAAAA1CmPboS1FUDjNhrAWxZKQEuTUtDttRVAMPFHUWcWSkA="
+ },
+ {
+ "id": 3666218,
+ "linkIdReversed": null,
+ "fromNodeId": 3873677,
+ "toNodeId": 596857,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.912,
+ "geometry": "AQIAAAACAAAAS5NS0O21FUAw8UdRZxZKQD8e+u5WthVAfqt14nIWSkA="
+ },
+ {
+ "id": 3666220,
+ "linkIdReversed": null,
+ "fromNodeId": 596857,
+ "toNodeId": 3873678,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 40.157,
+ "geometry": "AQIAAAACAAAAPx767la2FUB+q3XichZKQH0IqkavthVAZ9R8lXwWSkA="
+ },
+ {
+ "id": 3666221,
+ "linkIdReversed": null,
+ "fromNodeId": 3873678,
+ "toNodeId": 596859,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 40.157,
+ "geometry": "AQIAAAACAAAAfQiqRq+2FUBn1HyVfBZKQLvyWZ4HtxVAgIEgQIYWSkA="
+ },
+ {
+ "id": 3666222,
+ "linkIdReversed": null,
+ "fromNodeId": 596860,
+ "toNodeId": 3873679,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.076,
+ "geometry": "AQIAAAADAAAAwW7YtiizFUBIMUCiCRZKQFvSUQ5msxVAfsNEgxQWSkDdzVMdcrMVQHLhQEgWFkpA"
+ },
+ {
+ "id": 3666223,
+ "linkIdReversed": null,
+ "fromNodeId": 3873679,
+ "toNodeId": 596861,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.076,
+ "geometry": "AQIAAAADAAAA3c1THXKzFUBy4UBIFhZKQIJxcOmYsxVADwnf+xsWSkAbuAN1yrMVQMVYpl8iFkpA"
+ },
+ {
+ "id": 3666224,
+ "linkIdReversed": null,
+ "fromNodeId": 596860,
+ "toNodeId": 3873680,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.237,
+ "geometry": "AQIAAAADAAAAwW7YtiizFUBIMUCiCRZKQII3pFGBsxVAweYcPBMWSkAQrRVtjrMVQAGiYMYUFkpA"
+ },
+ {
+ "id": 3666225,
+ "linkIdReversed": null,
+ "fromNodeId": 3873680,
+ "toNodeId": 3873681,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.237,
+ "geometry": "AQIAAAAEAAAAEK0VbY6zFUABomDGFBZKQC2Y+KOosxVAU5RL4xcWSkBOet/42rMVQEoH6/8cFkpApMfvbfqzFUD2RNeFHxZKQA=="
+ },
+ {
+ "id": 3666226,
+ "linkIdReversed": null,
+ "fromNodeId": 3873681,
+ "toNodeId": 3873682,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.237,
+ "geometry": "AQIAAAAEAAAApMfvbfqzFUD2RNeFHxZKQDf6mA8ItBVAorYNoyAWSkAs9MEyNrQVQHHK3HwjFkpAGohlM4e0FUA/qmG/JxZKQA=="
+ },
+ {
+ "id": 3666227,
+ "linkIdReversed": null,
+ "fromNodeId": 3873682,
+ "toNodeId": 3873683,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.237,
+ "geometry": "AQIAAAAEAAAAGohlM4e0FUA/qmG/JxZKQP7zNGCQtBVAdOs1PSgWSkCzJasi3LQVQEm8PJ0rFkpAycfuAiW1FUChn6nXLRZKQA=="
+ },
+ {
+ "id": 3666228,
+ "linkIdReversed": null,
+ "fromNodeId": 3873683,
+ "toNodeId": 3873684,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.237,
+ "geometry": "AQIAAAAEAAAAycfuAiW1FUChn6nXLRZKQNo4Yi0+tRVAKjv9oC4WSkC37BD/sLUVQM+7saAwFkpAldV0PdG1FUCCHmrbMBZKQA=="
+ },
+ {
+ "id": 3666229,
+ "linkIdReversed": null,
+ "fromNodeId": 3873684,
+ "toNodeId": 3873685,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.237,
+ "geometry": "AQIAAAADAAAAldV0PdG1FUCCHmrbMBZKQEWEfxE0thVAOj5anDEWSkARqtTsgbYVQBwlr84xFkpA"
+ },
+ {
+ "id": 3666230,
+ "linkIdReversed": null,
+ "fromNodeId": 3873685,
+ "toNodeId": 3873686,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.237,
+ "geometry": "AQIAAAADAAAAEarU7IG2FUAcJa/OMRZKQOhmf6DcthVA/gsEATIWSkAQXVDfMrcVQF4UPfAxFkpA"
+ },
+ {
+ "id": 3666231,
+ "linkIdReversed": null,
+ "fromNodeId": 3873686,
+ "toNodeId": 3873687,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.237,
+ "geometry": "AQIAAAACAAAAEF1Q3zK3FUBeFD3wMRZKQJHu5xTktxVATKlLxjEWSkA="
+ },
+ {
+ "id": 3666232,
+ "linkIdReversed": null,
+ "fromNodeId": 3873687,
+ "toNodeId": 3873688,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.237,
+ "geometry": "AQIAAAADAAAAke7nFOS3FUBMqUvGMRZKQEyo4PCCuBVAOj5anDEWSkATgH9KlbgVQJlGk4sxFkpA"
+ },
+ {
+ "id": 3666233,
+ "linkIdReversed": null,
+ "fromNodeId": 3873688,
+ "toNodeId": 3873689,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.237,
+ "geometry": "AQIAAAADAAAAE4B/SpW4FUCZRpOLMRZKQMKiIk4nuRVAww34/DAWSkCPVN/5RbkVQBGrP8IwFkpA"
+ },
+ {
+ "id": 3666234,
+ "linkIdReversed": null,
+ "fromNodeId": 3873689,
+ "toNodeId": 3873690,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.237,
+ "geometry": "AQIAAAADAAAAj1Tf+UW5FUARqz/CMBZKQKUTCaaauRVAmnrdIjAWSkB90LNZ9bkVQH2VfOwuFkpA"
+ },
+ {
+ "id": 3666235,
+ "linkIdReversed": null,
+ "fromNodeId": 3873690,
+ "toNodeId": 3873691,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.237,
+ "geometry": "AQIAAAAEAAAAfdCzWfW5FUB9lXzsLhZKQBDmdi/3uRVArBkZ5C4WSkDLDvEPW7oVQMDsnjwsFkpACr/Uz5u6FUAabOo8KhZKQA=="
+ },
+ {
+ "id": 3666236,
+ "linkIdReversed": null,
+ "fromNodeId": 3873691,
+ "toNodeId": 596862,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.237,
+ "geometry": "AQIAAAADAAAACr/Uz5u6FUAabOo8KhZKQDEHQUeruhVA5SoWvykWSkCXkA96NrsVQLK5ap4jFkpA"
+ },
+ {
+ "id": 3666240,
+ "linkIdReversed": null,
+ "fromNodeId": 596861,
+ "toNodeId": 3873694,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.058,
+ "geometry": "AQIAAAADAAAAG7gDdcqzFUDFWKZfIhZKQOj6PhwktBVAAdwsXiwWSkAbvRqgNLQVQAZlGk0uFkpA"
+ },
+ {
+ "id": 3666241,
+ "linkIdReversed": null,
+ "fromNodeId": 3873694,
+ "toNodeId": 3873695,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.058,
+ "geometry": "AQIAAAADAAAAG70aoDS0FUAGZRpNLhZKQGQ+INCZtBVAGO3xQjoWSkDylqsfm7QVQFncf2Q6FkpA"
+ },
+ {
+ "id": 3666242,
+ "linkIdReversed": null,
+ "fromNodeId": 3873695,
+ "toNodeId": 3873696,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.058,
+ "geometry": "AQIAAAACAAAA8parH5u0FUBZ3H9kOhZKQIWxhSAHtRVAKXXJOEYWSkA="
+ },
+ {
+ "id": 3666243,
+ "linkIdReversed": null,
+ "fromNodeId": 3873696,
+ "toNodeId": 3873697,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.058,
+ "geometry": "AQIAAAACAAAAhbGFIAe1FUApdck4RhZKQBjMXyFztRVA+g0TDVIWSkA="
+ },
+ {
+ "id": 3666244,
+ "linkIdReversed": null,
+ "fromNodeId": 3873697,
+ "toNodeId": 596864,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.058,
+ "geometry": "AQIAAAACAAAAGMxfIXO1FUD6DRMNUhZKQKzmOSLftRVAyqZc4V0WSkA="
+ },
+ {
+ "id": 3666245,
+ "linkIdReversed": null,
+ "fromNodeId": 596862,
+ "toNodeId": 3873698,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 40.191,
+ "geometry": "AQIAAAACAAAAl5APeja7FUCyuWqeIxZKQNqOqbuyuxVAhjlBmxwWSkA="
+ },
+ {
+ "id": 3666256,
+ "linkIdReversed": null,
+ "fromNodeId": 3873704,
+ "toNodeId": 596870,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 39.714,
+ "geometry": "AQIAAAACAAAAJNbiUwC8FUDU824sKBZKQAJGlzeHuxVAoGtfQC8WSkA="
+ },
+ {
+ "id": 3666943,
+ "linkIdReversed": null,
+ "fromNodeId": 596831,
+ "toNodeId": 3874089,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 27.238,
+ "geometry": "AQIAAAACAAAA7u4Bui+3FUDDRlm/mRZKQNdppKXythVAnYNnQpMWSkA="
+ },
+ {
+ "id": 3666944,
+ "linkIdReversed": null,
+ "fromNodeId": 3874089,
+ "toNodeId": 597005,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 27.238,
+ "geometry": "AQIAAAACAAAA12mkpfK2FUCdg2dCkxZKQMHkRpG1thVApkQSvYwWSkA="
+ },
+ {
+ "id": 3666945,
+ "linkIdReversed": null,
+ "fromNodeId": 596833,
+ "toNodeId": 3874090,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 45.233,
+ "geometry": "AQIAAAAFAAAAyCO4kbK1FUB1dcdimxZKQIrKhjWVtRVAK/nYXaAWSkD2evfHe7UVQE1nJ4OjFkpAURGnk2y1FUAce/ZcphZKQLKBdLFptRVAJ/VlaacWSkA="
+ },
+ {
+ "id": 3666946,
+ "linkIdReversed": null,
+ "fromNodeId": 3874090,
+ "toNodeId": 3874091,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 45.233,
+ "geometry": "AQIAAAAHAAAAsoF0sWm1FUAn9WVppxZKQHkfR3NktRVAuwopP6kWSkBAvRk1X7UVQJyJ6UKsFkpAV7H4TWG1FUCsjEY+rxZKQBPyQc9mtRVACi3r/rEWSkDr46HvbrUVQDOMu0G0FkpA/BpJgnC1FUC2ateEtBZKQA=="
+ },
+ {
+ "id": 3666947,
+ "linkIdReversed": null,
+ "fromNodeId": 3874091,
+ "toNodeId": 3874092,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 45.233,
+ "geometry": "AQIAAAAHAAAA/BpJgnC1FUC2ateEtBZKQPw3L058tRVA2AxwQbYWSkDJzAUuj7UVQDatFAK5FkpAQGt+/KW1FUDcLckBuxZKQBh6xOi5tRVAC34bYrwWSkCV1XQ90bUVQHu9++O9FkpAHY6u0t21FUCT5SSUvhZKQA=="
+ },
+ {
+ "id": 3666948,
+ "linkIdReversed": null,
+ "fromNodeId": 3874092,
+ "toNodeId": 3874093,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 45.233,
+ "geometry": "AQIAAAAGAAAAHY6u0t21FUCT5SSUvhZKQDSfc7frtRVAG4F4Xb8WSkAXRQ98DLYVQAniPJzAFkpAF9aNd0e2FUA4Mo/8wRZKQAYTfxR1thVAeSEdHsIWSkCIDoEjgbYVQKmluRXCFkpA"
+ },
+ {
+ "id": 3666949,
+ "linkIdReversed": null,
+ "fromNodeId": 3874093,
+ "toNodeId": 3874094,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 45.233,
+ "geometry": "AQIAAAAGAAAAiA6BI4G2FUCppbkVwhZKQGA6rdugthVAODKP/MEWSkBrC89LxbYVQFCOAkTBFkpAOPdXj/u2FUBdcAZ/vxZKQK+ytiketxVA7DAm/b0WSkBavFgYIrcVQJnWprG9FkpA"
+ },
+ {
+ "id": 3666950,
+ "linkIdReversed": null,
+ "fromNodeId": 3874094,
+ "toNodeId": 3874095,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 45.233,
+ "geometry": "AQIAAAAFAAAAWrxYGCK3FUCZ1qaxvRZKQIfe4uE9txVAlE25wrsWSkBO02cHXLcVQDDw3Hu4FkpAdji6Sne3FUDrq6sCtRZKQNEINq5/txVAwkzbv7IWSkA="
+ },
+ {
+ "id": 3666951,
+ "linkIdReversed": null,
+ "fromNodeId": 3874095,
+ "toNodeId": 3874096,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 45.233,
+ "geometry": "AQIAAAAGAAAA0Qg2rn+3FUDCTNu/shZKQJ2AJsKGtxVAHcwmwLAWSkBIisiwircVQNHKvcCsFkpAoz1eSIe3FUA4LA38qBZKQFPnUfF/txVApUqUvaUWSkBIbeLkfrcVQJPfopOlFkpA"
+ },
+ {
+ "id": 3666952,
+ "linkIdReversed": null,
+ "fromNodeId": 3874096,
+ "toNodeId": 596831,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 45.233,
+ "geometry": "AQIAAAADAAAASG3i5H63FUCT36KTpRZKQMsRMpBntxVAZvfkYaEWSkDu7gG6L7cVQMNGWb+ZFkpA"
+ },
+ {
+ "id": 3666953,
+ "linkIdReversed": null,
+ "fromNodeId": 597005,
+ "toNodeId": 3874097,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 40.098,
+ "geometry": "AQIAAAACAAAAweRGkbW2FUCmRBK9jBZKQAbZsnxdthVAjZduEoMWSkA="
+ },
+ {
+ "id": 3666954,
+ "linkIdReversed": null,
+ "fromNodeId": 3874097,
+ "toNodeId": 596838,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 40.098,
+ "geometry": "AQIAAAACAAAABtmyfF22FUCNl24SgxZKQM2rOqsFthVApG5nX3kWSkA="
+ },
+ {
+ "id": 3666955,
+ "linkIdReversed": null,
+ "fromNodeId": 597006,
+ "toNodeId": 3874098,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 43.907,
+ "geometry": "AQIAAAACAAAAxY7GoX63FUDcSxqjdRZKQGX8+4wLtxVAQpYFE38WSkA="
+ },
+ {
+ "id": 3666956,
+ "linkIdReversed": null,
+ "fromNodeId": 3874098,
+ "toNodeId": 3874099,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 43.907,
+ "geometry": "AQIAAAACAAAAZfz7jAu3FUBClgUTfxZKQIhITbuYthVAqODwgogWSkA="
+ },
+ {
+ "id": 3666957,
+ "linkIdReversed": null,
+ "fromNodeId": 3874099,
+ "toNodeId": 3874100,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 43.907,
+ "geometry": "AQIAAAACAAAAiEhNu5i2FUCo4PCCiBZKQCi2gqYlthVADyvc8pEWSkA="
+ },
+ {
+ "id": 3666958,
+ "linkIdReversed": null,
+ "fromNodeId": 3874100,
+ "toNodeId": 596833,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 43.907,
+ "geometry": "AQIAAAACAAAAKLaCpiW2FUAPK9zykRZKQMgjuJGytRVAdXXHYpsWSkA="
+ },
+ {
+ "id": 3666959,
+ "linkIdReversed": null,
+ "fromNodeId": 597007,
+ "toNodeId": 3874101,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.609,
+ "geometry": "AQIAAAACAAAAD0WBPpG3FUDhQh7BjRZKQOFh2jf3txVA26LMBpkWSkA="
+ },
+ {
+ "id": 3666960,
+ "linkIdReversed": null,
+ "fromNodeId": 3874101,
+ "toNodeId": 3874102,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.609,
+ "geometry": "AQIAAAACAAAA4WHaN/e3FUDboswGmRZKQLN+MzFduBVA1gJ7TKQWSkA="
+ },
+ {
+ "id": 3666961,
+ "linkIdReversed": null,
+ "fromNodeId": 3874102,
+ "toNodeId": 3874103,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.609,
+ "geometry": "AQIAAAADAAAAs34zMV24FUDWAntMpBZKQFGf5A6buBVAIJxPHasWSkAHeqhtw7gVQP/mxYmvFkpA"
+ },
+ {
+ "id": 3666962,
+ "linkIdReversed": null,
+ "fromNodeId": 3874103,
+ "toNodeId": 3874104,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.609,
+ "geometry": "AQIAAAACAAAAB3qobcO4FUD/5sWJrxZKQN9TOe0puRVAKcsQx7oWSkA="
+ },
+ {
+ "id": 3666963,
+ "linkIdReversed": null,
+ "fromNodeId": 3874104,
+ "toNodeId": 3874105,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.609,
+ "geometry": "AQIAAAACAAAA31M57Sm5FUApyxDHuhZKQDkM5q+QuRVAU69bBMYWSkA="
+ },
+ {
+ "id": 3666964,
+ "linkIdReversed": null,
+ "fromNodeId": 3874105,
+ "toNodeId": 3874106,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.609,
+ "geometry": "AQIAAAACAAAAOQzmr5C5FUBTr1sExhZKQBDmdi/3uRVAfZOmQdEWSkA="
+ },
+ {
+ "id": 3666965,
+ "linkIdReversed": null,
+ "fromNodeId": 3874106,
+ "toNodeId": 597008,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.609,
+ "geometry": "AQIAAAACAAAAEOZ2L/e5FUB9k6ZB0RZKQOi/B69duhVAp3fxftwWSkA="
+ },
+ {
+ "id": 3666966,
+ "linkIdReversed": null,
+ "fromNodeId": 597007,
+ "toNodeId": 3874107,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 48.088,
+ "geometry": "AQIAAAAEAAAAD0WBPpG3FUDhQh7BjRZKQOy+Y3jstxVA5WN3gZIWSkDE6o8wDLgVQMYWghyUFkpArU1jey24FUDRkPEolRZKQA=="
+ },
+ {
+ "id": 3666967,
+ "linkIdReversed": null,
+ "fromNodeId": 3874107,
+ "toNodeId": 3874108,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 48.088,
+ "geometry": "AQIAAAAGAAAArU1jey24FUDRkPEolRZKQJwzorQ3uBVA9WbUfJUWSkA1XU90XbgVQO91Ul+WFkpA1GAaho+4FUCzQ/zDlhZKQJXSM73EuBVA73VSX5YWSkDObi2T4bgVQKfJjLeVFkpA"
+ },
+ {
+ "id": 3666968,
+ "linkIdReversed": null,
+ "fromNodeId": 3874108,
+ "toNodeId": 3874109,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 48.088,
+ "geometry": "AQIAAAAHAAAAzm4tk+G4FUCnyYy3lRZKQPxW68TluBVANlZinpUWSkCxMa8jDrkVQAgGED6UFkpALqpFRDG5FUAmUwWjkhZKQFYPmIdMuRVA9wKzQpEWSkARiq2gabkVQEzFxryOFkpA+7K0U3O5FUAv4GWGjRZKQA=="
+ },
+ {
+ "id": 3666969,
+ "linkIdReversed": null,
+ "fromNodeId": 3874109,
+ "toNodeId": 3874110,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 48.088,
+ "geometry": "AQIAAAAFAAAA+7K0U3O5FUAv4GWGjRZKQIkoJm+AuRVAfbH34osWSkCU3GETmbkVQKMjufyHFkpAIlLTLqa5FUAi4Xt/gxZKQCJS0y6muRVAvoOfOIAWSkA="
+ },
+ {
+ "id": 3666970,
+ "linkIdReversed": null,
+ "fromNodeId": 3874110,
+ "toNodeId": 3874111,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 48.088,
+ "geometry": "AQIAAAAFAAAAIlLTLqa5FUC+g584gBZKQCJS0y6muRVAJbGk3H0WSkAGhNbDl7kVQKRuZ195FkpAAI3SpX+5FUAXfnA+dRZKQHi3skRnuRVA43DmV3MWSkA="
+ },
+ {
+ "id": 3666971,
+ "linkIdReversed": null,
+ "fromNodeId": 3874111,
+ "toNodeId": 3874112,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 48.088,
+ "geometry": "AQIAAAAFAAAAeLeyRGe5FUDjcOZXcxZKQHh95qxPuRVAT1sjgnEWSkCm1CXjGLkVQC3t1FxuFkpAEhH+RdC4FUDVCWgibBZKQOUoQBTMuBVABI4EGmwWSkA="
+ },
+ {
+ "id": 3666972,
+ "linkIdReversed": null,
+ "fromNodeId": 3874112,
+ "toNodeId": 3874113,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 48.088,
+ "geometry": "AQIAAAAEAAAA5ShAFMy4FUAEjgQabBZKQHTTZpyGuBVAEDy+vWsWSkBdMSO8PbgVQApLPKBsFkpAR+aRPxi4FUD3qwDfbRZKQA=="
+ },
+ {
+ "id": 3666973,
+ "linkIdReversed": null,
+ "fromNodeId": 3874113,
+ "toNodeId": 597006,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 48.088,
+ "geometry": "AQIAAAAEAAAAR+aRPxi4FUD3qwDfbRZKQEEMdO0LuBVAvHmqQ24WSkD4xDpVvrcVQMaLhSFyFkpAxY7GoX63FUDcSxqjdRZKQA=="
+ },
+ {
+ "id": 3666974,
+ "linkIdReversed": null,
+ "fromNodeId": 597009,
+ "toNodeId": 597007,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 43.971,
+ "geometry": "AQIAAAACAAAA+WhxxjC3FUAujzUjgxZKQA9FgT6RtxVA4UIewY0WSkA="
+ },
+ {
+ "id": 3666975,
+ "linkIdReversed": null,
+ "fromNodeId": 596870,
+ "toNodeId": 3874114,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.707,
+ "geometry": "AQIAAAACAAAAAkaXN4e7FUCga19ALxZKQJc5XRYTuxVABoIAGToWSkA="
+ },
+ {
+ "id": 3666976,
+ "linkIdReversed": null,
+ "fromNodeId": 3874114,
+ "toNodeId": 3874115,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.707,
+ "geometry": "AQIAAAAEAAAAlzldFhO7FUAGggAZOhZKQFMj9DP1uhVANJ4I4jwWSkA9npYfuLoVQCUgJuFCFkpAh/2eWKe6FUDRXRJnRRZKQA=="
+ },
+ {
+ "id": 3666977,
+ "linkIdReversed": null,
+ "fromNodeId": 3874115,
+ "toNodeId": 3874116,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.707,
+ "geometry": "AQIAAAADAAAAh/2eWKe6FUDRXRJnRRZKQLU3+MJkuhVAflTDfk8WSkDXiGAcXLoVQGuBPSZSFkpA"
+ },
+ {
+ "id": 3666978,
+ "linkIdReversed": null,
+ "fromNodeId": 3874116,
+ "toNodeId": 3874117,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.707,
+ "geometry": "AQIAAAADAAAA14hgHFy6FUBrgT0mUhZKQNF0djI4uhVA0Jfe/lwWSkCkjLgANLoVQM8vStBfFkpA"
+ },
+ {
+ "id": 3666979,
+ "linkIdReversed": null,
+ "fromNodeId": 3874117,
+ "toNodeId": 3874118,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.707,
+ "geometry": "AQIAAAADAAAApIy4ADS6FUDPL0rQXxZKQGsNpfYiuhVAWBzO/GoWSkC1iZP7HboVQIY41sVtFkpA"
+ },
+ {
+ "id": 3666980,
+ "linkIdReversed": null,
+ "fromNodeId": 3874118,
+ "toNodeId": 3874119,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.707,
+ "geometry": "AQIAAAADAAAAtYmT+x26FUCGONbFbRZKQBbdek0PuhVATb9EvHUWSkBPIsK/CLoVQD5BYrt7FkpA"
+ },
+ {
+ "id": 3666981,
+ "linkIdReversed": null,
+ "fromNodeId": 3874119,
+ "toNodeId": 3874120,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.707,
+ "geometry": "AQIAAAACAAAATyLCvwi6FUA+QWK7exZKQKT7OQX5uRVAxcVRuYkWSkA="
+ },
+ {
+ "id": 3666982,
+ "linkIdReversed": null,
+ "fromNodeId": 3874120,
+ "toNodeId": 3874121,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.707,
+ "geometry": "AQIAAAADAAAApPs5Bfm5FUDFxVG5iRZKQDj0Fg/vuRVAJlMFo5IWSkAWhsjp67kVQE1KQbeXFkpA"
+ },
+ {
+ "id": 3666983,
+ "linkIdReversed": null,
+ "fromNodeId": 3874121,
+ "toNodeId": 3874122,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.707,
+ "geometry": "AQIAAAACAAAAFobI6eu5FUBNSkG3lxZKQLu1TIbjuRVAdsb3xaUWSkA="
+ },
+ {
+ "id": 3666984,
+ "linkIdReversed": null,
+ "fromNodeId": 3874122,
+ "toNodeId": 3874123,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.707,
+ "geometry": "AQIAAAAEAAAAu7VMhuO5FUB2xvfFpRZKQCegibDhuRVAx7ji4qgWSkCqfqXz4bkVQHpsy4CzFkpALV3BNuK5FUDOxkrMsxZKQA=="
+ },
+ {
+ "id": 3666985,
+ "linkIdReversed": null,
+ "fromNodeId": 3874123,
+ "toNodeId": 3874124,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.707,
+ "geometry": "AQIAAAADAAAALV3BNuK5FUDOxkrMsxZKQC16pwLuuRVADp90IsEWSkDBj2rY77kVQCbHndLBFkpA"
+ },
+ {
+ "id": 3666986,
+ "linkIdReversed": null,
+ "fromNodeId": 3874124,
+ "toNodeId": 3874125,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.707,
+ "geometry": "AQIAAAADAAAAwY9q2O+5FUAmx53SwRZKQFqcMcwJuhVAjBGJQssWSkCNXg1QGroVQLr5RnTPFkpA"
+ },
+ {
+ "id": 3666987,
+ "linkIdReversed": null,
+ "fromNodeId": 3874125,
+ "toNodeId": 597008,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.707,
+ "geometry": "AQIAAAADAAAAjV4NUBq6FUC6+UZ0zxZKQNcUyOwsuhVAjZYDPdQWSkDovwevXboVQKd38X7cFkpA"
+ },
+ {
+ "id": 3666988,
+ "linkIdReversed": null,
+ "fromNodeId": 597008,
+ "toNodeId": 3874126,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 44.067,
+ "geometry": "AQIAAAACAAAA6L8Hr126FUCnd/F+3BZKQIF6M2q+uhVAKqc9JecWSkA="
+ },
+ {
+ "id": 3666989,
+ "linkIdReversed": null,
+ "fromNodeId": 3874126,
+ "toNodeId": 3874127,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 44.067,
+ "geometry": "AQIAAAACAAAAgXozar66FUAqpz0l5xZKQJ0Te2gfuxVA3lomw/EWSkA="
+ },
+ {
+ "id": 3666990,
+ "linkIdReversed": null,
+ "fromNodeId": 3874127,
+ "toNodeId": 3874128,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 44.067,
+ "geometry": "AQIAAAADAAAAnRN7aB+7FUDeWibD8RZKQEGasWg6uxVA7l2DvvQWSkCz74rgf7sVQGGKcmn8FkpA"
+ },
+ {
+ "id": 3666991,
+ "linkIdReversed": null,
+ "fromNodeId": 3874128,
+ "toNodeId": 3874129,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 44.067,
+ "geometry": "AQIAAAADAAAAs++K4H+7FUBhinJp/BZKQKddTDPduxVAwePbuwYXSkBG7X4V4LsVQOW5vg8HF0pA"
+ },
+ {
+ "id": 3666996,
+ "linkIdReversed": null,
+ "fromNodeId": 596870,
+ "toNodeId": 3874133,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 45.066,
+ "geometry": "AQIAAAACAAAAAkaXN4e7FUCga19ALxZKQNBhvrwAuxVAW0QUkzcWSkA="
+ },
+ {
+ "id": 3666997,
+ "linkIdReversed": null,
+ "fromNodeId": 3874133,
+ "toNodeId": 3874134,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 45.066,
+ "geometry": "AQIAAAACAAAA0GG+vAC7FUBbRBSTNxZKQJ595UF6uhVAFR3J5T8WSkA="
+ },
+ {
+ "id": 3666998,
+ "linkIdReversed": null,
+ "fromNodeId": 3874134,
+ "toNodeId": 3874135,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 45.066,
+ "geometry": "AQIAAAADAAAAnn3lQXq6FUAVHcnlPxZKQFpnfF9cuhVAea7vw0EWSkALKT+p9rkVQFLUmXtIFkpA"
+ },
+ {
+ "id": 3666999,
+ "linkIdReversed": null,
+ "fromNodeId": 3874135,
+ "toNodeId": 3874136,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 45.066,
+ "geometry": "AQIAAAACAAAACyk/qfa5FUBS1Jl7SBZKQH2R0JZzuRVAMIMxIlEWSkA="
+ },
+ {
+ "id": 3667000,
+ "linkIdReversed": null,
+ "fromNodeId": 3874136,
+ "toNodeId": 3874137,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 45.066,
+ "geometry": "AQIAAAADAAAAfZHQlnO5FUAwgzEiURZKQEWeJF0zuRVALudSXFUWSkABMQkX8rgVQE8hV+pZFkpA"
+ },
+ {
+ "id": 3667001,
+ "linkIdReversed": null,
+ "fromNodeId": 3874137,
+ "toNodeId": 3874138,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 45.066,
+ "geometry": "AQIAAAACAAAAATEJF/K4FUBPIVfqWRZKQBMpzeZxuBVA3zKny2IWSkA="
+ },
+ {
+ "id": 3667002,
+ "linkIdReversed": null,
+ "fromNodeId": 3874138,
+ "toNodeId": 3874139,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 45.066,
+ "geometry": "AQIAAAADAAAAEynN5nG4FUDfMqfLYhZKQH+8V61MuBVAK2haYmUWSkDhYdo397cVQNUJaCJsFkpA"
+ },
+ {
+ "id": 3667003,
+ "linkIdReversed": null,
+ "fromNodeId": 3874139,
+ "toNodeId": 597006,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 45.066,
+ "geometry": "AQIAAAACAAAA4WHaN/e3FUDVCWgibBZKQMWOxqF+txVA3Esao3UWSkA="
+ },
+ {
+ "id": 3667004,
+ "linkIdReversed": null,
+ "fromNodeId": 597011,
+ "toNodeId": 3874140,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.115,
+ "geometry": "AQIAAAADAAAAQSrFjsaxFUDmllZD4hZKQBMqOLwgshVAxsTm49oWSkBMxjGSPbIVQNmXbDzYFkpA"
+ },
+ {
+ "id": 3667005,
+ "linkIdReversed": null,
+ "fromNodeId": 3874140,
+ "toNodeId": 3874141,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.115,
+ "geometry": "AQIAAAACAAAATMYxkj2yFUDZl2w82BZKQJshVRSvshVACMvY0M0WSkA="
+ },
+ {
+ "id": 3667006,
+ "linkIdReversed": null,
+ "fromNodeId": 3874141,
+ "toNodeId": 3874142,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.115,
+ "geometry": "AQIAAAADAAAAmyFVFK+yFUAIy9jQzRZKQAw9YvTcshVA2uIan8kWSkBbJO1GH7MVQJYGflTDFkpA"
+ },
+ {
+ "id": 3667007,
+ "linkIdReversed": null,
+ "fromNodeId": 3874142,
+ "toNodeId": 3874143,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.115,
+ "geometry": "AQIAAAACAAAAWyTtRh+zFUCWBn5UwxZKQJOLMbCOsxVAhEpcx7gWSkA="
+ },
+ {
+ "id": 3667008,
+ "linkIdReversed": null,
+ "fromNodeId": 3874143,
+ "toNodeId": 3874144,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.115,
+ "geometry": "AQIAAAADAAAAk4sxsI6zFUCESlzHuBZKQCfbwB2osxVAGvz9YrYWSkDcKR2s/7MVQOIBZVOuFkpA"
+ },
+ {
+ "id": 3667009,
+ "linkIdReversed": null,
+ "fromNodeId": 3874144,
+ "toNodeId": 3874145,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.115,
+ "geometry": "AQIAAAACAAAA3CkdrP+zFUDiAWVTrhZKQKimJOtwtBVAETXR56MWSkA="
+ },
+ {
+ "id": 3667010,
+ "linkIdReversed": null,
+ "fromNodeId": 3874145,
+ "toNodeId": 3874146,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.115,
+ "geometry": "AQIAAAADAAAAqKYk63C0FUARNdHnoxZKQAMlBRbAtBVAYtaLoZwWSkCAnZs247QVQLHbZ5WZFkpA"
+ },
+ {
+ "id": 3667011,
+ "linkIdReversed": null,
+ "fromNodeId": 3874146,
+ "toNodeId": 3874147,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.115,
+ "geometry": "AQIAAAACAAAAgJ2bNuO0FUCx22eVmRZKQPYjRWRYtRVAk3GMZI8WSkA="
+ },
+ {
+ "id": 3667012,
+ "linkIdReversed": null,
+ "fromNodeId": 3874147,
+ "toNodeId": 596837,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.115,
+ "geometry": "AQIAAAACAAAA9iNFZFi1FUCTcYxkjxZKQG2q7pHNtRVARYMUPIUWSkA="
+ },
+ {
+ "id": 3667013,
+ "linkIdReversed": null,
+ "fromNodeId": 597011,
+ "toNodeId": 3874148,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 45.877,
+ "geometry": "AQIAAAACAAAAQSrFjsaxFUDmllZD4hZKQJBLHHkgshVAyGDFqdYWSkA="
+ },
+ {
+ "id": 3667014,
+ "linkIdReversed": null,
+ "fromNodeId": 3874148,
+ "toNodeId": 3874149,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 45.877,
+ "geometry": "AQIAAAADAAAAkEsceSCyFUDIYMWp1hZKQIo8SbpmshVAJuSDns0WSkAS9YJPc7IVQCdMGM3KFkpA"
+ },
+ {
+ "id": 3667015,
+ "linkIdReversed": null,
+ "fromNodeId": 3874149,
+ "toNodeId": 3874150,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 45.877,
+ "geometry": "AQIAAAADAAAAEvWCT3OyFUAnTBjNyhZKQKZh+IiYshVAPe/GgsIWSkDCL/XzprIVQHu9++O9FkpA"
+ },
+ {
+ "id": 3667016,
+ "linkIdReversed": null,
+ "fromNodeId": 3874150,
+ "toNodeId": 597012,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 45.877,
+ "geometry": "AQIAAAACAAAAwi/186ayFUB7vfvjvRZKQPvo1JXPshVAHcwmwLAWSkA="
+ },
+ {
+ "id": 3667020,
+ "linkIdReversed": null,
+ "fromNodeId": 3874153,
+ "toNodeId": 3874154,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 44.597,
+ "geometry": "AQIAAAACAAAA2PFfIAiwFUD1vBsLChdKQAXfNH12sBVA6L0xBAAXSkA="
+ },
+ {
+ "id": 3667021,
+ "linkIdReversed": null,
+ "fromNodeId": 3874154,
+ "toNodeId": 3874155,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 44.597,
+ "geometry": "AQIAAAADAAAABd80fXawFUDovTEEABdKQHDOiNLesBVA4Xt/g/YWSkAyzAna5LAVQNu+R/31FkpA"
+ },
+ {
+ "id": 3667022,
+ "linkIdReversed": null,
+ "fromNodeId": 3874155,
+ "toNodeId": 3874156,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 44.597,
+ "geometry": "AQIAAAACAAAAMswJ2uSwFUDbvkf99RZKQPiL2ZJVsRVA4CpPIOwWSkA="
+ },
+ {
+ "id": 3667023,
+ "linkIdReversed": null,
+ "fromNodeId": 3874156,
+ "toNodeId": 597011,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 44.597,
+ "geometry": "AQIAAAACAAAA+IvZklWxFUDgKk8g7BZKQEEqxY7GsRVA5pZWQ+IWSkA="
+ },
+ {
+ "id": 3667024,
+ "linkIdReversed": null,
+ "fromNodeId": 596837,
+ "toNodeId": 3874157,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 42.732,
+ "geometry": "AQIAAAACAAAAbarukc21FUBFgxQ8hRZKQM08uaZAthVAFHr9SXwWSkA="
+ },
+ {
+ "id": 3667025,
+ "linkIdReversed": null,
+ "fromNodeId": 3874157,
+ "toNodeId": 3874158,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 42.732,
+ "geometry": "AQIAAAACAAAAzTy5pkC2FUAUev1JfBZKQKrwZ3izthVAEvWCT3MWSkA="
+ },
+ {
+ "id": 3667026,
+ "linkIdReversed": null,
+ "fromNodeId": 3874158,
+ "toNodeId": 3874159,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 42.732,
+ "geometry": "AQIAAAACAAAAqvBneLO2FUAS9YJPcxZKQAqDMo0mtxVA4etrXWoWSkA="
+ },
+ {
+ "id": 3667027,
+ "linkIdReversed": null,
+ "fromNodeId": 3874159,
+ "toNodeId": 597014,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 42.732,
+ "geometry": "AQIAAAACAAAACoMyjSa3FUDh62tdahZKQOc24V6ZtxVA4GbxYmEWSkA="
+ },
+ {
+ "id": 3667034,
+ "linkIdReversed": null,
+ "fromNodeId": 3874165,
+ "toNodeId": 3874166,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.601,
+ "geometry": "AQIAAAACAAAAbHak+s6vFUAfoWZIFRdKQKq3BrZKsBVANqypLAoXSkA="
+ },
+ {
+ "id": 3667035,
+ "linkIdReversed": null,
+ "fromNodeId": 3874166,
+ "toNodeId": 3874167,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.601,
+ "geometry": "AQIAAAACAAAAqrcGtkqwFUA2rKksChdKQGvXhLTGsBVAHjNQGf8WSkA="
+ },
+ {
+ "id": 3667036,
+ "linkIdReversed": null,
+ "fromNodeId": 3874167,
+ "toNodeId": 3874168,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.601,
+ "geometry": "AQIAAAACAAAAa9eEtMawFUAeM1AZ/xZKQKgY529CsRVABrr2BfQWSkA="
+ },
+ {
+ "id": 3667037,
+ "linkIdReversed": null,
+ "fromNodeId": 3874168,
+ "toNodeId": 3874169,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.601,
+ "geometry": "AQIAAAADAAAAqBjnb0KxFUAGuvYF9BZKQPIIbqRssRVAbRtGQfAWSkDmWUkrvrEVQO5AnfLoFkpA"
+ },
+ {
+ "id": 3667038,
+ "linkIdReversed": null,
+ "fromNodeId": 3874169,
+ "toNodeId": 3874170,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.601,
+ "geometry": "AQIAAAACAAAA5llJK76xFUDuQJ3y6BZKQCSbq+Y5shVABkzg1t0WSkA="
+ },
+ {
+ "id": 3667039,
+ "linkIdReversed": null,
+ "fromNodeId": 3874170,
+ "toNodeId": 3874171,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.601,
+ "geometry": "AQIAAAACAAAAJJur5jmyFUAGTODW3RZKQGLcDaK1shVA7dKGw9IWSkA="
+ },
+ {
+ "id": 3667040,
+ "linkIdReversed": null,
+ "fromNodeId": 3874171,
+ "toNodeId": 3874172,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.601,
+ "geometry": "AQIAAAACAAAAYtwNorWyFUDt0obD0hZKQJ8dcF0xsxVABd7Jp8cWSkA="
+ },
+ {
+ "id": 3667041,
+ "linkIdReversed": null,
+ "fromNodeId": 3874172,
+ "toNodeId": 3874173,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.601,
+ "geometry": "AQIAAAACAAAAnx1wXTGzFUAF3smnxxZKQN1e0hitsxVA7WRwlLwWSkA="
+ },
+ {
+ "id": 3667042,
+ "linkIdReversed": null,
+ "fromNodeId": 3874173,
+ "toNodeId": 3874174,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.601,
+ "geometry": "AQIAAAACAAAA3V7SGK2zFUDtZHCUvBZKQJjBGJEotBVABHCzeLEWSkA="
+ },
+ {
+ "id": 3667043,
+ "linkIdReversed": null,
+ "fromNodeId": 3874174,
+ "toNodeId": 3874175,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.601,
+ "geometry": "AQIAAAACAAAAmMEYkSi0FUAEcLN4sRZKQNYCe0yktBVA7PZZZaYWSkA="
+ },
+ {
+ "id": 3667044,
+ "linkIdReversed": null,
+ "fromNodeId": 3874175,
+ "toNodeId": 3874176,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.601,
+ "geometry": "AQIAAAADAAAA1gJ7TKS0FUDs9lllphZKQDsYsU8AtRVA0xVsI54WSkAfvkwUIbUVQKX5Y1qbFkpA"
+ },
+ {
+ "id": 3667045,
+ "linkIdReversed": null,
+ "fromNodeId": 3874176,
+ "toNodeId": 3874177,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.601,
+ "geometry": "AQIAAAACAAAAH75MFCG1FUCl+WNamxZKQAcJUb6gtRVAD18mipAWSkA="
+ },
+ {
+ "id": 3667046,
+ "linkIdReversed": null,
+ "fromNodeId": 3874177,
+ "toNodeId": 3874178,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.601,
+ "geometry": "AQIAAAADAAAABwlRvqC1FUAPXyaKkBZKQLyuX7AbthVAPpKSHoYWSkByMnGrILYVQHrE6LmFFkpA"
+ },
+ {
+ "id": 3667047,
+ "linkIdReversed": null,
+ "fromNodeId": 3874178,
+ "toNodeId": 3874179,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.601,
+ "geometry": "AQIAAAACAAAAcjJxqyC2FUB6xOi5hRZKQIhlM4ekthVAOIQqNXsWSkA="
+ },
+ {
+ "id": 3667048,
+ "linkIdReversed": null,
+ "fromNodeId": 3874179,
+ "toNodeId": 3874180,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.601,
+ "geometry": "AQIAAAADAAAAiGUzh6S2FUA4hCo1exZKQEloy7kUtxVAB3sTQ3IWSkCkVS3pKLcVQMa/z7hwFkpA"
+ },
+ {
+ "id": 3667049,
+ "linkIdReversed": null,
+ "fromNodeId": 3874180,
+ "toNodeId": 3874181,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.601,
+ "geometry": "AQIAAAACAAAApFUt6Si3FUDGv8+4cBZKQNz2PeqvtxVAB14td2YWSkA="
+ },
+ {
+ "id": 3667050,
+ "linkIdReversed": null,
+ "fromNodeId": 3874181,
+ "toNodeId": 3874182,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.601,
+ "geometry": "AQIAAAADAAAA3PY96q+3FUAHXi13ZhZKQA4tsp3vtxVAk8mpnWEWSkA2Bp0QOrgVQPpeQ3BcFkpA"
+ },
+ {
+ "id": 3667051,
+ "linkIdReversed": null,
+ "fromNodeId": 3874182,
+ "toNodeId": 3874183,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.601,
+ "geometry": "AQIAAAACAAAANgadEDq4FUD6XkNwXBZKQKzGEtbGuBVA0Eaum1IWSkA="
+ },
+ {
+ "id": 3667052,
+ "linkIdReversed": null,
+ "fromNodeId": 3874183,
+ "toNodeId": 3874184,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.601,
+ "geometry": "AQIAAAADAAAArMYS1sa4FUDQRq6bUhZKQCgK9Ik8uRVAh+EjYkoWSkClZaTeU7kVQHaqfM9IFkpA"
+ },
+ {
+ "id": 3667053,
+ "linkIdReversed": null,
+ "fromNodeId": 3874184,
+ "toNodeId": 3874185,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.601,
+ "geometry": "AQIAAAACAAAApWWk3lO5FUB2qnzPSBZKQLA73XniuRVALXk8LT8WSkA="
+ },
+ {
+ "id": 3667054,
+ "linkIdReversed": null,
+ "fromNodeId": 3874185,
+ "toNodeId": 597016,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.601,
+ "geometry": "AQIAAAACAAAAsDvdeeK5FUAteTwtPxZKQLoRFhVxuhVAFMyYgjUWSkA="
+ },
+ {
+ "id": 3667060,
+ "linkIdReversed": null,
+ "fromNodeId": 597016,
+ "toNodeId": 3874189,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 45.102,
+ "geometry": "AQIAAAACAAAAuhEWFXG6FUAUzJiCNRZKQHWRQln4uhVA++qqQC0WSkA="
+ },
+ {
+ "id": 3667061,
+ "linkIdReversed": null,
+ "fromNodeId": 3874189,
+ "toNodeId": 3874190,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 45.102,
+ "geometry": "AQIAAAADAAAAdZFCWfi6FUD76qpALRZKQEeRtYZSuxVAP6phvycWSkC4rMJmgLsVQIIBhA8lFkpA"
+ },
+ {
+ "id": 3667062,
+ "linkIdReversed": null,
+ "fromNodeId": 3874190,
+ "toNodeId": 3874191,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 45.102,
+ "geometry": "AQIAAAACAAAAuKzCZoC7FUCCAYQPJRZKQIogzsMJvBVASgfr/xwWSkA="
+ },
+ {
+ "id": 3667067,
+ "linkIdReversed": null,
+ "fromNodeId": 597020,
+ "toNodeId": 3874195,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 32.463,
+ "geometry": "AQIAAAACAAAARKM7iJ25FUDOcAM+PxZKQPRRRlwAuhVAv9U6cTkWSkA="
+ },
+ {
+ "id": 3667068,
+ "linkIdReversed": null,
+ "fromNodeId": 3874195,
+ "toNodeId": 597016,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 32.463,
+ "geometry": "AQIAAAADAAAA9FFGXAC6FUC/1TpxORZKQCFX6lkQuhVAJc/1fTgWSkC6ERYVcboVQBTMmII1FkpA"
+ },
+ {
+ "id": 3667070,
+ "linkIdReversed": null,
+ "fromNodeId": 596859,
+ "toNodeId": 3874196,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 48.725,
+ "geometry": "AQIAAAACAAAAu/JZnge3FUCAgSBAhhZKQMC0qE9ytxVAryKjA5IWSkA="
+ },
+ {
+ "id": 3667071,
+ "linkIdReversed": null,
+ "fromNodeId": 3874196,
+ "toNodeId": 3874197,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 48.725,
+ "geometry": "AQIAAAACAAAAwLSoT3K3FUCvIqMDkhZKQMV29wDdtxVArz+Jz50WSkA="
+ },
+ {
+ "id": 3667072,
+ "linkIdReversed": null,
+ "fromNodeId": 3874197,
+ "toNodeId": 3874198,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 48.725,
+ "geometry": "AQIAAAACAAAAxXb3AN23FUCvP4nPnRZKQMk4RrJHuBVA3+ALk6kWSkA="
+ },
+ {
+ "id": 3667073,
+ "linkIdReversed": null,
+ "fromNodeId": 3874198,
+ "toNodeId": 3874199,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 48.725,
+ "geometry": "AQIAAAADAAAAyThGske4FUDf4AuTqRZKQMPvplt2uBVAd0tywK4WSkDUt8zpsrgVQA6Cjla1FkpA"
+ },
+ {
+ "id": 3667074,
+ "linkIdReversed": null,
+ "fromNodeId": 3874199,
+ "toNodeId": 3874200,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 48.725,
+ "geometry": "AQIAAAACAAAA1LfM6bK4FUAOgo5WtRZKQOTziqceuRVAnStKCcEWSkA="
+ },
+ {
+ "id": 3667075,
+ "linkIdReversed": null,
+ "fromNodeId": 3874200,
+ "toNodeId": 3874201,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 48.725,
+ "geometry": "AQIAAAACAAAA5POKpx65FUCdK0oJwRZKQHgOZaiKuRVA/FBpxMwWSkA="
+ },
+ {
+ "id": 3667076,
+ "linkIdReversed": null,
+ "fromNodeId": 3874201,
+ "toNodeId": 3874202,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 48.725,
+ "geometry": "AQIAAAACAAAAeA5lqIq5FUD8UGnEzBZKQIhKI2b2uRVAi/okd9gWSkA="
+ },
+ {
+ "id": 3667077,
+ "linkIdReversed": null,
+ "fromNodeId": 3874202,
+ "toNodeId": 3874203,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 48.725,
+ "geometry": "AQIAAAACAAAAiEojZva5FUCL+iR32BZKQBtl/WZiuhVA6x9EMuQWSkA="
+ },
+ {
+ "id": 3667078,
+ "linkIdReversed": null,
+ "fromNodeId": 3874203,
+ "toNodeId": 3874204,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 48.725,
+ "geometry": "AQIAAAACAAAAG2X9ZmK6FUDrH0Qy5BZKQCuhuyTOuhVAecn/5O8WSkA="
+ },
+ {
+ "id": 3667079,
+ "linkIdReversed": null,
+ "fromNodeId": 3874204,
+ "toNodeId": 3874205,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 48.725,
+ "geometry": "AQIAAAACAAAAK6G7JM66FUB5yf/k7xZKQDzdeeI5uxVACHO7l/sWSkA="
+ },
+ {
+ "id": 3667080,
+ "linkIdReversed": null,
+ "fromNodeId": 3874205,
+ "toNodeId": 3874206,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 48.725,
+ "geometry": "AQIAAAACAAAAPN154jm7FUAIc7uX+xZKQM/3U+OluxVAZ5jaUgcXSkA="
+ },
+ {
+ "id": 3667081,
+ "linkIdReversed": null,
+ "fromNodeId": 3874206,
+ "toNodeId": 3874207,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 48.725,
+ "geometry": "AQIAAAACAAAAz/dT46W7FUBnmNpSBxdKQN8zEqERvBVA9kGWBRMXSkA="
+ },
+ {
+ "id": 3667119,
+ "linkIdReversed": null,
+ "fromNodeId": 597014,
+ "toNodeId": 3874238,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 48.283,
+ "geometry": "AQIAAAAEAAAA5zbhXpm3FUDgZvFiYRZKQDyE8dO4txVA14hgHFwWSkD4/gbt1bcVQGL03EJXFkpAU8+CUN63FUCCdRw/VBZKQA=="
+ },
+ {
+ "id": 3667120,
+ "linkIdReversed": null,
+ "fromNodeId": 3874238,
+ "toNodeId": 3874239,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 48.283,
+ "geometry": "AQIAAAAHAAAAU8+CUN63FUCCdRw/VBZKQIC3QILitxVAETY8vVIWSkCun/6z5rcVQIRFRZxOFkpADhDM0eO3FUAsYthhTBZKQLn8h/TbtxVARfKVQEoWSkA8vr1r0LcVQKZiY15HFkpA+OEgIcq3FUAMXB5rRhZKQA=="
+ },
+ {
+ "id": 3667121,
+ "linkIdReversed": null,
+ "fromNodeId": 3874239,
+ "toNodeId": 3874240,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 48.283,
+ "geometry": "AQIAAAAGAAAA+OEgIcq3FUAMXB5rRhZKQKPO3EPCtxVAv/IgPUUWSkD4im69prcVQPDeUWNCFkpA/vDz34O3FUCSPq2iPxZKQLq9pDFatxVAq85qgT0WSkBljXqIRrcVQJOmQdE8FkpA"
+ },
+ {
+ "id": 3667122,
+ "linkIdReversed": null,
+ "fromNodeId": 3874240,
+ "toNodeId": 3874241,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 48.283,
+ "geometry": "AQIAAAAGAAAAZY16iEa3FUCTpkHRPBZKQLWM1HsqtxVA+Z/83TsWSkBxPJ8B9bYVQNAM4gM7FkpApG38icq2FUCPHVTiOhZKQFt9dVWgthVAQYAMHTsWSkDBjZQtkrYVQJTai2g7FkpA"
+ },
+ {
+ "id": 3667123,
+ "linkIdReversed": null,
+ "fromNodeId": 3874241,
+ "toNodeId": 3874242,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 48.283,
+ "geometry": "AQIAAAAGAAAAwY2ULZK2FUCU2otoOxZKQJ/leXB3thVAO4+K/zsWSkBypgnbT7YVQOcAwRw9FkpAq7GEtTG2FUDaHr3hPhZKQJojK78MthVAc/G3PUEWSkBLsDic+bUVQMYX7fFCFkpA"
+ },
+ {
+ "id": 3667124,
+ "linkIdReversed": null,
+ "fromNodeId": 3874242,
+ "toNodeId": 3874243,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 48.283,
+ "geometry": "AQIAAAAGAAAAS7A4nPm1FUDGF+3xQhZKQGdEaW/wtRVAHy+kw0MWSkAS91j60LUVQClBf6FHFkpAXFZhM8C1FUB0QuigSxZKQC9uowG8tRVAhEVFnE4WSkAvbqMBvLUVQLOVl/xPFkpA"
+ },
+ {
+ "id": 3667125,
+ "linkIdReversed": null,
+ "fromNodeId": 3874243,
+ "toNodeId": 596864,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 48.283,
+ "geometry": "AQIAAAAFAAAAL26jAby1FUCzlZf8TxZKQKyPh767tRVAp7OTwVEWSkDl8bT8wLUVQECGjh1UFkpAj/tW68S1FUAn9tA+VhZKQKzmOSLftRVAyqZc4V0WSkA="
+ },
+ {
+ "id": 3667126,
+ "linkIdReversed": null,
+ "fromNodeId": 597014,
+ "toNodeId": 3874244,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 44.443,
+ "geometry": "AQIAAAADAAAA5zbhXpm3FUDgZvFiYRZKQOzbSUT4txVAN8XjoloWSkDEB3b8F7gVQJFEL6NYFkpA"
+ },
+ {
+ "id": 3667127,
+ "linkIdReversed": null,
+ "fromNodeId": 3874244,
+ "toNodeId": 3874245,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 44.443,
+ "geometry": "AQIAAAACAAAAxAd2/Be4FUCRRC+jWBZKQFdcHJWbuBVAp+fdWFAWSkA="
+ },
+ {
+ "id": 3667128,
+ "linkIdReversed": null,
+ "fromNodeId": 3874245,
+ "toNodeId": 3874246,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 44.443,
+ "geometry": "AQIAAAADAAAAV1wclZu4FUCn591YUBZKQBIR/kXQuBVAo5I6AU0WSkDTvOMUHbkVQNujN9xHFkpA"
+ },
+ {
+ "id": 3667129,
+ "linkIdReversed": null,
+ "fromNodeId": 3874246,
+ "toNodeId": 597020,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 44.443,
+ "geometry": "AQIAAAACAAAA07zjFB25FUDbozfcRxZKQESjO4iduRVAznADPj8WSkA="
+ },
+ {
+ "id": 3667130,
+ "linkIdReversed": null,
+ "fromNodeId": 597029,
+ "toNodeId": 3874247,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 41.673,
+ "geometry": "AQIAAAACAAAAYygn2lW4FUARHm0csRZKQP0S8db5txVABB+DFacWSkA="
+ },
+ {
+ "id": 3667131,
+ "linkIdReversed": null,
+ "fromNodeId": 3874247,
+ "toNodeId": 3874248,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 41.673,
+ "geometry": "AQIAAAACAAAA/RLx1vm3FUAEH4MVpxZKQBUfn5CdtxVA9x+ZDp0WSkA="
+ },
+ {
+ "id": 3667132,
+ "linkIdReversed": null,
+ "fromNodeId": 3874248,
+ "toNodeId": 3874249,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 41.673,
+ "geometry": "AQIAAAACAAAAFR+fkJ23FUD3H5kOnRZKQK8JaY1BtxVA6iCvB5MWSkA="
+ },
+ {
+ "id": 3667133,
+ "linkIdReversed": null,
+ "fromNodeId": 3874249,
+ "toNodeId": 596855,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 41.673,
+ "geometry": "AQIAAAACAAAArwlpjUG3FUDqIK8HkxZKQEn0MorlthVA3iHFAIkWSkA="
+ },
+ {
+ "id": 3667134,
+ "linkIdReversed": null,
+ "fromNodeId": 596864,
+ "toNodeId": 3874250,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 36.710,
+ "geometry": "AQIAAAACAAAArOY5It+1FUDKplzhXRZKQAZlGk0uthVA+69z02YWSkA="
+ },
+ {
+ "id": 3667135,
+ "linkIdReversed": null,
+ "fromNodeId": 3874250,
+ "toNodeId": 597030,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 36.710,
+ "geometry": "AQIAAAACAAAABmUaTS62FUD7r3PTZhZKQOPBFrt9thVAXD0nvW8WSkA="
+ },
+ {
+ "id": 3667136,
+ "linkIdReversed": null,
+ "fromNodeId": 597030,
+ "toNodeId": 3874251,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 40.380,
+ "geometry": "AQIAAAACAAAA48EWu322FUBcPSe9bxZKQC0mNh/XthVARWYucHkWSkA="
+ },
+ {
+ "id": 3667137,
+ "linkIdReversed": null,
+ "fromNodeId": 3874251,
+ "toNodeId": 597009,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 40.380,
+ "geometry": "AQIAAAACAAAALSY2H9e2FUBFZi5weRZKQPloccYwtxVALo81I4MWSkA="
+ },
+ {
+ "id": 3669263,
+ "linkIdReversed": null,
+ "fromNodeId": 3875465,
+ "toNodeId": 3875466,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.501,
+ "geometry": "AQIAAAADAAAAXf5D+u27FUAp6sw9JBZKQCoaa39nuxVAT3l0IywWSkB6Nqs+V7sVQOl/uRYtFkpA"
+ },
+ {
+ "id": 3669264,
+ "linkIdReversed": null,
+ "fromNodeId": 3875466,
+ "toNodeId": 3875467,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.501,
+ "geometry": "AQIAAAACAAAAejarPle7FUDpf7kWLRZKQCAKZkzBuhVAGonQCDYWSkA="
+ },
+ {
+ "id": 3669265,
+ "linkIdReversed": null,
+ "fromNodeId": 3875467,
+ "toNodeId": 3875468,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.501,
+ "geometry": "AQIAAAADAAAAIApmTMG6FUAaidAINhZKQNdrelBQuhVA8656wDwWSkBa8+MvLboVQF392CQ/FkpA"
+ },
+ {
+ "id": 3669266,
+ "linkIdReversed": null,
+ "fromNodeId": 3875468,
+ "toNodeId": 3875469,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.501,
+ "geometry": "AQIAAAACAAAAWvPjLy26FUBd/dgkPxZKQNL7xteeuRVApS4Zx0gWSkA="
+ },
+ {
+ "id": 3669267,
+ "linkIdReversed": null,
+ "fromNodeId": 3875469,
+ "toNodeId": 3875470,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.501,
+ "geometry": "AQIAAAADAAAA0vvG1565FUClLhnHSBZKQORnI9dNuRVAkfP+P04WSkDTn/1IEbkVQL7bvHFSFkpA"
+ },
+ {
+ "id": 3669268,
+ "linkIdReversed": null,
+ "fromNodeId": 3875470,
+ "toNodeId": 3875471,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.501,
+ "geometry": "AQIAAAACAAAA05/9SBG5FUC+27xxUhZKQNoAbECEuBVASPyKNVwWSkA="
+ },
+ {
+ "id": 3669269,
+ "linkIdReversed": null,
+ "fromNodeId": 3875471,
+ "toNodeId": 3875472,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.501,
+ "geometry": "AQIAAAADAAAA2gBsQIS4FUBI/Io1XBZKQP0v16IFuBVAZ5qw/WQWSkBp/S0B+LcVQKKYvAFmFkpA"
+ },
+ {
+ "id": 3669270,
+ "linkIdReversed": null,
+ "fromNodeId": 3875472,
+ "toNodeId": 3875473,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.501,
+ "geometry": "AQIAAAACAAAAaf0tAfi3FUCimLwBZhZKQKnAyTZwtxVAwQKYMnAWSkA="
+ },
+ {
+ "id": 3669271,
+ "linkIdReversed": null,
+ "fromNodeId": 3875473,
+ "toNodeId": 3875474,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.501,
+ "geometry": "AQIAAAADAAAAqcDJNnC3FUDBApgycBZKQPOOU3QktxVAjq7S3XUWSkB33PC76bYVQFDgnXx6FkpA"
+ },
+ {
+ "id": 3669272,
+ "linkIdReversed": null,
+ "fromNodeId": 3875474,
+ "toNodeId": 3875475,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.501,
+ "geometry": "AQIAAAACAAAAd9zwu+m2FUBQ4J18ehZKQFvs9lllthVA8iiV8IQWSkA="
+ },
+ {
+ "id": 3669273,
+ "linkIdReversed": null,
+ "fromNodeId": 3875475,
+ "toNodeId": 3875476,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.501,
+ "geometry": "AQIAAAADAAAAW+z2WWW2FUDyKJXwhBZKQKuxhLUxthVA3iHFAIkWSkBiaksd5LUVQHVY4ZaPFkpA"
+ },
+ {
+ "id": 3669274,
+ "linkIdReversed": null,
+ "fromNodeId": 3875476,
+ "toNodeId": 3875477,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.501,
+ "geometry": "AQIAAAACAAAAYmpLHeS1FUB1WOGWjxZKQH/cfvlktRVACvMeZ5oWSkA="
+ },
+ {
+ "id": 3669275,
+ "linkIdReversed": null,
+ "fromNodeId": 3875477,
+ "toNodeId": 3875478,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.501,
+ "geometry": "AQIAAAADAAAAf9x++WS1FUAK8x5nmhZKQAIqHEEqtRVAwHYwYp8WSkAwZHWr57QVQOF86lilFkpA"
+ },
+ {
+ "id": 3669276,
+ "linkIdReversed": null,
+ "fromNodeId": 3875478,
+ "toNodeId": 3875479,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.501,
+ "geometry": "AQIAAAACAAAAMGR1q+e0FUDhfOpYpRZKQHUBLzNstBVA+fVDbLAWSkA="
+ },
+ {
+ "id": 3669277,
+ "linkIdReversed": null,
+ "fromNodeId": 3875479,
+ "toNodeId": 3875480,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.501,
+ "geometry": "AQIAAAACAAAAdQEvM2y0FUD59UNssBZKQLqe6LrwsxVAEW+df7sWSkA="
+ },
+ {
+ "id": 3669278,
+ "linkIdReversed": null,
+ "fromNodeId": 3875480,
+ "toNodeId": 3875481,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.501,
+ "geometry": "AQIAAAACAAAAup7ouvCzFUARb51/uxZKQAA8okJ1sxVAWWyTisYWSkA="
+ },
+ {
+ "id": 3669279,
+ "linkIdReversed": null,
+ "fromNodeId": 3875481,
+ "toNodeId": 3875482,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.501,
+ "geometry": "AQIAAAACAAAAADyiQnWzFUBZbJOKxhZKQEXZW8r5shVAceXsndEWSkA="
+ },
+ {
+ "id": 3669280,
+ "linkIdReversed": null,
+ "fromNodeId": 3875482,
+ "toNodeId": 3875483,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.501,
+ "geometry": "AQIAAAACAAAARdlbyvmyFUBx5eyd0RZKQIp2FVJ+shVAiV5GsdwWSkA="
+ },
+ {
+ "id": 3669281,
+ "linkIdReversed": null,
+ "fromNodeId": 3875483,
+ "toNodeId": 3875484,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.501,
+ "geometry": "AQIAAAACAAAAinYVUn6yFUCJXkax3BZKQM8Tz9kCshVAodefxOcWSkA="
+ },
+ {
+ "id": 3669282,
+ "linkIdReversed": null,
+ "fromNodeId": 3875484,
+ "toNodeId": 3875485,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.501,
+ "geometry": "AQIAAAADAAAAzxPP2QKyFUCh15/E5xZKQLn98smKsRVAlnoWhPIWSkAUsYhhh7EVQOnUlc/yFkpA"
+ },
+ {
+ "id": 3669283,
+ "linkIdReversed": null,
+ "fromNodeId": 3875485,
+ "toNodeId": 3875486,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.501,
+ "geometry": "AQIAAAACAAAAFLGIYYexFUDp1JXP8hZKQNwsXiwMsRVA0clS6/0WSkA="
+ },
+ {
+ "id": 3669284,
+ "linkIdReversed": null,
+ "fromNodeId": 3875486,
+ "toNodeId": 3875487,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.501,
+ "geometry": "AQIAAAACAAAA3CxeLAyxFUDRyVLr/RZKQCeHTzqRsBVA6kKs/ggXSkA="
+ },
+ {
+ "id": 3669285,
+ "linkIdReversed": null,
+ "fromNodeId": 3875487,
+ "toNodeId": 3875488,
+ "speedInKilometersPerHour": 115,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 49.501,
+ "geometry": "AQIAAAACAAAAJ4dPOpGwFUDqQqz+CBdKQO8CJQUWsBVA0jdpGhQXSkA="
+ },
+ {
+ "id": 3675765,
+ "linkIdReversed": null,
+ "fromNodeId": 599091,
+ "toNodeId": 3878366,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.103,
+ "geometry": "AQIAAAADAAAAFw6EZAGzFUBUGcbdIBZKQC5x5IHIshVAEqW9wRcWSkBnmUUotrIVQB+7C5QUFkpA"
+ },
+ {
+ "id": 3675766,
+ "linkIdReversed": null,
+ "fromNodeId": 3878366,
+ "toNodeId": 3878367,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 46.103,
+ "geometry": "AQIAAAADAAAAZ5lFKLayFUAfuwuUFBZKQGglrfiGshVAptHkYgwWSkBtqBjnb7IVQNjxXyAIFkpA"
+ },
+ {
+ "id": 3675771,
+ "linkIdReversed": null,
+ "fromNodeId": 599093,
+ "toNodeId": 3878371,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.679,
+ "geometry": "AQIAAAADAAAA9Pv+zYuzFUCeJjPeVhZKQGbAWUqWsxVAWJHRAUkWSkBmwFlKlrMVQEYm4NdIFkpA"
+ },
+ {
+ "id": 3675772,
+ "linkIdReversed": null,
+ "fromNodeId": 3878371,
+ "toNodeId": 3878372,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.679,
+ "geometry": "AQIAAAAEAAAAZsBZSpazFUBGJuDXSBZKQPrVHCCYsxVAYVJ8fEIWSkDSjbCoiLMVQEGADB07FkpASfJc34ezFUBfmbfqOhZKQA=="
+ },
+ {
+ "id": 3675773,
+ "linkIdReversed": null,
+ "fromNodeId": 3878372,
+ "toNodeId": 3878373,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.679,
+ "geometry": "AQIAAAADAAAASfJc34ezFUBfmbfqOhZKQLDllettsxVA5XtGIjQWSkDS/DGtTbMVQO888ZwtFkpA"
+ },
+ {
+ "id": 3675774,
+ "linkIdReversed": null,
+ "fromNodeId": 3878373,
+ "toNodeId": 599091,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.679,
+ "geometry": "AQIAAAADAAAA0vwxrU2zFUDvPPGcLRZKQESHwJFAsxVA0ova/SoWSkAXDoRkAbMVQFQZxt0gFkpA"
+ },
+ {
+ "id": 3684607,
+ "linkIdReversed": 3684616,
+ "fromNodeId": 601546,
+ "toNodeId": 3882053,
+ "speedInKilometersPerHour": 45,
+ "reverseSpeedInKilometersPerHour": 45,
+ "distanceInMeters": 48.952,
+ "geometry": "AQIAAAACAAAAjswjfzCwFUAc6ndhaxZKQAvuBzwwsBVAObh0zHkWSkA="
+ },
+ {
+ "id": 3684608,
+ "linkIdReversed": 3684615,
+ "fromNodeId": 3882053,
+ "toNodeId": 3882054,
+ "speedInKilometersPerHour": 45,
+ "reverseSpeedInKilometersPerHour": 45,
+ "distanceInMeters": 48.952,
+ "geometry": "AQIAAAADAAAAC+4HPDCwFUA5uHTMeRZKQAvuBzwwsBVA198SgH8WSkCOzCN/MLAVQFWGcTeIFkpA"
+ },
+ {
+ "id": 3684609,
+ "linkIdReversed": 3684614,
+ "fromNodeId": 3882054,
+ "toNodeId": 3882055,
+ "speedInKilometersPerHour": 45,
+ "reverseSpeedInKilometersPerHour": 45,
+ "distanceInMeters": 48.952,
+ "geometry": "AQIAAAADAAAAjswjfzCwFUBVhnE3iBZKQJSJWwUxsBVA3nL1Y5MWSkCDUrRyL7AVQHFUbqKWFkpA"
+ },
+ {
+ "id": 3684909,
+ "linkIdReversed": 3684916,
+ "fromNodeId": 601607,
+ "toNodeId": 3882193,
+ "speedInKilometersPerHour": 45,
+ "reverseSpeedInKilometersPerHour": 45,
+ "distanceInMeters": 38.414,
+ "geometry": "AQIAAAAEAAAARL+2fvqvFUCSPq2iPxZKQAb3Ax4YsBVA9s/TgEEWSkDSi9r9KrAVQB8vpMNDFkpAWycuxyuwFUDs2t5uSRZKQA=="
+ },
+ {
+ "id": 3684910,
+ "linkIdReversed": 3684915,
+ "fromNodeId": 3882193,
+ "toNodeId": 3882194,
+ "speedInKilometersPerHour": 45,
+ "reverseSpeedInKilometersPerHour": 45,
+ "distanceInMeters": 38.414,
+ "geometry": "AQIAAAADAAAAWycuxyuwFUDs2t5uSRZKQOPCgZAssBVAv0NRoE8WSkBsXtVZLbAVQIcyVMVUFkpA"
+ },
+ {
+ "id": 3684911,
+ "linkIdReversed": 3684914,
+ "fromNodeId": 3882194,
+ "toNodeId": 3882195,
+ "speedInKilometersPerHour": 45,
+ "reverseSpeedInKilometersPerHour": 45,
+ "distanceInMeters": 38.414,
+ "geometry": "AQIAAAACAAAAbF7VWS2wFUCHMlTFVBZKQH2VfOwusBVAUg5mE2AWSkA="
+ },
+ {
+ "id": 3684912,
+ "linkIdReversed": 3684913,
+ "fromNodeId": 3882195,
+ "toNodeId": 601546,
+ "speedInKilometersPerHour": 45,
+ "reverseSpeedInKilometersPerHour": 45,
+ "distanceInMeters": 38.414,
+ "geometry": "AQIAAAACAAAAfZV87C6wFUBSDmYTYBZKQI7MI38wsBVAHOp3YWsWSkA="
+ },
+ {
+ "id": 3684922,
+ "linkIdReversed": 3684921,
+ "fromNodeId": 601607,
+ "toNodeId": 601609,
+ "speedInKilometersPerHour": 30,
+ "reverseSpeedInKilometersPerHour": 30,
+ "distanceInMeters": 39.066,
+ "geometry": "AQIAAAACAAAARL+2fvqvFUCSPq2iPxZKQOkLIef9rxVA5XtGIjQWSkA="
+ },
+ {
+ "id": 3685165,
+ "linkIdReversed": 3685168,
+ "fromNodeId": 3882328,
+ "toNodeId": 3882329,
+ "speedInKilometersPerHour": 14,
+ "reverseSpeedInKilometersPerHour": 14,
+ "distanceInMeters": 41.260,
+ "geometry": "AQIAAAACAAAA+kLIef+vFUD+ne3RGxZKQHKndLD+rxVA8gwa+icWSkA="
+ },
+ {
+ "id": 3685166,
+ "linkIdReversed": 3685167,
+ "fromNodeId": 3882329,
+ "toNodeId": 601609,
+ "speedInKilometersPerHour": 14,
+ "reverseSpeedInKilometersPerHour": 14,
+ "distanceInMeters": 41.260,
+ "geometry": "AQIAAAACAAAAcqd0sP6vFUDyDBr6JxZKQOkLIef9rxVA5XtGIjQWSkA="
+ },
+ {
+ "id": 3686216,
+ "linkIdReversed": null,
+ "fromNodeId": 596834,
+ "toNodeId": 3882835,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.267,
+ "geometry": "AQIAAAACAAAAqZ83FamwFUClg/V/DhdKQFVq9kArsBVA4gZ8fhgXSkA="
+ },
+ {
+ "id": 3686217,
+ "linkIdReversed": null,
+ "fromNodeId": 3882835,
+ "toNodeId": 3882836,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.267,
+ "geometry": "AQIAAAACAAAAVWr2QCuwFUDiBnx+GBdKQAE1tWytrxVA7gVmhSIXSkA="
+ },
+ {
+ "id": 3686220,
+ "linkIdReversed": null,
+ "fromNodeId": 597012,
+ "toNodeId": 3882838,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 44.171,
+ "geometry": "AQIAAAACAAAA++jUlc+yFUAdzCbAsBZKQLwgIjXtshVA4rA08KMWSkA="
+ },
+ {
+ "id": 3686221,
+ "linkIdReversed": null,
+ "fromNodeId": 3882838,
+ "toNodeId": 3882839,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 44.171,
+ "geometry": "AQIAAAACAAAAvCAiNe2yFUDisDTwoxZKQPt5U5EKsxVAp5VCIJcWSkA="
+ },
+ {
+ "id": 3686222,
+ "linkIdReversed": null,
+ "fromNodeId": 3882839,
+ "toNodeId": 3882840,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 44.171,
+ "geometry": "AQIAAAADAAAA+3lTkQqzFUCnlUIglxZKQPuWOV0WsxVAryKjA5IWSkDpfHiWILMVQMuCiT+KFkpA"
+ },
+ {
+ "id": 3686223,
+ "linkIdReversed": null,
+ "fromNodeId": 3882840,
+ "toNodeId": 3882841,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 44.171,
+ "geometry": "AQIAAAADAAAA6Xx4liCzFUDLgok/ihZKQGxblNkgsxVAipP7HYoWSkALJZNTO7MVQMDrM2d9FkpA"
+ },
+ {
+ "id": 3686224,
+ "linkIdReversed": null,
+ "fromNodeId": 3882841,
+ "toNodeId": 3882842,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 44.171,
+ "geometry": "AQIAAAACAAAACyWTUzuzFUDA6zNnfRZKQLCryVNWsxVAtVTejnAWSkA="
+ },
+ {
+ "id": 3686225,
+ "linkIdReversed": null,
+ "fromNodeId": 3882842,
+ "toNodeId": 3882843,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 44.171,
+ "geometry": "AQIAAAACAAAAsKvJU1azFUC1VN6OcBZKQNJT5BBxsxVAqb2ItmMWSkA="
+ },
+ {
+ "id": 3686226,
+ "linkIdReversed": null,
+ "fromNodeId": 3882843,
+ "toNodeId": 599093,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 44.171,
+ "geometry": "AQIAAAACAAAA0lPkEHGzFUCpvYi2YxZKQPT7/s2LsxVAniYz3lYWSkA="
+ },
+ {
+ "id": 6369279,
+ "linkIdReversed": 6369288,
+ "fromNodeId": 5442740,
+ "toNodeId": 5442741,
+ "speedInKilometersPerHour": 45,
+ "reverseSpeedInKilometersPerHour": 45,
+ "distanceInMeters": 47.430,
+ "geometry": "AQIAAAACAAAAexNDcjKxFUBmu0IfLBdKQAiOy7ipsRVAVP8gkiEXSkA="
+ },
+ {
+ "id": 6369280,
+ "linkIdReversed": 6369287,
+ "fromNodeId": 5442741,
+ "toNodeId": 5442742,
+ "speedInKilometersPerHour": 45,
+ "reverseSpeedInKilometersPerHour": 45,
+ "distanceInMeters": 47.430,
+ "geometry": "AQIAAAACAAAACI7LuKmxFUBU/yCSIRdKQBnnb0IhshVAEr9iDRcXSkA="
+ },
+ {
+ "id": 6369281,
+ "linkIdReversed": 6369286,
+ "fromNodeId": 5442742,
+ "toNodeId": 5442743,
+ "speedInKilometersPerHour": 45,
+ "reverseSpeedInKilometersPerHour": 45,
+ "distanceInMeters": 47.430,
+ "geometry": "AQIAAAAEAAAAGedvQiGyFUASv2INFxdKQCTyXUpdshVAOGVuvhEXSkBANPPkmrIVQO1jBb8NF0pAlUc3wqKyFUBYGvhRDRdKQA=="
+ },
+ {
+ "id": 6369282,
+ "linkIdReversed": 6369285,
+ "fromNodeId": 5442743,
+ "toNodeId": 5442744,
+ "speedInKilometersPerHour": 45,
+ "reverseSpeedInKilometersPerHour": 45,
+ "distanceInMeters": 47.430,
+ "geometry": "AQIAAAAEAAAAlUc3wqKyFUBYGvhRDRdKQBe30QDeshVAlrTiGwoXSkAL68a7I7MVQMegE0IHF0pAwaikTkCzFUA+BcB4BhdKQA=="
+ },
+ {
+ "id": 6369283,
+ "linkIdReversed": 6369284,
+ "fromNodeId": 5442744,
+ "toNodeId": 1117050,
+ "speedInKilometersPerHour": 45,
+ "reverseSpeedInKilometersPerHour": 45,
+ "distanceInMeters": 47.430,
+ "geometry": "AQIAAAADAAAAwaikTkCzFUA+BcB4BhdKQFUyAFRxsxVA4DDRIAUXSkAyA5Xx77MVQPnAjv8CF0pA"
+ },
+ {
+ "id": 6405115,
+ "linkIdReversed": null,
+ "fromNodeId": 1121748,
+ "toNodeId": 5467882,
+ "speedInKilometersPerHour": 45,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 37.625,
+ "geometry": "AQIAAAADAAAAuTgqN1G7FUAydOygEhdKQPg1kgThuhVA4gZ8fhgXSkCunL0z2roVQNZYwtoYF0pA"
+ },
+ {
+ "id": 6405116,
+ "linkIdReversed": null,
+ "fromNodeId": 5467882,
+ "toNodeId": 5467883,
+ "speedInKilometersPerHour": 45,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 37.625,
+ "geometry": "AQIAAAADAAAArpy9M9q6FUDWWMLaGBdKQNycSgaAuhVAGmmpvB0XSkA900uMZboVQMyXF2AfF0pA"
+ },
+ {
+ "id": 6405117,
+ "linkIdReversed": null,
+ "fromNodeId": 5467883,
+ "toNodeId": 5467884,
+ "speedInKilometersPerHour": 45,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 37.625,
+ "geometry": "AQIAAAAEAAAAPdNLjGW6FUDMlxdgHxdKQKSpnsw/uhVAZmoSvCEXSkC7KeW1EroVQILn3sMlF0pAsJKP3QW6FUB1BduIJxdKQA=="
+ },
+ {
+ "id": 6405118,
+ "linkIdReversed": null,
+ "fromNodeId": 5467884,
+ "toNodeId": 1121749,
+ "speedInKilometersPerHour": 45,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 37.625,
+ "geometry": "AQIAAAAEAAAAsJKP3QW6FUB1BduIJxdKQGuZDMfzuRVAf0sA/ikXSkCkwW1t4bkVQNf6IqEtF0pAn+dPG9W5FUCl2qfjMRdKQA=="
+ },
+ {
+ "id": 6405120,
+ "linkIdReversed": null,
+ "fromNodeId": 5467885,
+ "toNodeId": 1121748,
+ "speedInKilometersPerHour": 45,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.431,
+ "geometry": "AQIAAAACAAAAlkOLbOe7FUDdYKjDChdKQLk4KjdRuxVAMnTsoBIXSkA="
+ },
+ {
+ "id": 6405165,
+ "linkIdReversed": 6405170,
+ "fromNodeId": 1117049,
+ "toNodeId": 5467903,
+ "speedInKilometersPerHour": 30,
+ "reverseSpeedInKilometersPerHour": 30,
+ "distanceInMeters": 34.732,
+ "geometry": "AQIAAAACAAAAfh6jPPOyFUBLW1zjMxdKQHHjFvNzsxVALqpFRDEXSkA="
+ },
+ {
+ "id": 6405166,
+ "linkIdReversed": 6405169,
+ "fromNodeId": 5467903,
+ "toNodeId": 5467904,
+ "speedInKilometersPerHour": 30,
+ "reverseSpeedInKilometersPerHour": 30,
+ "distanceInMeters": 34.732,
+ "geometry": "AQIAAAACAAAAceMW83OzFUAuqkVEMRdKQOLJbmb0sxVAQX3LnC4XSkA="
+ },
+ {
+ "id": 6405167,
+ "linkIdReversed": 6405168,
+ "fromNodeId": 5467904,
+ "toNodeId": 1121765,
+ "speedInKilometersPerHour": 30,
+ "reverseSpeedInKilometersPerHour": 30,
+ "distanceInMeters": 34.732,
+ "geometry": "AQIAAAACAAAA4sluZvSzFUBBfcucLhdKQNaO4hx1tBVAJcy0/SsXSkA="
+ },
+ {
+ "id": 6405178,
+ "linkIdReversed": 6405177,
+ "fromNodeId": 1121765,
+ "toNodeId": 5467911,
+ "speedInKilometersPerHour": 30,
+ "reverseSpeedInKilometersPerHour": 30,
+ "distanceInMeters": 35.069,
+ "geometry": "AQIAAAACAAAA1o7iHHW0FUAlzLT9KxdKQF5pGan3tBVASgosgCkXSkA="
+ },
+ {
+ "id": 6405179,
+ "linkIdReversed": 6405176,
+ "fromNodeId": 5467911,
+ "toNodeId": 5467912,
+ "speedInKilometersPerHour": 30,
+ "reverseSpeedInKilometersPerHour": 30,
+ "distanceInMeters": 35.069,
+ "geometry": "AQIAAAACAAAAXmkZqfe0FUBKCiyAKRdKQGJlNPJ5tRVAb0ijAicXSkA="
+ },
+ {
+ "id": 6405180,
+ "linkIdReversed": 6405175,
+ "fromNodeId": 5467912,
+ "toNodeId": 1121766,
+ "speedInKilometersPerHour": 30,
+ "reverseSpeedInKilometersPerHour": 30,
+ "distanceInMeters": 35.069,
+ "geometry": "AQIAAAADAAAAYmU08nm1FUBvSKMCJxdKQKAVGLK6tRVAgufewyUXSkDkgjP4+7UVQFOXjGMkF0pA"
+ },
+ {
+ "id": 6405182,
+ "linkIdReversed": 6405181,
+ "fromNodeId": 1121765,
+ "toNodeId": 1121767,
+ "speedInKilometersPerHour": 45,
+ "reverseSpeedInKilometersPerHour": 45,
+ "distanceInMeters": 24.561,
+ "geometry": "AQIAAAACAAAA1o7iHHW0FUAlzLT9KxdKQNALdy6MtBVAUUzeADMXSkA="
+ },
+ {
+ "id": 6405186,
+ "linkIdReversed": 6405185,
+ "fromNodeId": 1117050,
+ "toNodeId": 5467915,
+ "speedInKilometersPerHour": 45,
+ "reverseSpeedInKilometersPerHour": 45,
+ "distanceInMeters": 47.824,
+ "geometry": "AQIAAAACAAAAMgOV8e+zFUD5wI7/AhdKQJLn+j4ctBVAXW+bqRAXSkA="
+ },
+ {
+ "id": 6405187,
+ "linkIdReversed": 6405184,
+ "fromNodeId": 5467915,
+ "toNodeId": 5467916,
+ "speedInKilometersPerHour": 45,
+ "reverseSpeedInKilometersPerHour": 45,
+ "distanceInMeters": 47.824,
+ "geometry": "AQIAAAACAAAAkuf6Phy0FUBdb5upEBdKQHaqfM9ItBVAwR2oUx4XSkA="
+ },
+ {
+ "id": 6405188,
+ "linkIdReversed": 6405183,
+ "fromNodeId": 5467916,
+ "toNodeId": 1121765,
+ "speedInKilometersPerHour": 45,
+ "reverseSpeedInKilometersPerHour": 45,
+ "distanceInMeters": 47.824,
+ "geometry": "AQIAAAACAAAAdqp8z0i0FUDBHahTHhdKQNaO4hx1tBVAJcy0/SsXSkA="
+ },
+ {
+ "id": 6405218,
+ "linkIdReversed": 6405233,
+ "fromNodeId": 1117050,
+ "toNodeId": 5467931,
+ "speedInKilometersPerHour": 30,
+ "reverseSpeedInKilometersPerHour": 30,
+ "distanceInMeters": 47.281,
+ "geometry": "AQIAAAACAAAAMgOV8e+zFUD5wI7/AhdKQF6ezhWltBVARl7WxAIXSkA="
+ },
+ {
+ "id": 6405219,
+ "linkIdReversed": 6405232,
+ "fromNodeId": 5467931,
+ "toNodeId": 5467932,
+ "speedInKilometersPerHour": 30,
+ "reverseSpeedInKilometersPerHour": 30,
+ "distanceInMeters": 47.281,
+ "geometry": "AQIAAAADAAAAXp7OFaW0FUBGXtbEAhdKQCV2bW+3tBVAduJyvAIXSkAIW+z2WbUVQC4CY30DF0pA"
+ },
+ {
+ "id": 6405220,
+ "linkIdReversed": 6405231,
+ "fromNodeId": 5467932,
+ "toNodeId": 5467933,
+ "speedInKilometersPerHour": 30,
+ "reverseSpeedInKilometersPerHour": 30,
+ "distanceInMeters": 47.281,
+ "geometry": "AQIAAAACAAAACFvs9lm1FUAuAmN9AxdKQLEXCtgOthVAV5V9VwQXSkA="
+ },
+ {
+ "id": 6405221,
+ "linkIdReversed": 6405230,
+ "fromNodeId": 5467933,
+ "toNodeId": 5467934,
+ "speedInKilometersPerHour": 30,
+ "reverseSpeedInKilometersPerHour": 30,
+ "distanceInMeters": 47.281,
+ "geometry": "AQIAAAACAAAAsRcK2A62FUBXlX1XBBdKQFrUJ7nDthVAgCiYMQUXSkA="
+ },
+ {
+ "id": 6405222,
+ "linkIdReversed": 6405229,
+ "fromNodeId": 5467934,
+ "toNodeId": 5467935,
+ "speedInKilometersPerHour": 30,
+ "reverseSpeedInKilometersPerHour": 30,
+ "distanceInMeters": 47.281,
+ "geometry": "AQIAAAACAAAAWtQnucO2FUCAKJgxBRdKQASRRZp4txVAqruyCwYXSkA="
+ },
+ {
+ "id": 6405223,
+ "linkIdReversed": 6405228,
+ "fromNodeId": 5467935,
+ "toNodeId": 5467936,
+ "speedInKilometersPerHour": 30,
+ "reverseSpeedInKilometersPerHour": 30,
+ "distanceInMeters": 47.281,
+ "geometry": "AQIAAAACAAAABJFFmni3FUCqu7ILBhdKQK1NY3stuBVAAtNp3QYXSkA="
+ },
+ {
+ "id": 6405224,
+ "linkIdReversed": 6405227,
+ "fromNodeId": 5467936,
+ "toNodeId": 5467937,
+ "speedInKilometersPerHour": 30,
+ "reverseSpeedInKilometersPerHour": 30,
+ "distanceInMeters": 47.281,
+ "geometry": "AQIAAAADAAAArU1jey24FUAC02ndBhdKQLgGtkqwuBVAeQPMfAcXSkCmQ6fn3bgVQFu21hcJF0pA"
+ },
+ {
+ "id": 6405225,
+ "linkIdReversed": 6405226,
+ "fromNodeId": 5467937,
+ "toNodeId": 1121779,
+ "speedInKilometersPerHour": 30,
+ "reverseSpeedInKilometersPerHour": 30,
+ "distanceInMeters": 47.281,
+ "geometry": "AQIAAAAGAAAApkOn5924FUBbttYXCRdKQKwA323euBVAKzI6IAkXSkA01v7O9rgVQPNUh9wMF0pA39+gvfq4FUAWw9UBEBdKQFGHFW75uBVAu0OKARIXSkD7c9GQ8bgVQDyGx34WF0pA"
+ },
+ {
+ "id": 6405235,
+ "linkIdReversed": 6405234,
+ "fromNodeId": 1121780,
+ "toNodeId": 1121779,
+ "speedInKilometersPerHour": 30,
+ "reverseSpeedInKilometersPerHour": 30,
+ "distanceInMeters": 47.993,
+ "geometry": "AQIAAAACAAAAdCUC1T+4FUCTNeohGhdKQPtz0ZDxuBVAPIbHfhYXSkA="
+ },
+ {
+ "id": 6405237,
+ "linkIdReversed": null,
+ "fromNodeId": 5467945,
+ "toNodeId": 5467946,
+ "speedInKilometersPerHour": 24,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.913,
+ "geometry": "AQIAAAADAAAA3sfRHFm5FUCetdsuNBdKQErP9BJjuRVAMXpuoSsXSkD12JYBZ7kVQHU5JSAmF0pA"
+ },
+ {
+ "id": 6405238,
+ "linkIdReversed": null,
+ "fromNodeId": 5467946,
+ "toNodeId": 5467947,
+ "speedInKilometersPerHour": 24,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.913,
+ "geometry": "AQIAAAAEAAAA9diWAWe5FUB1OSUgJhdKQJolAWpquRVAswdagSEXSkAdIQN5drkVQBdIUPwYF0pAoP8evHa5FUBNvW4RGBdKQA=="
+ },
+ {
+ "id": 6405239,
+ "linkIdReversed": null,
+ "fromNodeId": 5467947,
+ "toNodeId": 1121779,
+ "speedInKilometersPerHour": 24,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.913,
+ "geometry": "AQIAAAADAAAAoP8evHa5FUBNvW4RGBdKQLE2xk54uRVAlgUTfxQXSkD7c9GQ8bgVQDyGx34WF0pA"
+ },
+ {
+ "id": 6405244,
+ "linkIdReversed": 6405243,
+ "fromNodeId": 1121766,
+ "toNodeId": 5467951,
+ "speedInKilometersPerHour": 30,
+ "reverseSpeedInKilometersPerHour": 30,
+ "distanceInMeters": 38.815,
+ "geometry": "AQIAAAACAAAA5IIz+Pu1FUBTl4xjJBdKQIgrZ++MthVA19081SEXSkA="
+ },
+ {
+ "id": 6405245,
+ "linkIdReversed": 6405242,
+ "fromNodeId": 5467951,
+ "toNodeId": 5467952,
+ "speedInKilometersPerHour": 30,
+ "reverseSpeedInKilometersPerHour": 30,
+ "distanceInMeters": 38.815,
+ "geometry": "AQIAAAACAAAAiCtn74y2FUDX3TzVIRdKQCzUmuYdtxVAWyTtRh8XSkA="
+ },
+ {
+ "id": 6405246,
+ "linkIdReversed": 6405241,
+ "fromNodeId": 5467952,
+ "toNodeId": 5467953,
+ "speedInKilometersPerHour": 30,
+ "reverseSpeedInKilometersPerHour": 30,
+ "distanceInMeters": 38.815,
+ "geometry": "AQIAAAACAAAALNSa5h23FUBbJO1GHxdKQNB8zt2utxVAD+85sBwXSkA="
+ },
+ {
+ "id": 6405247,
+ "linkIdReversed": 6405240,
+ "fromNodeId": 5467953,
+ "toNodeId": 1121780,
+ "speedInKilometersPerHour": 30,
+ "reverseSpeedInKilometersPerHour": 30,
+ "distanceInMeters": 38.815,
+ "geometry": "AQIAAAACAAAA0HzO3a63FUAP7zmwHBdKQHQlAtU/uBVAkzXqIRoXSkA="
+ },
+ {
+ "id": 6405249,
+ "linkIdReversed": 6405252,
+ "fromNodeId": 5467954,
+ "toNodeId": 5467955,
+ "speedInKilometersPerHour": 30,
+ "reverseSpeedInKilometersPerHour": 30,
+ "distanceInMeters": 44.599,
+ "geometry": "AQIAAAACAAAANszQeCK4FUDfpGlQNBdKQNV46SYxuBVAUS/4NCcXSkA="
+ },
+ {
+ "id": 6405250,
+ "linkIdReversed": 6405251,
+ "fromNodeId": 5467955,
+ "toNodeId": 1121780,
+ "speedInKilometersPerHour": 30,
+ "reverseSpeedInKilometersPerHour": 30,
+ "distanceInMeters": 44.599,
+ "geometry": "AQIAAAACAAAA1XjpJjG4FUBRL/g0JxdKQHQlAtU/uBVAkzXqIRoXSkA="
+ },
+ {
+ "id": 6405257,
+ "linkIdReversed": 6405256,
+ "fromNodeId": 1121766,
+ "toNodeId": 5467960,
+ "speedInKilometersPerHour": 30,
+ "reverseSpeedInKilometersPerHour": 30,
+ "distanceInMeters": 35.349,
+ "geometry": "AQIAAAACAAAA5IIz+Pu1FUBTl4xjJBdKQDnQQ20bthVA0Amhgy4XSkA="
+ },
+ {
+ "id": 6409986,
+ "linkIdReversed": null,
+ "fromNodeId": 5470745,
+ "toNodeId": 5470746,
+ "speedInKilometersPerHour": 65,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.408,
+ "geometry": "AQIAAAADAAAAJLTlXIq7FUDXvRWJCRZKQA+BI4EGuxVAXFX2XREWSkAD6s2o+boVQAMK9fQRFkpA"
+ },
+ {
+ "id": 6409987,
+ "linkIdReversed": null,
+ "fromNodeId": 5470746,
+ "toNodeId": 5470747,
+ "speedInKilometersPerHour": 65,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.408,
+ "geometry": "AQIAAAADAAAAA+rNqPm6FUADCvX0ERZKQF/v/nivuhVA6UXtfhUWSkDAlIEDWroVQGq8dJMYFkpA"
+ },
+ {
+ "id": 6409988,
+ "linkIdReversed": null,
+ "fromNodeId": 5470747,
+ "toNodeId": 5470748,
+ "speedInKilometersPerHour": 65,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.408,
+ "geometry": "AQIAAAAEAAAAwJSBA1q6FUBqvHSTGBZKQLq6Y7FNuhVA/wWCABkWSkDSjEXT2bkVQNrHCn4bFkpAUDqRYKq5FUAPCd/7GxZKQA=="
+ },
+ {
+ "id": 6409989,
+ "linkIdReversed": null,
+ "fromNodeId": 5470748,
+ "toNodeId": 5470749,
+ "speedInKilometersPerHour": 65,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.408,
+ "geometry": "AQIAAAADAAAAUDqRYKq5FUAPCd/7GxZKQKtcqPxruRVAV7WkoxwWSkCmfXN/9bgVQBXGFoIcFkpA"
+ },
+ {
+ "id": 6409990,
+ "linkIdReversed": null,
+ "fromNodeId": 5470749,
+ "toNodeId": 5470750,
+ "speedInKilometersPerHour": 65,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.408,
+ "geometry": "AQIAAAAEAAAApn1zf/W4FUAVxhaCHBZKQNRIS+XtuBVAFcYWghwWSkBMi/okd7gVQGOXqN4aFkpAJezbSUS4FUDVPh2PGRZKQA=="
+ },
+ {
+ "id": 6409991,
+ "linkIdReversed": null,
+ "fromNodeId": 5470750,
+ "toNodeId": 5470751,
+ "speedInKilometersPerHour": 65,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.408,
+ "geometry": "AQIAAAAEAAAAJezbSUS4FUDVPh2PGRZKQDbptkQuuBVA/wWCABkWSkCzXDY657cVQCRE+YIWFkpAX7hzYaS3FUB/944aExZKQA=="
+ },
+ {
+ "id": 6409992,
+ "linkIdReversed": null,
+ "fromNodeId": 5470751,
+ "toNodeId": 5470752,
+ "speedInKilometersPerHour": 65,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.408,
+ "geometry": "AQIAAAAFAAAAX7hzYaS3FUB/944aExZKQCv2l92TtxVAVmR0QBIWSkB2G9R+a7cVQDmzXaEPFkpAjX40nDK3FUChFK3cCxZKQHwNwXEZtxVAfnIUIAoWSkA="
+ },
+ {
+ "id": 6410877,
+ "linkIdReversed": null,
+ "fromNodeId": 1122767,
+ "toNodeId": 5471354,
+ "speedInKilometersPerHour": 45,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.431,
+ "geometry": "AQIAAAACAAAAraHUXkS7FUDCNAwfERdKQIqsNZTauxVAbCHIQQkXSkA="
+ },
+ {
+ "id": 6410880,
+ "linkIdReversed": null,
+ "fromNodeId": 5471355,
+ "toNodeId": 5471356,
+ "speedInKilometersPerHour": 45,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 45.451,
+ "geometry": "AQIAAAAEAAAAJ2a9GMq5FUCE1O3sKxdKQLb4FADjuRVA2spL/icXSkBEqFKzB7oVQI7J4v4jF0pA1xTI7Cy6FUBOQukLIRdKQA=="
+ },
+ {
+ "id": 6410881,
+ "linkIdReversed": null,
+ "fromNodeId": 5471356,
+ "toNodeId": 5471357,
+ "speedInKilometersPerHour": 45,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 45.451,
+ "geometry": "AQIAAAAEAAAA1xTI7Cy6FUBOQukLIRdKQP95GjBIuhVAl1ZD4h4XSkBlcmpnmLoVQIeHMH4aF0pAqYjTSba6FUDWWMLaGBdKQA=="
+ },
+ {
+ "id": 6410882,
+ "linkIdReversed": null,
+ "fromNodeId": 5471357,
+ "toNodeId": 1122767,
+ "speedInKilometersPerHour": 45,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 45.451,
+ "geometry": "AQIAAAACAAAAqYjTSba6FUDWWMLaGBdKQK2h1F5EuxVAwjQMHxEXSkA="
+ },
+ {
+ "id": 7223061,
+ "linkIdReversed": null,
+ "fromNodeId": 5985262,
+ "toNodeId": 5985263,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 38.697,
+ "geometry": "AQIAAAACAAAA3zMSoRG8FUAgJuFCHhdKQHke3J21uxVA7xzKUBUXSkA="
+ },
+ {
+ "id": 7223062,
+ "linkIdReversed": null,
+ "fromNodeId": 5985263,
+ "toNodeId": 596832,
+ "speedInKilometersPerHour": 80,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 38.697,
+ "geometry": "AQIAAAACAAAAeR7cnbW7FUDvHMpQFRdKQBQJpppZuxVAvhOzXgwXSkA="
+ },
+ {
+ "id": 7223065,
+ "linkIdReversed": null,
+ "fromNodeId": 5985265,
+ "toNodeId": 5985266,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.631,
+ "geometry": "AQIAAAADAAAANQ2K5gG8FUAj9gmgGBdKQEazsn3IuxVAelT83xEXSkBj8DDtm7sVQDVEFf4MF0pA"
+ },
+ {
+ "id": 7223066,
+ "linkIdReversed": null,
+ "fromNodeId": 5985266,
+ "toNodeId": 5985267,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.631,
+ "geometry": "AQIAAAACAAAAY/Aw7Zu7FUA1RBX+DBdKQG9lic4yuxVAWf0RhgEXSkA="
+ },
+ {
+ "id": 7223067,
+ "linkIdReversed": null,
+ "fromNodeId": 5985267,
+ "toNodeId": 5985268,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.631,
+ "geometry": "AQIAAAACAAAAb2WJzjK7FUBZ/RGGARdKQHva4a/JuhVAfLYODvYWSkA="
+ },
+ {
+ "id": 7223068,
+ "linkIdReversed": null,
+ "fromNodeId": 5985268,
+ "toNodeId": 5985269,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.631,
+ "geometry": "AQIAAAACAAAAe9rhr8m6FUB8tg4O9hZKQIdPOpFguhVAoG8LluoWSkA="
+ },
+ {
+ "id": 7223069,
+ "linkIdReversed": null,
+ "fromNodeId": 5985269,
+ "toNodeId": 5985270,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.631,
+ "geometry": "AQIAAAADAAAAh086kWC6FUCgbwuW6hZKQD4IAfkSuhVApKfIIeIWSkAWo66197kVQMMoCB7fFkpA"
+ },
+ {
+ "id": 7223070,
+ "linkIdReversed": null,
+ "fromNodeId": 5985270,
+ "toNodeId": 5985271,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.631,
+ "geometry": "AQIAAAACAAAAFqOutfe5FUDDKAge3xZKQCjVPh2PuRVAF2ahndMWSkA="
+ },
+ {
+ "id": 7223071,
+ "linkIdReversed": null,
+ "fromNodeId": 5985271,
+ "toNodeId": 5985272,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.631,
+ "geometry": "AQIAAAACAAAAKNU+HY+5FUAXZqGd0xZKQL3l6scmuRVAaqM6HcgWSkA="
+ },
+ {
+ "id": 7223072,
+ "linkIdReversed": null,
+ "fromNodeId": 5985272,
+ "toNodeId": 5985273,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.631,
+ "geometry": "AQIAAAACAAAAveXqxya5FUBqozodyBZKQM4Xey++uBVAveDTnLwWSkA="
+ },
+ {
+ "id": 7223073,
+ "linkIdReversed": null,
+ "fromNodeId": 5985273,
+ "toNodeId": 597029,
+ "speedInKilometersPerHour": 95,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.631,
+ "geometry": "AQIAAAACAAAAzhd7L764FUC94NOcvBZKQGMoJ9pVuBVAER5tHLEWSkA="
+ },
+ {
+ "id": 7930097,
+ "linkIdReversed": null,
+ "fromNodeId": 6349336,
+ "toNodeId": 6349337,
+ "speedInKilometersPerHour": 65,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.846,
+ "geometry": "AQIAAAAEAAAASL99HTi3FUBb0HtjCBZKQHyBWaFItxVAB0KygAkWSkDyzTY3prcVQIGTbeAOFkpAD9b/Ocy3FUB1sWmlEBZKQA=="
+ },
+ {
+ "id": 7930098,
+ "linkIdReversed": null,
+ "fromNodeId": 6349337,
+ "toNodeId": 6349338,
+ "speedInKilometersPerHour": 65,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.846,
+ "geometry": "AQIAAAAEAAAAD9b/Ocy3FUB1sWmlEBZKQDZ1HhX/txVADoRkARMWSkBjKCfaVbgVQGwkCcIVFkpAHqM883K4FUAS2QdZFhZKQA=="
+ },
+ {
+ "id": 7930099,
+ "linkIdReversed": null,
+ "fromNodeId": 6349338,
+ "toNodeId": 6349339,
+ "speedInKilometersPerHour": 65,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.846,
+ "geometry": "AQIAAAAEAAAAHqM883K4FUAS2QdZFhZKQFG8ytqmuBVATdcTXRcWSkDOxd/2BLkVQDs42JsYFkpAwqIiTie5FUCsqwK1GBZKQA=="
+ },
+ {
+ "id": 7930100,
+ "linkIdReversed": null,
+ "fromNodeId": 6349339,
+ "toNodeId": 6349340,
+ "speedInKilometersPerHour": 65,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.846,
+ "geometry": "AQIAAAAEAAAAwqIiTie5FUCsqwK1GBZKQABTBg5ouRVAvhb03hgWSkCOk8K8x7kVQAb3Ax4YFkpA+rfLft25FUBBKVq5FxZKQA=="
+ },
+ {
+ "id": 7930101,
+ "linkIdReversed": null,
+ "fromNodeId": 6349340,
+ "toNodeId": 6349341,
+ "speedInKilometersPerHour": 65,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.846,
+ "geometry": "AQIAAAADAAAA+rfLft25FUBBKVq5FxZKQEn2CDVDuhVArROX4xUWSkBUHt0Ii7oVQKPNcW4TFkpA"
+ },
+ {
+ "id": 7930102,
+ "linkIdReversed": null,
+ "fromNodeId": 6349341,
+ "toNodeId": 6349342,
+ "speedInKilometersPerHour": 65,
+ "reverseSpeedInKilometersPerHour": 0,
+ "distanceInMeters": 47.846,
+ "geometry": "AQIAAAAEAAAAVB7dCIu6FUCjzXFuExZKQBsTYi6puhVAl1MCYhIWSkB7a2CrBLsVQEaVYdwNFkpA2zLgLCW7FUChFK3cCxZKQA=="
+ }
+]
diff --git a/map-matcher-library/src/test/resources/test-data/network.geojson b/map-matcher-library/src/test/resources/test-data/network.geojson
index 8b7a15fc..df29f3c3 100644
--- a/map-matcher-library/src/test/resources/test-data/network.geojson
+++ b/map-matcher-library/src/test/resources/test-data/network.geojson
@@ -1 +1,14399 @@
-{"type":"FeatureCollection","features":[{"type":"Feature","id":3666256,"geometry":{"type":"LineString","coordinates":[[5.433595,52.173101],[5.433133,52.173317]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":39.714,"toNodeId":596870,"speedInKilometersPerHour":100.0,"fromNodeId":3873704}},{"type":"Feature","id":3666944,"geometry":{"type":"LineString","coordinates":[[5.42866,52.176369],[5.428427,52.17617]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":27.238,"toNodeId":597005,"speedInKilometersPerHour":100.0,"fromNodeId":3874089}},{"type":"Feature","id":3666076,"geometry":{"type":"LineString","coordinates":[[5.431601,52.178947],[5.43111,52.178622]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.372,"toNodeId":3873575,"speedInKilometersPerHour":100.0,"fromNodeId":596829}},{"type":"Feature","id":3666077,"geometry":{"type":"LineString","coordinates":[[5.43111,52.178622],[5.431077,52.1786],[5.430663,52.178413],[5.430526,52.178363]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.372,"toNodeId":3873576,"speedInKilometersPerHour":100.0,"fromNodeId":3873575}},{"type":"Feature","id":3666078,"geometry":{"type":"LineString","coordinates":[[5.430526,52.178363],[5.430206,52.178246],[5.429884,52.178165],[5.429882,52.178165]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.372,"toNodeId":3873577,"speedInKilometersPerHour":100.0,"fromNodeId":3873576}},{"type":"Feature","id":3666082,"geometry":{"type":"LineString","coordinates":[[5.427747,52.17797],[5.427079,52.177963],[5.427025,52.177964]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.372,"toNodeId":3873581,"speedInKilometersPerHour":100.0,"fromNodeId":3873580}},{"type":"Feature","id":3666079,"geometry":{"type":"LineString","coordinates":[[5.429882,52.178165],[5.429507,52.178104],[5.42918,52.178064]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.372,"toNodeId":3873578,"speedInKilometersPerHour":100.0,"fromNodeId":3873577}},{"type":"Feature","id":3666080,"geometry":{"type":"LineString","coordinates":[[5.42918,52.178064],[5.429103,52.178055],[5.428641,52.178005],[5.428467,52.177998]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.372,"toNodeId":3873579,"speedInKilometersPerHour":100.0,"fromNodeId":3873578}},{"type":"Feature","id":3666081,"geometry":{"type":"LineString","coordinates":[[5.428467,52.177998],[5.427836,52.177971],[5.427747,52.17797]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.372,"toNodeId":3873580,"speedInKilometersPerHour":100.0,"fromNodeId":3873579}},{"type":"Feature","id":3666083,"geometry":{"type":"LineString","coordinates":[[5.427025,52.177964],[5.426695,52.177971],[5.426323,52.178013],[5.42631,52.178015]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.372,"toNodeId":3873582,"speedInKilometersPerHour":100.0,"fromNodeId":3873581}},{"type":"Feature","id":3666084,"geometry":{"type":"LineString","coordinates":[[5.42631,52.178015],[5.42593,52.178082],[5.425628,52.178159]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.372,"toNodeId":3873583,"speedInKilometersPerHour":100.0,"fromNodeId":3873582}},{"type":"Feature","id":3666088,"geometry":{"type":"LineString","coordinates":[[5.431217,52.178606],[5.430834,52.178264]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.171,"toNodeId":3873586,"speedInKilometersPerHour":100.0,"fromNodeId":3873585}},{"type":"Feature","id":3666089,"geometry":{"type":"LineString","coordinates":[[5.430834,52.178264],[5.43045,52.177923]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.171,"toNodeId":3873587,"speedInKilometersPerHour":100.0,"fromNodeId":3873586}},{"type":"Feature","id":3666085,"geometry":{"type":"LineString","coordinates":[[5.425628,52.178159],[5.425557,52.178177],[5.425227,52.178303],[5.425037,52.178409]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.372,"toNodeId":3873584,"speedInKilometersPerHour":100.0,"fromNodeId":3873583}},{"type":"Feature","id":3666091,"geometry":{"type":"LineString","coordinates":[[5.430067,52.177581],[5.429754,52.177303],[5.429681,52.177241]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.171,"toNodeId":3873589,"speedInKilometersPerHour":100.0,"fromNodeId":3873588}},{"type":"Feature","id":3666092,"geometry":{"type":"LineString","coordinates":[[5.429681,52.177241],[5.429287,52.176904]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.171,"toNodeId":3873590,"speedInKilometersPerHour":100.0,"fromNodeId":3873589}},{"type":"Feature","id":3666086,"geometry":{"type":"LineString","coordinates":[[5.425037,52.178409],[5.424503,52.178707]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.372,"toNodeId":596830,"speedInKilometersPerHour":100.0,"fromNodeId":3873584}},{"type":"Feature","id":3666087,"geometry":{"type":"LineString","coordinates":[[5.431601,52.178947],[5.431217,52.178606]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.171,"toNodeId":3873585,"speedInKilometersPerHour":100.0,"fromNodeId":596829}},{"type":"Feature","id":3666095,"geometry":{"type":"LineString","coordinates":[[5.432619,52.179786],[5.43228,52.179506]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":38.814,"toNodeId":3873592,"speedInKilometersPerHour":100.0,"fromNodeId":3873591}},{"type":"Feature","id":3666096,"geometry":{"type":"LineString","coordinates":[[5.43228,52.179506],[5.43194,52.179227]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":38.814,"toNodeId":3873593,"speedInKilometersPerHour":100.0,"fromNodeId":3873592}},{"type":"Feature","id":3666090,"geometry":{"type":"LineString","coordinates":[[5.43045,52.177923],[5.430067,52.177581]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.171,"toNodeId":3873588,"speedInKilometersPerHour":100.0,"fromNodeId":3873587}},{"type":"Feature","id":3666093,"geometry":{"type":"LineString","coordinates":[[5.429287,52.176904],[5.428893,52.176567]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.171,"toNodeId":596831,"speedInKilometersPerHour":100.0,"fromNodeId":3873590}},{"type":"Feature","id":3666094,"geometry":{"type":"LineString","coordinates":[[5.432959,52.180065],[5.432619,52.179786]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":38.814,"toNodeId":3873591,"speedInKilometersPerHour":100.0,"fromNodeId":596832}},{"type":"Feature","id":3666100,"geometry":{"type":"LineString","coordinates":[[5.426578,52.177202],[5.426155,52.177499]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":43.905,"toNodeId":3873596,"speedInKilometersPerHour":100.0,"fromNodeId":3873595}},{"type":"Feature","id":3666097,"geometry":{"type":"LineString","coordinates":[[5.43194,52.179227],[5.431601,52.178947]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":38.814,"toNodeId":596829,"speedInKilometersPerHour":100.0,"fromNodeId":3873593}},{"type":"Feature","id":3666098,"geometry":{"type":"LineString","coordinates":[[5.427439,52.176617],[5.427006,52.176908]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":43.905,"toNodeId":3873594,"speedInKilometersPerHour":100.0,"fromNodeId":596833}},{"type":"Feature","id":3666103,"geometry":{"type":"LineString","coordinates":[[5.42532,52.178098],[5.424912,52.178403]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":43.905,"toNodeId":3873599,"speedInKilometersPerHour":100.0,"fromNodeId":3873598}},{"type":"Feature","id":3666104,"geometry":{"type":"LineString","coordinates":[[5.424912,52.178403],[5.424503,52.178707]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":43.905,"toNodeId":596830,"speedInKilometersPerHour":100.0,"fromNodeId":3873599}},{"type":"Feature","id":3666099,"geometry":{"type":"LineString","coordinates":[[5.427006,52.176908],[5.426791,52.177052],[5.426578,52.177202]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":43.905,"toNodeId":3873595,"speedInKilometersPerHour":100.0,"fromNodeId":3873594}},{"type":"Feature","id":3666101,"geometry":{"type":"LineString","coordinates":[[5.426155,52.177499],[5.425733,52.177796]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":43.905,"toNodeId":3873597,"speedInKilometersPerHour":100.0,"fromNodeId":3873596}},{"type":"Feature","id":3666107,"geometry":{"type":"LineString","coordinates":[[5.4237,52.179271],[5.423427,52.179462],[5.423301,52.179555]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":41.702,"toNodeId":3873602,"speedInKilometersPerHour":100.0,"fromNodeId":3873601}},{"type":"Feature","id":3666102,"geometry":{"type":"LineString","coordinates":[[5.425733,52.177796],[5.425619,52.177876],[5.42532,52.178098]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":43.905,"toNodeId":3873598,"speedInKilometersPerHour":100.0,"fromNodeId":3873597}},{"type":"Feature","id":3666105,"geometry":{"type":"LineString","coordinates":[[5.424503,52.178707],[5.424101,52.178989]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":41.702,"toNodeId":3873600,"speedInKilometersPerHour":100.0,"fromNodeId":596830}},{"type":"Feature","id":3666106,"geometry":{"type":"LineString","coordinates":[[5.424101,52.178989],[5.4237,52.179271]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":41.702,"toNodeId":3873601,"speedInKilometersPerHour":100.0,"fromNodeId":3873600}},{"type":"Feature","id":3666111,"geometry":{"type":"LineString","coordinates":[[5.427038,52.174931],[5.426641,52.174561]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.328,"toNodeId":3873605,"speedInKilometersPerHour":100.0,"fromNodeId":3873604}},{"type":"Feature","id":3666108,"geometry":{"type":"LineString","coordinates":[[5.423301,52.179555],[5.422911,52.179842]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":41.702,"toNodeId":3873603,"speedInKilometersPerHour":100.0,"fromNodeId":3873602}},{"type":"Feature","id":3666109,"geometry":{"type":"LineString","coordinates":[[5.422911,52.179842],[5.42252,52.18013]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":41.702,"toNodeId":596834,"speedInKilometersPerHour":100.0,"fromNodeId":3873603}},{"type":"Feature","id":3666114,"geometry":{"type":"LineString","coordinates":[[5.42591,52.173797],[5.425682,52.173553],[5.425613,52.173397]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.328,"toNodeId":596836,"speedInKilometersPerHour":100.0,"fromNodeId":3873607}},{"type":"Feature","id":3666110,"geometry":{"type":"LineString","coordinates":[[5.427436,52.175301],[5.427038,52.174931]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.328,"toNodeId":3873604,"speedInKilometersPerHour":100.0,"fromNodeId":596835}},{"type":"Feature","id":3666112,"geometry":{"type":"LineString","coordinates":[[5.426641,52.174561],[5.426505,52.174435],[5.426269,52.174182]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.328,"toNodeId":3873606,"speedInKilometersPerHour":100.0,"fromNodeId":3873605}},{"type":"Feature","id":3666117,"geometry":{"type":"LineString","coordinates":[[5.426173,52.175001],[5.425914,52.17506],[5.425746,52.17514],[5.425612,52.175228],[5.425594,52.175247]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.247,"toNodeId":3873610,"speedInKilometersPerHour":100.0,"fromNodeId":3873609}},{"type":"Feature","id":3666118,"geometry":{"type":"LineString","coordinates":[[5.425594,52.175247],[5.425488,52.175358],[5.425406,52.175503],[5.425382,52.175662]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.247,"toNodeId":3873611,"speedInKilometersPerHour":100.0,"fromNodeId":3873610}},{"type":"Feature","id":3666119,"geometry":{"type":"LineString","coordinates":[[5.425382,52.175662],[5.425381,52.175671],[5.425436,52.175835],[5.425518,52.175953],[5.425622,52.176044],[5.425653,52.176063]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.247,"toNodeId":3873612,"speedInKilometersPerHour":100.0,"fromNodeId":3873611}},{"type":"Feature","id":3666120,"geometry":{"type":"LineString","coordinates":[[5.425653,52.176063],[5.425793,52.176147],[5.426001,52.176224],[5.426264,52.17627],[5.426272,52.176271]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.247,"toNodeId":3873613,"speedInKilometersPerHour":100.0,"fromNodeId":3873612}},{"type":"Feature","id":3666121,"geometry":{"type":"LineString","coordinates":[[5.426272,52.176271],[5.426511,52.176289],[5.426772,52.176262],[5.426965,52.176204]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.247,"toNodeId":3873614,"speedInKilometersPerHour":100.0,"fromNodeId":3873613}},{"type":"Feature","id":3666122,"geometry":{"type":"LineString","coordinates":[[5.426965,52.176204],[5.427002,52.176193],[5.427353,52.176022],[5.427542,52.175941]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.247,"toNodeId":596837,"speedInKilometersPerHour":100.0,"fromNodeId":3873614}},{"type":"Feature","id":3666123,"geometry":{"type":"LineString","coordinates":[[5.427756,52.175579],[5.427436,52.175301]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":37.896,"toNodeId":596835,"speedInKilometersPerHour":100.0,"fromNodeId":596838}},{"type":"Feature","id":3666124,"geometry":{"type":"LineString","coordinates":[[5.427942,52.175461],[5.427554,52.175117]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.586,"toNodeId":3873615,"speedInKilometersPerHour":100.0,"fromNodeId":596839}},{"type":"Feature","id":3666125,"geometry":{"type":"LineString","coordinates":[[5.427554,52.175117],[5.427166,52.174773]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.586,"toNodeId":3873616,"speedInKilometersPerHour":100.0,"fromNodeId":3873615}},{"type":"Feature","id":3666126,"geometry":{"type":"LineString","coordinates":[[5.427166,52.174773],[5.426777,52.174429]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.586,"toNodeId":3873617,"speedInKilometersPerHour":100.0,"fromNodeId":3873616}},{"type":"Feature","id":3666127,"geometry":{"type":"LineString","coordinates":[[5.426777,52.174429],[5.426389,52.174085]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.586,"toNodeId":3873618,"speedInKilometersPerHour":100.0,"fromNodeId":3873617}},{"type":"Feature","id":3666113,"geometry":{"type":"LineString","coordinates":[[5.426269,52.174182],[5.42591,52.173797]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.328,"toNodeId":3873607,"speedInKilometersPerHour":100.0,"fromNodeId":3873606}},{"type":"Feature","id":3666115,"geometry":{"type":"LineString","coordinates":[[5.427436,52.175301],[5.427168,52.175137],[5.426982,52.17506],[5.426875,52.175031]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.247,"toNodeId":3873608,"speedInKilometersPerHour":100.0,"fromNodeId":596835}},{"type":"Feature","id":3666130,"geometry":{"type":"LineString","coordinates":[[5.425613,52.173397],[5.425311,52.173067]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":42.122,"toNodeId":3873620,"speedInKilometersPerHour":100.0,"fromNodeId":596836}},{"type":"Feature","id":3666116,"geometry":{"type":"LineString","coordinates":[[5.426875,52.175031],[5.426734,52.174992],[5.426459,52.174976],[5.426199,52.174995],[5.426173,52.175001]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.247,"toNodeId":3873609,"speedInKilometersPerHour":100.0,"fromNodeId":3873608}},{"type":"Feature","id":3666128,"geometry":{"type":"LineString","coordinates":[[5.426389,52.174085],[5.426001,52.173741]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.586,"toNodeId":3873619,"speedInKilometersPerHour":100.0,"fromNodeId":3873618}},{"type":"Feature","id":3666129,"geometry":{"type":"LineString","coordinates":[[5.426001,52.173741],[5.425613,52.173397]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.586,"toNodeId":596836,"speedInKilometersPerHour":100.0,"fromNodeId":3873619}},{"type":"Feature","id":3666131,"geometry":{"type":"LineString","coordinates":[[5.425311,52.173067],[5.425306,52.173061],[5.425025,52.172732]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":42.122,"toNodeId":3873621,"speedInKilometersPerHour":100.0,"fromNodeId":3873620}},{"type":"Feature","id":3666132,"geometry":{"type":"LineString","coordinates":[[5.425025,52.172732],[5.42488,52.172562],[5.424755,52.172392]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":42.122,"toNodeId":3873622,"speedInKilometersPerHour":100.0,"fromNodeId":3873621}},{"type":"Feature","id":3666204,"geometry":{"type":"LineString","coordinates":[[5.42861,52.176056],[5.428276,52.175759]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":40.223,"toNodeId":3873665,"speedInKilometersPerHour":100.0,"fromNodeId":596855}},{"type":"Feature","id":3666205,"geometry":{"type":"LineString","coordinates":[[5.428276,52.175759],[5.427942,52.175461]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":40.223,"toNodeId":596839,"speedInKilometersPerHour":100.0,"fromNodeId":3873665}},{"type":"Feature","id":3666210,"geometry":{"type":"LineString","coordinates":[[5.424717,52.172107],[5.425023,52.172495]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.912,"toNodeId":3873670,"speedInKilometersPerHour":100.0,"fromNodeId":3873669}},{"type":"Feature","id":3666211,"geometry":{"type":"LineString","coordinates":[[5.425023,52.172495],[5.425043,52.17252],[5.425335,52.17288]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.912,"toNodeId":3873671,"speedInKilometersPerHour":100.0,"fromNodeId":3873670}},{"type":"Feature","id":3666214,"geometry":{"type":"LineString","coordinates":[[5.426059,52.173617],[5.426461,52.173969]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.912,"toNodeId":3873674,"speedInKilometersPerHour":100.0,"fromNodeId":3873673}},{"type":"Feature","id":3666212,"geometry":{"type":"LineString","coordinates":[[5.425335,52.17288],[5.425417,52.172981],[5.425689,52.173251]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.912,"toNodeId":3873672,"speedInKilometersPerHour":100.0,"fromNodeId":3873671}},{"type":"Feature","id":3666217,"geometry":{"type":"LineString","coordinates":[[5.427263,52.174675],[5.427665,52.175028]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.912,"toNodeId":3873677,"speedInKilometersPerHour":100.0,"fromNodeId":3873676}},{"type":"Feature","id":3666213,"geometry":{"type":"LineString","coordinates":[[5.425689,52.173251],[5.426053,52.173611],[5.426059,52.173617]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.912,"toNodeId":3873673,"speedInKilometersPerHour":100.0,"fromNodeId":3873672}},{"type":"Feature","id":3666215,"geometry":{"type":"LineString","coordinates":[[5.426461,52.173969],[5.426862,52.174322]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.912,"toNodeId":3873675,"speedInKilometersPerHour":100.0,"fromNodeId":3873674}},{"type":"Feature","id":3666220,"geometry":{"type":"LineString","coordinates":[[5.428066,52.175381],[5.428403,52.175677]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":40.157,"toNodeId":3873678,"speedInKilometersPerHour":100.0,"fromNodeId":596857}},{"type":"Feature","id":3666216,"geometry":{"type":"LineString","coordinates":[[5.426862,52.174322],[5.427263,52.174675]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.912,"toNodeId":3873676,"speedInKilometersPerHour":100.0,"fromNodeId":3873675}},{"type":"Feature","id":3666218,"geometry":{"type":"LineString","coordinates":[[5.427665,52.175028],[5.428066,52.175381]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.912,"toNodeId":596857,"speedInKilometersPerHour":100.0,"fromNodeId":3873677}},{"type":"Feature","id":3666221,"geometry":{"type":"LineString","coordinates":[[5.428403,52.175677],[5.42874,52.175972]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":40.157,"toNodeId":596859,"speedInKilometersPerHour":100.0,"fromNodeId":3873678}},{"type":"Feature","id":3666225,"geometry":{"type":"LineString","coordinates":[[5.425348,52.172509],[5.425448,52.172604],[5.42564,52.17276],[5.42576,52.172837]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.237,"toNodeId":3873681,"speedInKilometersPerHour":100.0,"fromNodeId":3873680}},{"type":"Feature","id":3666226,"geometry":{"type":"LineString","coordinates":[[5.42576,52.172837],[5.425812,52.172871],[5.425988,52.172958],[5.426297,52.173088]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.237,"toNodeId":3873682,"speedInKilometersPerHour":100.0,"fromNodeId":3873681}},{"type":"Feature","id":3666222,"geometry":{"type":"LineString","coordinates":[[5.42496,52.172169],[5.425194,52.172501],[5.42524,52.172555]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.076,"toNodeId":3873679,"speedInKilometersPerHour":100.0,"fromNodeId":596860}},{"type":"Feature","id":3666223,"geometry":{"type":"LineString","coordinates":[[5.42524,52.172555],[5.425388,52.172729],[5.425577,52.172924]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.076,"toNodeId":596861,"speedInKilometersPerHour":100.0,"fromNodeId":3873679}},{"type":"Feature","id":3666229,"geometry":{"type":"LineString","coordinates":[[5.427556,52.173366],[5.427933,52.173389],[5.42823,52.173395]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.237,"toNodeId":3873685,"speedInKilometersPerHour":100.0,"fromNodeId":3873684}},{"type":"Feature","id":3666230,"geometry":{"type":"LineString","coordinates":[[5.42823,52.173395],[5.428576,52.173401],[5.428905,52.173399]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.237,"toNodeId":3873686,"speedInKilometersPerHour":100.0,"fromNodeId":3873685}},{"type":"Feature","id":3666224,"geometry":{"type":"LineString","coordinates":[[5.42496,52.172169],[5.425298,52.172462],[5.425348,52.172509]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.237,"toNodeId":3873680,"speedInKilometersPerHour":100.0,"fromNodeId":596860}},{"type":"Feature","id":3666227,"geometry":{"type":"LineString","coordinates":[[5.426297,52.173088],[5.426332,52.173103],[5.426621,52.173206],[5.426899,52.173274]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.237,"toNodeId":3873683,"speedInKilometersPerHour":100.0,"fromNodeId":3873682}},{"type":"Feature","id":3666233,"geometry":{"type":"LineString","coordinates":[[5.430257,52.173387],[5.430814,52.17337],[5.430931,52.173363]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.237,"toNodeId":3873689,"speedInKilometersPerHour":100.0,"fromNodeId":3873688}},{"type":"Feature","id":3666234,"geometry":{"type":"LineString","coordinates":[[5.430931,52.173363],[5.431254,52.173344],[5.4316,52.173307]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.237,"toNodeId":3873690,"speedInKilometersPerHour":100.0,"fromNodeId":3873689}},{"type":"Feature","id":3666228,"geometry":{"type":"LineString","coordinates":[[5.426899,52.173274],[5.426995,52.173298],[5.427433,52.173359],[5.427556,52.173366]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.237,"toNodeId":3873684,"speedInKilometersPerHour":100.0,"fromNodeId":3873683}},{"type":"Feature","id":3666231,"geometry":{"type":"LineString","coordinates":[[5.428905,52.173399],[5.429581,52.173394]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.237,"toNodeId":3873687,"speedInKilometersPerHour":100.0,"fromNodeId":3873686}},{"type":"Feature","id":3666232,"geometry":{"type":"LineString","coordinates":[[5.429581,52.173394],[5.430187,52.173389],[5.430257,52.173387]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.237,"toNodeId":3873688,"speedInKilometersPerHour":100.0,"fromNodeId":3873687}},{"type":"Feature","id":3666235,"geometry":{"type":"LineString","coordinates":[[5.4316,52.173307],[5.431607,52.173306],[5.431988,52.173225],[5.432235,52.173164]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.237,"toNodeId":3873691,"speedInKilometersPerHour":100.0,"fromNodeId":3873690}},{"type":"Feature","id":3666240,"geometry":{"type":"LineString","coordinates":[[5.425577,52.172924],[5.425919,52.173229],[5.425982,52.173288]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.058,"toNodeId":3873694,"speedInKilometersPerHour":100.0,"fromNodeId":596861}},{"type":"Feature","id":3666241,"geometry":{"type":"LineString","coordinates":[[5.425982,52.173288],[5.426368,52.173653],[5.426373,52.173657]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.058,"toNodeId":3873695,"speedInKilometersPerHour":100.0,"fromNodeId":3873694}},{"type":"Feature","id":3666236,"geometry":{"type":"LineString","coordinates":[[5.432235,52.173164],[5.432294,52.173149],[5.432825,52.172962]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.237,"toNodeId":596862,"speedInKilometersPerHour":100.0,"fromNodeId":3873691}},{"type":"Feature","id":3666244,"geometry":{"type":"LineString","coordinates":[[5.427197,52.174379],[5.427609,52.17474]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.058,"toNodeId":596864,"speedInKilometersPerHour":100.0,"fromNodeId":3873697}},{"type":"Feature","id":3666245,"geometry":{"type":"LineString","coordinates":[[5.432825,52.172962],[5.433299,52.172748]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":40.191,"toNodeId":3873698,"speedInKilometersPerHour":100.0,"fromNodeId":596862}},{"type":"Feature","id":3666242,"geometry":{"type":"LineString","coordinates":[[5.426373,52.173657],[5.426785,52.174018]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.058,"toNodeId":3873696,"speedInKilometersPerHour":100.0,"fromNodeId":3873695}},{"type":"Feature","id":3666243,"geometry":{"type":"LineString","coordinates":[[5.426785,52.174018],[5.427197,52.174379]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.058,"toNodeId":3873697,"speedInKilometersPerHour":100.0,"fromNodeId":3873696}},{"type":"Feature","id":3667013,"geometry":{"type":"LineString","coordinates":[[5.423609,52.17878],[5.423952,52.178426]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":45.877,"toNodeId":3874148,"speedInKilometersPerHour":100.0,"fromNodeId":597011}},{"type":"Feature","id":3667134,"geometry":{"type":"LineString","coordinates":[[5.427609,52.17474],[5.427911,52.175013]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":36.71,"toNodeId":3874250,"speedInKilometersPerHour":100.0,"fromNodeId":596864}},{"type":"Feature","id":3666943,"geometry":{"type":"LineString","coordinates":[[5.428893,52.176567],[5.42866,52.176369]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":27.238,"toNodeId":3874089,"speedInKilometersPerHour":100.0,"fromNodeId":596831}},{"type":"Feature","id":3666945,"geometry":{"type":"LineString","coordinates":[[5.427439,52.176617],[5.427327,52.176769],[5.42723,52.176865],[5.427172,52.176952],[5.427161,52.176984]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":45.233,"toNodeId":3874090,"speedInKilometersPerHour":100.0,"fromNodeId":596833}},{"type":"Feature","id":3666946,"geometry":{"type":"LineString","coordinates":[[5.427161,52.176984],[5.427141,52.17704],[5.427121,52.177132],[5.427129,52.177223],[5.42715,52.177307],[5.427181,52.177376],[5.427187,52.177384]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":45.233,"toNodeId":3874091,"speedInKilometersPerHour":100.0,"fromNodeId":3874090}},{"type":"Feature","id":3666950,"geometry":{"type":"LineString","coordinates":[[5.428841,52.177664],[5.428947,52.177605],[5.429062,52.177505],[5.429166,52.177399],[5.429198,52.17733]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":45.233,"toNodeId":3874095,"speedInKilometersPerHour":100.0,"fromNodeId":3874094}},{"type":"Feature","id":3666947,"geometry":{"type":"LineString","coordinates":[[5.427187,52.177384],[5.427232,52.177437],[5.427304,52.177521],[5.427391,52.177582],[5.427467,52.177624],[5.427556,52.17767],[5.427604,52.177691]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":45.233,"toNodeId":3874092,"speedInKilometersPerHour":100.0,"fromNodeId":3874091}},{"type":"Feature","id":3666948,"geometry":{"type":"LineString","coordinates":[[5.427604,52.177691],[5.427657,52.177715],[5.427782,52.177753],[5.428007,52.177795],[5.428181,52.177799],[5.428227,52.177798]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":45.233,"toNodeId":3874093,"speedInKilometersPerHour":100.0,"fromNodeId":3874092}},{"type":"Feature","id":3666953,"geometry":{"type":"LineString","coordinates":[[5.428427,52.17617],[5.428091,52.175875]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":40.098,"toNodeId":3874097,"speedInKilometersPerHour":100.0,"fromNodeId":597005}},{"type":"Feature","id":3666949,"geometry":{"type":"LineString","coordinates":[[5.428227,52.177798],[5.428348,52.177795],[5.428487,52.177773],[5.428694,52.177719],[5.428826,52.177673],[5.428841,52.177664]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":45.233,"toNodeId":3874094,"speedInKilometersPerHour":100.0,"fromNodeId":3874093}},{"type":"Feature","id":3666951,"geometry":{"type":"LineString","coordinates":[[5.429198,52.17733],[5.429225,52.177269],[5.42924,52.177147],[5.429227,52.177032],[5.429199,52.176933],[5.429195,52.176928]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":45.233,"toNodeId":3874096,"speedInKilometersPerHour":100.0,"fromNodeId":3874095}},{"type":"Feature","id":3666956,"geometry":{"type":"LineString","coordinates":[[5.428755,52.175753],[5.428317,52.176041]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":43.907,"toNodeId":3874099,"speedInKilometersPerHour":100.0,"fromNodeId":3874098}},{"type":"Feature","id":3666952,"geometry":{"type":"LineString","coordinates":[[5.429195,52.176928],[5.429106,52.1768],[5.428893,52.176567]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":45.233,"toNodeId":596831,"speedInKilometersPerHour":100.0,"fromNodeId":3874096}},{"type":"Feature","id":3666954,"geometry":{"type":"LineString","coordinates":[[5.428091,52.175875],[5.427756,52.175579]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":40.098,"toNodeId":596838,"speedInKilometersPerHour":100.0,"fromNodeId":3874097}},{"type":"Feature","id":3666959,"geometry":{"type":"LineString","coordinates":[[5.429265,52.176201],[5.429654,52.176545]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.609,"toNodeId":3874101,"speedInKilometersPerHour":100.0,"fromNodeId":597007}},{"type":"Feature","id":3666955,"geometry":{"type":"LineString","coordinates":[[5.429194,52.175465],[5.428755,52.175753]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":43.907,"toNodeId":3874098,"speedInKilometersPerHour":100.0,"fromNodeId":597006}},{"type":"Feature","id":3666957,"geometry":{"type":"LineString","coordinates":[[5.428317,52.176041],[5.427878,52.176329]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":43.907,"toNodeId":3874100,"speedInKilometersPerHour":100.0,"fromNodeId":3874099}},{"type":"Feature","id":3666962,"geometry":{"type":"LineString","coordinates":[[5.430433,52.177232],[5.430824,52.177575]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.609,"toNodeId":3874104,"speedInKilometersPerHour":100.0,"fromNodeId":3874103}},{"type":"Feature","id":3666958,"geometry":{"type":"LineString","coordinates":[[5.427878,52.176329],[5.427439,52.176617]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":43.907,"toNodeId":596833,"speedInKilometersPerHour":100.0,"fromNodeId":3874100}},{"type":"Feature","id":3666960,"geometry":{"type":"LineString","coordinates":[[5.429654,52.176545],[5.430043,52.176889]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.609,"toNodeId":3874102,"speedInKilometersPerHour":100.0,"fromNodeId":3874101}},{"type":"Feature","id":3666961,"geometry":{"type":"LineString","coordinates":[[5.430043,52.176889],[5.430279,52.177097],[5.430433,52.177232]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.609,"toNodeId":3874103,"speedInKilometersPerHour":100.0,"fromNodeId":3874102}},{"type":"Feature","id":3666966,"geometry":{"type":"LineString","coordinates":[[5.429265,52.176201],[5.429613,52.176346],[5.429734,52.176395],[5.429861,52.176427]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.088,"toNodeId":3874107,"speedInKilometersPerHour":100.0,"fromNodeId":597007}},{"type":"Feature","id":3666967,"geometry":{"type":"LineString","coordinates":[[5.429861,52.176427],[5.4299,52.176437],[5.430044,52.176464],[5.430235,52.176476],[5.430438,52.176464],[5.430548,52.176444]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.088,"toNodeId":3874108,"speedInKilometersPerHour":100.0,"fromNodeId":3874107}},{"type":"Feature","id":3666963,"geometry":{"type":"LineString","coordinates":[[5.430824,52.177575],[5.431216,52.177918]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.609,"toNodeId":3874105,"speedInKilometersPerHour":100.0,"fromNodeId":3874104}},{"type":"Feature","id":3666964,"geometry":{"type":"LineString","coordinates":[[5.431216,52.177918],[5.431607,52.178261]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.609,"toNodeId":3874106,"speedInKilometersPerHour":100.0,"fromNodeId":3874105}},{"type":"Feature","id":3666970,"geometry":{"type":"LineString","coordinates":[[5.431298,52.175788],[5.431298,52.175716],[5.431243,52.175579],[5.431151,52.175453],[5.431058,52.175395]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.088,"toNodeId":3874111,"speedInKilometersPerHour":100.0,"fromNodeId":3874110}},{"type":"Feature","id":3666971,"geometry":{"type":"LineString","coordinates":[[5.431058,52.175395],[5.430968,52.175339],[5.430759,52.175243],[5.430482,52.175175],[5.430466,52.175174]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.088,"toNodeId":3874112,"speedInKilometersPerHour":100.0,"fromNodeId":3874111}},{"type":"Feature","id":3666972,"geometry":{"type":"LineString","coordinates":[[5.430466,52.175174],[5.430201,52.175163],[5.429923,52.17519],[5.42978,52.175228]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.088,"toNodeId":3874113,"speedInKilometersPerHour":100.0,"fromNodeId":3874112}},{"type":"Feature","id":3666965,"geometry":{"type":"LineString","coordinates":[[5.431607,52.178261],[5.431998,52.178604]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.609,"toNodeId":597008,"speedInKilometersPerHour":100.0,"fromNodeId":3874106}},{"type":"Feature","id":3666968,"geometry":{"type":"LineString","coordinates":[[5.430548,52.176444],[5.430564,52.176441],[5.430718,52.176399],[5.430852,52.17635],[5.430956,52.176308],[5.431067,52.176231],[5.431104,52.176194]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.088,"toNodeId":3874109,"speedInKilometersPerHour":100.0,"fromNodeId":3874108}},{"type":"Feature","id":3666975,"geometry":{"type":"LineString","coordinates":[[5.433133,52.173317],[5.43269,52.173648]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.707,"toNodeId":3874114,"speedInKilometersPerHour":100.0,"fromNodeId":596870}},{"type":"Feature","id":3666976,"geometry":{"type":"LineString","coordinates":[[5.43269,52.173648],[5.432576,52.173733],[5.432343,52.173916],[5.432279,52.173993]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.707,"toNodeId":3874115,"speedInKilometersPerHour":100.0,"fromNodeId":3874114}},{"type":"Feature","id":3666977,"geometry":{"type":"LineString","coordinates":[[5.432279,52.173993],[5.432025,52.174301],[5.431992,52.174382]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.707,"toNodeId":3874116,"speedInKilometersPerHour":100.0,"fromNodeId":3874115}},{"type":"Feature","id":3666969,"geometry":{"type":"LineString","coordinates":[[5.431104,52.176194],[5.431154,52.176144],[5.431248,52.176025],[5.431298,52.175888],[5.431298,52.175788]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.088,"toNodeId":3874110,"speedInKilometersPerHour":100.0,"fromNodeId":3874109}},{"type":"Feature","id":3666973,"geometry":{"type":"LineString","coordinates":[[5.42978,52.175228],[5.429733,52.17524],[5.429437,52.175358],[5.429194,52.175465]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.088,"toNodeId":597006,"speedInKilometersPerHour":100.0,"fromNodeId":3874113}},{"type":"Feature","id":3666980,"geometry":{"type":"LineString","coordinates":[[5.431755,52.175225],[5.431699,52.175468],[5.431674,52.175651]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.707,"toNodeId":3874119,"speedInKilometersPerHour":100.0,"fromNodeId":3874118}},{"type":"Feature","id":3666981,"geometry":{"type":"LineString","coordinates":[[5.431674,52.175651],[5.431614,52.176078]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.707,"toNodeId":3874120,"speedInKilometersPerHour":100.0,"fromNodeId":3874119}},{"type":"Feature","id":3666974,"geometry":{"type":"LineString","coordinates":[[5.428897,52.175877],[5.429265,52.176201]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":43.971,"toNodeId":597007,"speedInKilometersPerHour":100.0,"fromNodeId":597009}},{"type":"Feature","id":3666978,"geometry":{"type":"LineString","coordinates":[[5.431992,52.174382],[5.431855,52.174713],[5.431839,52.174799]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.707,"toNodeId":3874117,"speedInKilometersPerHour":100.0,"fromNodeId":3874116}},{"type":"Feature","id":3666979,"geometry":{"type":"LineString","coordinates":[[5.431839,52.174799],[5.431774,52.17514],[5.431755,52.175225]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.707,"toNodeId":3874118,"speedInKilometersPerHour":100.0,"fromNodeId":3874117}},{"type":"Feature","id":3666985,"geometry":{"type":"LineString","coordinates":[[5.431527,52.177362],[5.431572,52.177769],[5.431579,52.17779]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.707,"toNodeId":3874124,"speedInKilometersPerHour":100.0,"fromNodeId":3874123}},{"type":"Feature","id":3666982,"geometry":{"type":"LineString","coordinates":[[5.431614,52.176078],[5.431576,52.17635],[5.431564,52.176505]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.707,"toNodeId":3874121,"speedInKilometersPerHour":100.0,"fromNodeId":3874120}},{"type":"Feature","id":3666983,"geometry":{"type":"LineString","coordinates":[[5.431564,52.176505],[5.431532,52.176934]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.707,"toNodeId":3874122,"speedInKilometersPerHour":100.0,"fromNodeId":3874121}},{"type":"Feature","id":3666988,"geometry":{"type":"LineString","coordinates":[[5.431998,52.178604],[5.432367,52.178929]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":44.067,"toNodeId":3874126,"speedInKilometersPerHour":100.0,"fromNodeId":597008}},{"type":"Feature","id":3666989,"geometry":{"type":"LineString","coordinates":[[5.432367,52.178929],[5.432737,52.179253]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":44.067,"toNodeId":3874127,"speedInKilometersPerHour":100.0,"fromNodeId":3874126}},{"type":"Feature","id":3666984,"geometry":{"type":"LineString","coordinates":[[5.431532,52.176934],[5.431525,52.177029],[5.431526,52.177353],[5.431527,52.177362]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.707,"toNodeId":3874123,"speedInKilometersPerHour":100.0,"fromNodeId":3874122}},{"type":"Feature","id":3666986,"geometry":{"type":"LineString","coordinates":[[5.431579,52.17779],[5.431678,52.178078],[5.431741,52.178206]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.707,"toNodeId":3874125,"speedInKilometersPerHour":100.0,"fromNodeId":3874124}},{"type":"Feature","id":3666987,"geometry":{"type":"LineString","coordinates":[[5.431741,52.178206],[5.431812,52.178352],[5.431998,52.178604]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.707,"toNodeId":597008,"speedInKilometersPerHour":100.0,"fromNodeId":3874125}},{"type":"Feature","id":3666990,"geometry":{"type":"LineString","coordinates":[[5.432737,52.179253],[5.43284,52.179344],[5.433105,52.179578]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":44.067,"toNodeId":3874128,"speedInKilometersPerHour":100.0,"fromNodeId":3874127}},{"type":"Feature","id":3666991,"geometry":{"type":"LineString","coordinates":[[5.433105,52.179578],[5.433461,52.179893],[5.433472,52.179903]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":44.067,"toNodeId":3874129,"speedInKilometersPerHour":100.0,"fromNodeId":3874128}},{"type":"Feature","id":3666997,"geometry":{"type":"LineString","coordinates":[[5.43262,52.173571],[5.432107,52.173825]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":45.066,"toNodeId":3874134,"speedInKilometersPerHour":100.0,"fromNodeId":3874133}},{"type":"Feature","id":3667000,"geometry":{"type":"LineString","coordinates":[[5.431105,52.174351],[5.43086,52.17448],[5.430611,52.174619]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":45.066,"toNodeId":3874137,"speedInKilometersPerHour":100.0,"fromNodeId":3874136}},{"type":"Feature","id":3666996,"geometry":{"type":"LineString","coordinates":[[5.433133,52.173317],[5.43262,52.173571]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":45.066,"toNodeId":3874133,"speedInKilometersPerHour":100.0,"fromNodeId":596870}},{"type":"Feature","id":3666998,"geometry":{"type":"LineString","coordinates":[[5.432107,52.173825],[5.431993,52.173882],[5.431605,52.174087]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":45.066,"toNodeId":3874135,"speedInKilometersPerHour":100.0,"fromNodeId":3874134}},{"type":"Feature","id":3666999,"geometry":{"type":"LineString","coordinates":[[5.431605,52.174087],[5.431105,52.174351]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":45.066,"toNodeId":3874136,"speedInKilometersPerHour":100.0,"fromNodeId":3874135}},{"type":"Feature","id":3667001,"geometry":{"type":"LineString","coordinates":[[5.430611,52.174619],[5.430122,52.17489]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":45.066,"toNodeId":3874138,"speedInKilometersPerHour":100.0,"fromNodeId":3874137}},{"type":"Feature","id":3667005,"geometry":{"type":"LineString","coordinates":[[5.424063,52.178474],[5.424496,52.178156]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.115,"toNodeId":3874141,"speedInKilometersPerHour":100.0,"fromNodeId":3874140}},{"type":"Feature","id":3667006,"geometry":{"type":"LineString","coordinates":[[5.424496,52.178156],[5.424671,52.178028],[5.424924,52.177836]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.115,"toNodeId":3874142,"speedInKilometersPerHour":100.0,"fromNodeId":3874141}},{"type":"Feature","id":3667002,"geometry":{"type":"LineString","coordinates":[[5.430122,52.17489],[5.42998,52.174969],[5.429654,52.175175]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":45.066,"toNodeId":3874139,"speedInKilometersPerHour":100.0,"fromNodeId":3874138}},{"type":"Feature","id":3667003,"geometry":{"type":"LineString","coordinates":[[5.429654,52.175175],[5.429194,52.175465]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":45.066,"toNodeId":597006,"speedInKilometersPerHour":100.0,"fromNodeId":3874139}},{"type":"Feature","id":3667009,"geometry":{"type":"LineString","coordinates":[[5.42578,52.177195],[5.426212,52.176877]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.115,"toNodeId":3874145,"speedInKilometersPerHour":100.0,"fromNodeId":3874144}},{"type":"Feature","id":3667010,"geometry":{"type":"LineString","coordinates":[[5.426212,52.176877],[5.426514,52.176655],[5.426648,52.176562]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.115,"toNodeId":3874146,"speedInKilometersPerHour":100.0,"fromNodeId":3874145}},{"type":"Feature","id":3667004,"geometry":{"type":"LineString","coordinates":[[5.423609,52.17878],[5.423953,52.178555],[5.424063,52.178474]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.115,"toNodeId":3874140,"speedInKilometersPerHour":100.0,"fromNodeId":597011}},{"type":"Feature","id":3667007,"geometry":{"type":"LineString","coordinates":[[5.424924,52.177836],[5.425349,52.177514]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.115,"toNodeId":3874143,"speedInKilometersPerHour":100.0,"fromNodeId":3874142}},{"type":"Feature","id":3667008,"geometry":{"type":"LineString","coordinates":[[5.425349,52.177514],[5.425446,52.177441],[5.42578,52.177195]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.115,"toNodeId":3874144,"speedInKilometersPerHour":100.0,"fromNodeId":3874143}},{"type":"Feature","id":3667014,"geometry":{"type":"LineString","coordinates":[[5.423952,52.178426],[5.42422,52.17815],[5.424268,52.178064]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":45.877,"toNodeId":3874149,"speedInKilometersPerHour":100.0,"fromNodeId":3874148}},{"type":"Feature","id":3667011,"geometry":{"type":"LineString","coordinates":[[5.426648,52.176562],[5.427095,52.176251]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.115,"toNodeId":3874147,"speedInKilometersPerHour":100.0,"fromNodeId":3874146}},{"type":"Feature","id":3667012,"geometry":{"type":"LineString","coordinates":[[5.427095,52.176251],[5.427542,52.175941]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.115,"toNodeId":596837,"speedInKilometersPerHour":100.0,"fromNodeId":3874147}},{"type":"Feature","id":3667015,"geometry":{"type":"LineString","coordinates":[[5.424268,52.178064],[5.42441,52.177811],[5.424465,52.17767]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":45.877,"toNodeId":3874150,"speedInKilometersPerHour":100.0,"fromNodeId":3874149}},{"type":"Feature","id":3667020,"geometry":{"type":"LineString","coordinates":[[5.421906,52.179994],[5.422327,52.179688]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":44.597,"toNodeId":3874154,"speedInKilometersPerHour":100.0,"fromNodeId":3874153}},{"type":"Feature","id":3667021,"geometry":{"type":"LineString","coordinates":[[5.422327,52.179688],[5.422725,52.179398],[5.422748,52.179382]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":44.597,"toNodeId":3874155,"speedInKilometersPerHour":100.0,"fromNodeId":3874154}},{"type":"Feature","id":3667016,"geometry":{"type":"LineString","coordinates":[[5.424465,52.17767],[5.42462,52.177269]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":45.877,"toNodeId":597012,"speedInKilometersPerHour":100.0,"fromNodeId":3874150}},{"type":"Feature","id":3667024,"geometry":{"type":"LineString","coordinates":[[5.427542,52.175941],[5.427981,52.175668]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":42.732,"toNodeId":3874157,"speedInKilometersPerHour":100.0,"fromNodeId":596837}},{"type":"Feature","id":3667025,"geometry":{"type":"LineString","coordinates":[[5.427981,52.175668],[5.428419,52.175394]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":42.732,"toNodeId":3874158,"speedInKilometersPerHour":100.0,"fromNodeId":3874157}},{"type":"Feature","id":3667027,"geometry":{"type":"LineString","coordinates":[[5.428858,52.175121],[5.429296,52.174847]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":42.732,"toNodeId":597014,"speedInKilometersPerHour":100.0,"fromNodeId":3874159}},{"type":"Feature","id":3667022,"geometry":{"type":"LineString","coordinates":[[5.422748,52.179382],[5.423178,52.179081]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":44.597,"toNodeId":3874156,"speedInKilometersPerHour":100.0,"fromNodeId":3874155}},{"type":"Feature","id":3667023,"geometry":{"type":"LineString","coordinates":[[5.423178,52.179081],[5.423609,52.17878]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":44.597,"toNodeId":597011,"speedInKilometersPerHour":100.0,"fromNodeId":3874156}},{"type":"Feature","id":3667034,"geometry":{"type":"LineString","coordinates":[[5.421688,52.180337],[5.42216,52.179998]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.601,"toNodeId":3874166,"speedInKilometersPerHour":120.0,"fromNodeId":3874165}},{"type":"Feature","id":3667035,"geometry":{"type":"LineString","coordinates":[[5.42216,52.179998],[5.422633,52.17966]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.601,"toNodeId":3874167,"speedInKilometersPerHour":120.0,"fromNodeId":3874166}},{"type":"Feature","id":3667036,"geometry":{"type":"LineString","coordinates":[[5.422633,52.17966],[5.423105,52.179322]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.601,"toNodeId":3874168,"speedInKilometersPerHour":120.0,"fromNodeId":3874167}},{"type":"Feature","id":3667037,"geometry":{"type":"LineString","coordinates":[[5.423105,52.179322],[5.423266,52.179207],[5.423577,52.178984]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.601,"toNodeId":3874169,"speedInKilometersPerHour":120.0,"fromNodeId":3874168}},{"type":"Feature","id":3667038,"geometry":{"type":"LineString","coordinates":[[5.423577,52.178984],[5.424049,52.178645]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.601,"toNodeId":3874170,"speedInKilometersPerHour":120.0,"fromNodeId":3874169}},{"type":"Feature","id":3667026,"geometry":{"type":"LineString","coordinates":[[5.428419,52.175394],[5.428858,52.175121]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":42.732,"toNodeId":3874159,"speedInKilometersPerHour":100.0,"fromNodeId":3874158}},{"type":"Feature","id":3667041,"geometry":{"type":"LineString","coordinates":[[5.424993,52.177968],[5.425465,52.17763]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.601,"toNodeId":3874173,"speedInKilometersPerHour":120.0,"fromNodeId":3874172}},{"type":"Feature","id":3667039,"geometry":{"type":"LineString","coordinates":[[5.424049,52.178645],[5.424521,52.178307]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.601,"toNodeId":3874171,"speedInKilometersPerHour":120.0,"fromNodeId":3874170}},{"type":"Feature","id":3667044,"geometry":{"type":"LineString","coordinates":[[5.426408,52.176953],[5.426759,52.176701],[5.426884,52.176616]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.601,"toNodeId":3874176,"speedInKilometersPerHour":120.0,"fromNodeId":3874175}},{"type":"Feature","id":3667045,"geometry":{"type":"LineString","coordinates":[[5.426884,52.176616],[5.427371,52.176286]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.601,"toNodeId":3874177,"speedInKilometersPerHour":120.0,"fromNodeId":3874176}},{"type":"Feature","id":3667046,"geometry":{"type":"LineString","coordinates":[[5.427371,52.176286],[5.42784,52.175968],[5.427859,52.175956]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.601,"toNodeId":3874178,"speedInKilometersPerHour":120.0,"fromNodeId":3874177}},{"type":"Feature","id":3667040,"geometry":{"type":"LineString","coordinates":[[5.424521,52.178307],[5.424993,52.177968]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.601,"toNodeId":3874172,"speedInKilometersPerHour":120.0,"fromNodeId":3874171}},{"type":"Feature","id":3667042,"geometry":{"type":"LineString","coordinates":[[5.425465,52.17763],[5.425936,52.177291]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.601,"toNodeId":3874174,"speedInKilometersPerHour":120.0,"fromNodeId":3874173}},{"type":"Feature","id":3667049,"geometry":{"type":"LineString","coordinates":[[5.428867,52.175315],[5.429382,52.175002]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.601,"toNodeId":3874181,"speedInKilometersPerHour":120.0,"fromNodeId":3874180}},{"type":"Feature","id":3667043,"geometry":{"type":"LineString","coordinates":[[5.425936,52.177291],[5.426408,52.176953]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.601,"toNodeId":3874175,"speedInKilometersPerHour":120.0,"fromNodeId":3874174}},{"type":"Feature","id":3667051,"geometry":{"type":"LineString","coordinates":[[5.429909,52.174696],[5.430446,52.174396]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.601,"toNodeId":3874183,"speedInKilometersPerHour":120.0,"fromNodeId":3874182}},{"type":"Feature","id":3667047,"geometry":{"type":"LineString","coordinates":[[5.427859,52.175956],[5.428362,52.175635]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.601,"toNodeId":3874179,"speedInKilometersPerHour":120.0,"fromNodeId":3874178}},{"type":"Feature","id":3667048,"geometry":{"type":"LineString","coordinates":[[5.428362,52.175635],[5.42879,52.175362],[5.428867,52.175315]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.601,"toNodeId":3874180,"speedInKilometersPerHour":120.0,"fromNodeId":3874179}},{"type":"Feature","id":3667054,"geometry":{"type":"LineString","coordinates":[[5.431528,52.173803],[5.432072,52.173508]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.601,"toNodeId":597016,"speedInKilometersPerHour":120.0,"fromNodeId":3874185}},{"type":"Feature","id":3667050,"geometry":{"type":"LineString","coordinates":[[5.429382,52.175002],[5.429625,52.174854],[5.429909,52.174696]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.601,"toNodeId":3874182,"speedInKilometersPerHour":120.0,"fromNodeId":3874181}},{"type":"Feature","id":3667052,"geometry":{"type":"LineString","coordinates":[[5.430446,52.174396],[5.430895,52.174145],[5.430984,52.174097]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.601,"toNodeId":3874184,"speedInKilometersPerHour":120.0,"fromNodeId":3874183}},{"type":"Feature","id":3667053,"geometry":{"type":"LineString","coordinates":[[5.430984,52.174097],[5.431528,52.173803]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.601,"toNodeId":3874185,"speedInKilometersPerHour":120.0,"fromNodeId":3874184}},{"type":"Feature","id":3667060,"geometry":{"type":"LineString","coordinates":[[5.432072,52.173508],[5.432588,52.173256]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":45.102,"toNodeId":3874189,"speedInKilometersPerHour":120.0,"fromNodeId":597016}},{"type":"Feature","id":3667061,"geometry":{"type":"LineString","coordinates":[[5.432588,52.173256],[5.432932,52.173088],[5.433107,52.173006]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":45.102,"toNodeId":3874190,"speedInKilometersPerHour":120.0,"fromNodeId":3874189}},{"type":"Feature","id":3667062,"geometry":{"type":"LineString","coordinates":[[5.433107,52.173006],[5.433631,52.17276]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":45.102,"toNodeId":3874191,"speedInKilometersPerHour":120.0,"fromNodeId":3874190}},{"type":"Feature","id":3667067,"geometry":{"type":"LineString","coordinates":[[5.431265,52.173805],[5.431642,52.173628]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":32.463,"toNodeId":3874195,"speedInKilometersPerHour":100.0,"fromNodeId":597020}},{"type":"Feature","id":3667071,"geometry":{"type":"LineString","coordinates":[[5.429147,52.176331],[5.429554,52.176691]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.725,"toNodeId":3874197,"speedInKilometersPerHour":100.0,"fromNodeId":3874196}},{"type":"Feature","id":3667068,"geometry":{"type":"LineString","coordinates":[[5.431642,52.173628],[5.431703,52.173599],[5.432072,52.173508]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":32.463,"toNodeId":597016,"speedInKilometersPerHour":100.0,"fromNodeId":3874195}},{"type":"Feature","id":3667070,"geometry":{"type":"LineString","coordinates":[[5.42874,52.175972],[5.429147,52.176331]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.725,"toNodeId":3874196,"speedInKilometersPerHour":100.0,"fromNodeId":596859}},{"type":"Feature","id":3667075,"geometry":{"type":"LineString","coordinates":[[5.430781,52.177766],[5.431193,52.178124]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.725,"toNodeId":3874201,"speedInKilometersPerHour":100.0,"fromNodeId":3874200}},{"type":"Feature","id":3667076,"geometry":{"type":"LineString","coordinates":[[5.431193,52.178124],[5.431604,52.178481]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.725,"toNodeId":3874202,"speedInKilometersPerHour":100.0,"fromNodeId":3874201}},{"type":"Feature","id":3667077,"geometry":{"type":"LineString","coordinates":[[5.431604,52.178481],[5.432016,52.178839]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.725,"toNodeId":3874203,"speedInKilometersPerHour":100.0,"fromNodeId":3874202}},{"type":"Feature","id":3667072,"geometry":{"type":"LineString","coordinates":[[5.429554,52.176691],[5.429961,52.17705]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.725,"toNodeId":3874198,"speedInKilometersPerHour":100.0,"fromNodeId":3874197}},{"type":"Feature","id":3667079,"geometry":{"type":"LineString","coordinates":[[5.432427,52.179196],[5.432838,52.179553]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.725,"toNodeId":3874205,"speedInKilometersPerHour":100.0,"fromNodeId":3874204}},{"type":"Feature","id":3667073,"geometry":{"type":"LineString","coordinates":[[5.429961,52.17705],[5.430139,52.177208],[5.43037,52.177409]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.725,"toNodeId":3874199,"speedInKilometersPerHour":100.0,"fromNodeId":3874198}},{"type":"Feature","id":3667078,"geometry":{"type":"LineString","coordinates":[[5.432016,52.178839],[5.432427,52.179196]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.725,"toNodeId":3874204,"speedInKilometersPerHour":100.0,"fromNodeId":3874203}},{"type":"Feature","id":3667080,"geometry":{"type":"LineString","coordinates":[[5.432838,52.179553],[5.43325,52.179911]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.725,"toNodeId":3874206,"speedInKilometersPerHour":100.0,"fromNodeId":3874205}},{"type":"Feature","id":3667074,"geometry":{"type":"LineString","coordinates":[[5.43037,52.177409],[5.430781,52.177766]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.725,"toNodeId":3874200,"speedInKilometersPerHour":100.0,"fromNodeId":3874199}},{"type":"Feature","id":3667081,"geometry":{"type":"LineString","coordinates":[[5.43325,52.179911],[5.433661,52.180268]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.725,"toNodeId":3874207,"speedInKilometersPerHour":100.0,"fromNodeId":3874206}},{"type":"Feature","id":3667121,"geometry":{"type":"LineString","coordinates":[[5.429482,52.174024],[5.429452,52.173988],[5.429347,52.173901],[5.429214,52.173817],[5.429055,52.173752],[5.42898,52.173731]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.283,"toNodeId":3874240,"speedInKilometersPerHour":100.0,"fromNodeId":3874239}},{"type":"Feature","id":3667119,"geometry":{"type":"LineString","coordinates":[[5.429296,52.174847],[5.429416,52.174686],[5.429527,52.174538],[5.429559,52.174446]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.283,"toNodeId":3874238,"speedInKilometersPerHour":100.0,"fromNodeId":597014}},{"type":"Feature","id":3667124,"geometry":{"type":"LineString","coordinates":[[5.42771,52.173918],[5.427675,52.173943],[5.427555,52.174061],[5.427491,52.174183],[5.427475,52.174274],[5.427475,52.174316]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.283,"toNodeId":3874243,"speedInKilometersPerHour":100.0,"fromNodeId":3874242}},{"type":"Feature","id":3667125,"geometry":{"type":"LineString","coordinates":[[5.427475,52.174316],[5.427474,52.17437],[5.427494,52.174442],[5.427509,52.174507],[5.427609,52.17474]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.283,"toNodeId":596864,"speedInKilometersPerHour":100.0,"fromNodeId":3874243}},{"type":"Feature","id":3667120,"geometry":{"type":"LineString","coordinates":[[5.429559,52.174446],[5.429575,52.1744],[5.429591,52.174274],[5.42958,52.174206],[5.42955,52.174141],[5.429506,52.174053],[5.429482,52.174024]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.283,"toNodeId":3874239,"speedInKilometersPerHour":100.0,"fromNodeId":3874238}},{"type":"Feature","id":3667122,"geometry":{"type":"LineString","coordinates":[[5.42898,52.173731],[5.428873,52.173702],[5.428669,52.173676],[5.428507,52.173672],[5.428346,52.173679],[5.428292,52.173688]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.283,"toNodeId":3874241,"speedInKilometersPerHour":100.0,"fromNodeId":3874240}},{"type":"Feature","id":3667128,"geometry":{"type":"LineString","coordinates":[[5.430281,52.174327],[5.430482,52.174225],[5.430775,52.174068]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":44.443,"toNodeId":3874246,"speedInKilometersPerHour":100.0,"fromNodeId":3874245}},{"type":"Feature","id":3667129,"geometry":{"type":"LineString","coordinates":[[5.430775,52.174068],[5.431265,52.173805]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":44.443,"toNodeId":597020,"speedInKilometersPerHour":100.0,"fromNodeId":3874246}},{"type":"Feature","id":3667130,"geometry":{"type":"LineString","coordinates":[[5.430015,52.17728],[5.429664,52.176974]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":41.673,"toNodeId":3874247,"speedInKilometersPerHour":100.0,"fromNodeId":597029}},{"type":"Feature","id":3667131,"geometry":{"type":"LineString","coordinates":[[5.429664,52.176974],[5.429312,52.176668]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":41.673,"toNodeId":3874248,"speedInKilometersPerHour":100.0,"fromNodeId":3874247}},{"type":"Feature","id":3667123,"geometry":{"type":"LineString","coordinates":[[5.428292,52.173688],[5.42819,52.173706],[5.428039,52.17374],[5.427924,52.173794],[5.427783,52.173866],[5.42771,52.173918]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.283,"toNodeId":3874242,"speedInKilometersPerHour":100.0,"fromNodeId":3874241}},{"type":"Feature","id":3667126,"geometry":{"type":"LineString","coordinates":[[5.429296,52.174847],[5.429658,52.174641],[5.429779,52.17458]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":44.443,"toNodeId":3874244,"speedInKilometersPerHour":100.0,"fromNodeId":597014}},{"type":"Feature","id":3667135,"geometry":{"type":"LineString","coordinates":[[5.427911,52.175013],[5.428214,52.175285]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":36.71,"toNodeId":597030,"speedInKilometersPerHour":100.0,"fromNodeId":3874250}},{"type":"Feature","id":3667136,"geometry":{"type":"LineString","coordinates":[[5.428214,52.175285],[5.428555,52.175581]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":40.38,"toNodeId":3874251,"speedInKilometersPerHour":100.0,"fromNodeId":597030}},{"type":"Feature","id":3667137,"geometry":{"type":"LineString","coordinates":[[5.428555,52.175581],[5.428897,52.175877]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":40.38,"toNodeId":597009,"speedInKilometersPerHour":100.0,"fromNodeId":3874251}},{"type":"Feature","id":3667127,"geometry":{"type":"LineString","coordinates":[[5.429779,52.17458],[5.430281,52.174327]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":44.443,"toNodeId":3874245,"speedInKilometersPerHour":100.0,"fromNodeId":3874244}},{"type":"Feature","id":3667132,"geometry":{"type":"LineString","coordinates":[[5.429312,52.176668],[5.428961,52.176362]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":41.673,"toNodeId":3874249,"speedInKilometersPerHour":100.0,"fromNodeId":3874248}},{"type":"Feature","id":3667133,"geometry":{"type":"LineString","coordinates":[[5.428961,52.176362],[5.42861,52.176056]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":41.673,"toNodeId":596855,"speedInKilometersPerHour":100.0,"fromNodeId":3874249}},{"type":"Feature","id":3669263,"geometry":{"type":"LineString","coordinates":[[5.433525,52.172981],[5.433012,52.173222],[5.43295,52.173251]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.501,"toNodeId":3875466,"speedInKilometersPerHour":120.0,"fromNodeId":3875465}},{"type":"Feature","id":3669264,"geometry":{"type":"LineString","coordinates":[[5.43295,52.173251],[5.432378,52.173524]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.501,"toNodeId":3875467,"speedInKilometersPerHour":120.0,"fromNodeId":3875466}},{"type":"Feature","id":3669265,"geometry":{"type":"LineString","coordinates":[[5.432378,52.173524],[5.431947,52.173729],[5.431813,52.173802]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.501,"toNodeId":3875468,"speedInKilometersPerHour":120.0,"fromNodeId":3875467}},{"type":"Feature","id":3669266,"geometry":{"type":"LineString","coordinates":[[5.431813,52.173802],[5.43127,52.174096]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.501,"toNodeId":3875469,"speedInKilometersPerHour":120.0,"fromNodeId":3875468}},{"type":"Feature","id":3669267,"geometry":{"type":"LineString","coordinates":[[5.43127,52.174096],[5.430961,52.174263],[5.43073,52.174391]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.501,"toNodeId":3875470,"speedInKilometersPerHour":120.0,"fromNodeId":3875469}},{"type":"Feature","id":3669268,"geometry":{"type":"LineString","coordinates":[[5.43073,52.174391],[5.430192,52.174689]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.501,"toNodeId":3875471,"speedInKilometersPerHour":120.0,"fromNodeId":3875470}},{"type":"Feature","id":3669269,"geometry":{"type":"LineString","coordinates":[[5.430192,52.174689],[5.429709,52.174957],[5.429657,52.174988]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.501,"toNodeId":3875472,"speedInKilometersPerHour":120.0,"fromNodeId":3875471}},{"type":"Feature","id":3669270,"geometry":{"type":"LineString","coordinates":[[5.429657,52.174988],[5.429139,52.175299]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.501,"toNodeId":3875473,"speedInKilometersPerHour":120.0,"fromNodeId":3875472}},{"type":"Feature","id":3669271,"geometry":{"type":"LineString","coordinates":[[5.429139,52.175299],[5.42885,52.175472],[5.428626,52.175613]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.501,"toNodeId":3875474,"speedInKilometersPerHour":120.0,"fromNodeId":3875473}},{"type":"Feature","id":3669272,"geometry":{"type":"LineString","coordinates":[[5.428626,52.175613],[5.428121,52.175932]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.501,"toNodeId":3875475,"speedInKilometersPerHour":120.0,"fromNodeId":3875474}},{"type":"Feature","id":3669273,"geometry":{"type":"LineString","coordinates":[[5.428121,52.175932],[5.427924,52.176056],[5.427628,52.176257]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.501,"toNodeId":3875476,"speedInKilometersPerHour":120.0,"fromNodeId":3875475}},{"type":"Feature","id":3669274,"geometry":{"type":"LineString","coordinates":[[5.427628,52.176257],[5.427143,52.176587]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.501,"toNodeId":3875477,"speedInKilometersPerHour":120.0,"fromNodeId":3875476}},{"type":"Feature","id":3669275,"geometry":{"type":"LineString","coordinates":[[5.427143,52.176587],[5.426919,52.176739],[5.426665,52.176921]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.501,"toNodeId":3875478,"speedInKilometersPerHour":120.0,"fromNodeId":3875477}},{"type":"Feature","id":3669276,"geometry":{"type":"LineString","coordinates":[[5.426665,52.176921],[5.426194,52.177259]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.501,"toNodeId":3875479,"speedInKilometersPerHour":120.0,"fromNodeId":3875478}},{"type":"Feature","id":3669277,"geometry":{"type":"LineString","coordinates":[[5.426194,52.177259],[5.425723,52.177597]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.501,"toNodeId":3875480,"speedInKilometersPerHour":120.0,"fromNodeId":3875479}},{"type":"Feature","id":3669278,"geometry":{"type":"LineString","coordinates":[[5.425723,52.177597],[5.425252,52.177934]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.501,"toNodeId":3875481,"speedInKilometersPerHour":120.0,"fromNodeId":3875480}},{"type":"Feature","id":3669279,"geometry":{"type":"LineString","coordinates":[[5.425252,52.177934],[5.424781,52.178272]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.501,"toNodeId":3875482,"speedInKilometersPerHour":120.0,"fromNodeId":3875481}},{"type":"Feature","id":3669280,"geometry":{"type":"LineString","coordinates":[[5.424781,52.178272],[5.42431,52.17861]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.501,"toNodeId":3875483,"speedInKilometersPerHour":120.0,"fromNodeId":3875482}},{"type":"Feature","id":3669281,"geometry":{"type":"LineString","coordinates":[[5.42431,52.17861],[5.423839,52.178948]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.501,"toNodeId":3875484,"speedInKilometersPerHour":120.0,"fromNodeId":3875483}},{"type":"Feature","id":3669282,"geometry":{"type":"LineString","coordinates":[[5.423839,52.178948],[5.423381,52.179276],[5.423368,52.179285]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.501,"toNodeId":3875485,"speedInKilometersPerHour":120.0,"fromNodeId":3875484}},{"type":"Feature","id":3669283,"geometry":{"type":"LineString","coordinates":[[5.423368,52.179285],[5.422898,52.179624]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.501,"toNodeId":3875486,"speedInKilometersPerHour":120.0,"fromNodeId":3875485}},{"type":"Feature","id":3669284,"geometry":{"type":"LineString","coordinates":[[5.422898,52.179624],[5.422429,52.179962]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.501,"toNodeId":3875487,"speedInKilometersPerHour":120.0,"fromNodeId":3875486}},{"type":"Feature","id":3669285,"geometry":{"type":"LineString","coordinates":[[5.422429,52.179962],[5.421959,52.180301]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":49.501,"toNodeId":3875488,"speedInKilometersPerHour":120.0,"fromNodeId":3875487}},{"type":"Feature","id":3675765,"geometry":{"type":"LineString","coordinates":[[5.42481,52.172878],[5.424593,52.1726],[5.424523,52.172503]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.103,"toNodeId":3878366,"speedInKilometersPerHour":100.0,"fromNodeId":599091}},{"type":"Feature","id":3675766,"geometry":{"type":"LineString","coordinates":[[5.424523,52.172503],[5.424343,52.172253],[5.424255,52.172123]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":46.103,"toNodeId":3878367,"speedInKilometersPerHour":100.0,"fromNodeId":3878366}},{"type":"Feature","id":3675773,"geometry":{"type":"LineString","coordinates":[[5.425323,52.173673],[5.425224,52.173466],[5.425101,52.173267]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.679,"toNodeId":3878373,"speedInKilometersPerHour":100.0,"fromNodeId":3878372}},{"type":"Feature","id":3675774,"geometry":{"type":"LineString","coordinates":[[5.425101,52.173267],[5.425051,52.173187],[5.42481,52.172878]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.679,"toNodeId":599091,"speedInKilometersPerHour":100.0,"fromNodeId":3878373}},{"type":"Feature","id":3675771,"geometry":{"type":"LineString","coordinates":[[5.425338,52.174526],[5.425378,52.174103],[5.425378,52.174098]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.679,"toNodeId":3878371,"speedInKilometersPerHour":100.0,"fromNodeId":599093}},{"type":"Feature","id":3675772,"geometry":{"type":"LineString","coordinates":[[5.425378,52.174098],[5.425385,52.173904],[5.425326,52.173679],[5.425323,52.173673]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.679,"toNodeId":3878372,"speedInKilometersPerHour":100.0,"fromNodeId":3878371}},{"type":"Feature","id":3684607,"geometry":{"type":"LineString","coordinates":[[5.42206,52.175152],[5.422059,52.175592]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.952,"toNodeId":3882053,"speedInKilometersPerHour":50.0,"fromNodeId":601546}},{"type":"Feature","id":3684608,"geometry":{"type":"LineString","coordinates":[[5.422059,52.175592],[5.422059,52.175766],[5.42206,52.176032]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.952,"toNodeId":3882054,"speedInKilometersPerHour":50.0,"fromNodeId":3882053}},{"type":"Feature","id":3684609,"geometry":{"type":"LineString","coordinates":[[5.42206,52.176032],[5.422062,52.176373],[5.422056,52.176472]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.952,"toNodeId":3882055,"speedInKilometersPerHour":50.0,"fromNodeId":3882054}},{"type":"Feature","id":3684614,"geometry":{"type":"LineString","coordinates":[[5.422056,52.176472],[5.422062,52.176373],[5.42206,52.176032]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.952,"toNodeId":3882059,"speedInKilometersPerHour":50.0,"fromNodeId":3882058}},{"type":"Feature","id":3684615,"geometry":{"type":"LineString","coordinates":[[5.42206,52.176032],[5.422059,52.175766],[5.422059,52.175592]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.952,"toNodeId":3882060,"speedInKilometersPerHour":50.0,"fromNodeId":3882059}},{"type":"Feature","id":3684616,"geometry":{"type":"LineString","coordinates":[[5.422059,52.175592],[5.42206,52.175152]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":48.952,"toNodeId":601546,"speedInKilometersPerHour":50.0,"fromNodeId":3882060}},{"type":"Feature","id":3684909,"geometry":{"type":"LineString","coordinates":[[5.421854,52.173817],[5.421967,52.173874],[5.422039,52.173943],[5.422042,52.174116]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":38.414,"toNodeId":3882193,"speedInKilometersPerHour":50.0,"fromNodeId":601607}},{"type":"Feature","id":3684910,"geometry":{"type":"LineString","coordinates":[[5.422042,52.174116],[5.422045,52.174305],[5.422048,52.174462]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":38.414,"toNodeId":3882194,"speedInKilometersPerHour":50.0,"fromNodeId":3882193}},{"type":"Feature","id":3684913,"geometry":{"type":"LineString","coordinates":[[5.42206,52.175152],[5.422054,52.174807]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":38.414,"toNodeId":3882196,"speedInKilometersPerHour":50.0,"fromNodeId":601546}},{"type":"Feature","id":3684914,"geometry":{"type":"LineString","coordinates":[[5.422054,52.174807],[5.422048,52.174462]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":38.414,"toNodeId":3882197,"speedInKilometersPerHour":50.0,"fromNodeId":3882196}},{"type":"Feature","id":3684915,"geometry":{"type":"LineString","coordinates":[[5.422048,52.174462],[5.422045,52.174305],[5.422042,52.174116]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":38.414,"toNodeId":3882198,"speedInKilometersPerHour":50.0,"fromNodeId":3882197}},{"type":"Feature","id":3684916,"geometry":{"type":"LineString","coordinates":[[5.422042,52.174116],[5.422039,52.173943],[5.421967,52.173874],[5.421854,52.173817]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":38.414,"toNodeId":601607,"speedInKilometersPerHour":50.0,"fromNodeId":3882198}},{"type":"Feature","id":3684921,"geometry":{"type":"LineString","coordinates":[[5.421867,52.173466],[5.421854,52.173817]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":39.066,"toNodeId":601607,"speedInKilometersPerHour":30.0,"fromNodeId":601609}},{"type":"Feature","id":3684922,"geometry":{"type":"LineString","coordinates":[[5.421854,52.173817],[5.421867,52.173466]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":39.066,"toNodeId":601609,"speedInKilometersPerHour":30.0,"fromNodeId":601607}},{"type":"Feature","id":3684911,"geometry":{"type":"LineString","coordinates":[[5.422048,52.174462],[5.422054,52.174807]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":38.414,"toNodeId":3882195,"speedInKilometersPerHour":50.0,"fromNodeId":3882194}},{"type":"Feature","id":3684912,"geometry":{"type":"LineString","coordinates":[[5.422054,52.174807],[5.42206,52.175152]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":38.414,"toNodeId":601546,"speedInKilometersPerHour":50.0,"fromNodeId":3882195}},{"type":"Feature","id":3685165,"geometry":{"type":"LineString","coordinates":[[5.421873,52.172724],[5.42187,52.173095]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":41.26,"toNodeId":3882329,"speedInKilometersPerHour":30.0,"fromNodeId":3882328}},{"type":"Feature","id":3685166,"geometry":{"type":"LineString","coordinates":[[5.42187,52.173095],[5.421867,52.173466]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":41.26,"toNodeId":601609,"speedInKilometersPerHour":30.0,"fromNodeId":3882329}},{"type":"Feature","id":3685167,"geometry":{"type":"LineString","coordinates":[[5.421867,52.173466],[5.42187,52.173095]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":41.26,"toNodeId":3882330,"speedInKilometersPerHour":30.0,"fromNodeId":601609}},{"type":"Feature","id":3685168,"geometry":{"type":"LineString","coordinates":[[5.42187,52.173095],[5.421873,52.172724]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":41.26,"toNodeId":3882331,"speedInKilometersPerHour":30.0,"fromNodeId":3882330}},{"type":"Feature","id":3686220,"geometry":{"type":"LineString","coordinates":[[5.42462,52.177269],[5.424733,52.176878]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":44.171,"toNodeId":3882838,"speedInKilometersPerHour":100.0,"fromNodeId":597012}},{"type":"Feature","id":3686221,"geometry":{"type":"LineString","coordinates":[[5.424733,52.176878],[5.424845,52.176487]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":44.171,"toNodeId":3882839,"speedInKilometersPerHour":100.0,"fromNodeId":3882838}},{"type":"Feature","id":3686216,"geometry":{"type":"LineString","coordinates":[[5.42252,52.18013],[5.42204,52.180435]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.267,"toNodeId":3882835,"speedInKilometersPerHour":100.0,"fromNodeId":596834}},{"type":"Feature","id":3686224,"geometry":{"type":"LineString","coordinates":[[5.425031,52.175702],[5.425134,52.17531]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":44.171,"toNodeId":3882842,"speedInKilometersPerHour":100.0,"fromNodeId":3882841}},{"type":"Feature","id":3686225,"geometry":{"type":"LineString","coordinates":[[5.425134,52.17531],[5.425236,52.174918]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":44.171,"toNodeId":3882843,"speedInKilometersPerHour":100.0,"fromNodeId":3882842}},{"type":"Feature","id":3686226,"geometry":{"type":"LineString","coordinates":[[5.425236,52.174918],[5.425338,52.174526]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":44.171,"toNodeId":599093,"speedInKilometersPerHour":100.0,"fromNodeId":3882843}},{"type":"Feature","id":3686217,"geometry":{"type":"LineString","coordinates":[[5.42204,52.180435],[5.42156,52.180741]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.267,"toNodeId":3882836,"speedInKilometersPerHour":100.0,"fromNodeId":3882835}},{"type":"Feature","id":3686222,"geometry":{"type":"LineString","coordinates":[[5.424845,52.176487],[5.42489,52.176331],[5.424929,52.176094]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":44.171,"toNodeId":3882840,"speedInKilometersPerHour":100.0,"fromNodeId":3882839}},{"type":"Feature","id":3686223,"geometry":{"type":"LineString","coordinates":[[5.424929,52.176094],[5.42493,52.17609],[5.425031,52.175702]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":44.171,"toNodeId":3882841,"speedInKilometersPerHour":100.0,"fromNodeId":3882840}},{"type":"Feature","id":6369279,"geometry":{"type":"LineString","coordinates":[[5.423044,52.181034],[5.423499,52.180712]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.43,"toNodeId":5442741,"speedInKilometersPerHour":50.0,"fromNodeId":5442740}},{"type":"Feature","id":6369280,"geometry":{"type":"LineString","coordinates":[[5.423499,52.180712],[5.423955,52.180391]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.43,"toNodeId":5442742,"speedInKilometersPerHour":50.0,"fromNodeId":5442741}},{"type":"Feature","id":6369281,"geometry":{"type":"LineString","coordinates":[[5.423955,52.180391],[5.424184,52.180229],[5.424419,52.180107],[5.424449,52.180094]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.43,"toNodeId":5442743,"speedInKilometersPerHour":50.0,"fromNodeId":5442742}},{"type":"Feature","id":6369282,"geometry":{"type":"LineString","coordinates":[[5.424449,52.180094],[5.424675,52.179996],[5.424941,52.179909],[5.42505,52.179885]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.43,"toNodeId":5442744,"speedInKilometersPerHour":50.0,"fromNodeId":5442743}},{"type":"Feature","id":6369283,"geometry":{"type":"LineString","coordinates":[[5.42505,52.179885],[5.425237,52.179844],[5.42572,52.179779]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.43,"toNodeId":1117050,"speedInKilometersPerHour":50.0,"fromNodeId":5442744}},{"type":"Feature","id":6369284,"geometry":{"type":"LineString","coordinates":[[5.42572,52.179779],[5.425237,52.179844],[5.42505,52.179885]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.43,"toNodeId":5442745,"speedInKilometersPerHour":50.0,"fromNodeId":1117050}},{"type":"Feature","id":6369285,"geometry":{"type":"LineString","coordinates":[[5.42505,52.179885],[5.424941,52.179909],[5.424675,52.179996],[5.424449,52.180094]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.43,"toNodeId":5442746,"speedInKilometersPerHour":50.0,"fromNodeId":5442745}},{"type":"Feature","id":6369286,"geometry":{"type":"LineString","coordinates":[[5.424449,52.180094],[5.424419,52.180107],[5.424184,52.180229],[5.423955,52.180391]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.43,"toNodeId":5442747,"speedInKilometersPerHour":50.0,"fromNodeId":5442746}},{"type":"Feature","id":6369287,"geometry":{"type":"LineString","coordinates":[[5.423955,52.180391],[5.423499,52.180712]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.43,"toNodeId":5442748,"speedInKilometersPerHour":50.0,"fromNodeId":5442747}},{"type":"Feature","id":6369288,"geometry":{"type":"LineString","coordinates":[[5.423499,52.180712],[5.423044,52.181034]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.43,"toNodeId":5442749,"speedInKilometersPerHour":50.0,"fromNodeId":5442748}},{"type":"Feature","id":6405115,"geometry":{"type":"LineString","coordinates":[[5.432927,52.180256],[5.432499,52.180435],[5.432473,52.180446]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":37.625,"toNodeId":5467882,"speedInKilometersPerHour":50.0,"fromNodeId":1121748}},{"type":"Feature","id":6405118,"geometry":{"type":"LineString","coordinates":[[5.431663,52.180894],[5.431594,52.180969],[5.431524,52.18108],[5.431477,52.18121]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":37.625,"toNodeId":1121749,"speedInKilometersPerHour":50.0,"fromNodeId":5467884}},{"type":"Feature","id":6405116,"geometry":{"type":"LineString","coordinates":[[5.432473,52.180446],[5.432129,52.180595],[5.432028,52.180645]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":37.625,"toNodeId":5467883,"speedInKilometersPerHour":50.0,"fromNodeId":5467882}},{"type":"Feature","id":6405117,"geometry":{"type":"LineString","coordinates":[[5.432028,52.180645],[5.431884,52.180717],[5.431712,52.18084],[5.431663,52.180894]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":37.625,"toNodeId":5467884,"speedInKilometersPerHour":50.0,"fromNodeId":5467883}},{"type":"Feature","id":6405120,"geometry":{"type":"LineString","coordinates":[[5.4335,52.180016],[5.432927,52.180256]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.431,"toNodeId":1121748,"speedInKilometersPerHour":50.0,"fromNodeId":5467885}},{"type":"Feature","id":6405165,"geometry":{"type":"LineString","coordinates":[[5.424756,52.181271],[5.425247,52.181191]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":34.732,"toNodeId":5467903,"speedInKilometersPerHour":30.0,"fromNodeId":1117049}},{"type":"Feature","id":6405166,"geometry":{"type":"LineString","coordinates":[[5.425247,52.181191],[5.425737,52.18111]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":34.732,"toNodeId":5467904,"speedInKilometersPerHour":30.0,"fromNodeId":5467903}},{"type":"Feature","id":6405167,"geometry":{"type":"LineString","coordinates":[[5.425737,52.18111],[5.426228,52.18103]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":34.732,"toNodeId":1121765,"speedInKilometersPerHour":30.0,"fromNodeId":5467904}},{"type":"Feature","id":6405168,"geometry":{"type":"LineString","coordinates":[[5.426228,52.18103],[5.425737,52.18111]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":34.732,"toNodeId":5467905,"speedInKilometersPerHour":30.0,"fromNodeId":1121765}},{"type":"Feature","id":6405169,"geometry":{"type":"LineString","coordinates":[[5.425737,52.18111],[5.425247,52.181191]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":34.732,"toNodeId":5467906,"speedInKilometersPerHour":30.0,"fromNodeId":5467905}},{"type":"Feature","id":6405170,"geometry":{"type":"LineString","coordinates":[[5.425247,52.181191],[5.424756,52.181271]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":34.732,"toNodeId":1117049,"speedInKilometersPerHour":30.0,"fromNodeId":5467906}},{"type":"Feature","id":6405177,"geometry":{"type":"LineString","coordinates":[[5.426726,52.180954],[5.426228,52.18103]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":35.069,"toNodeId":1121765,"speedInKilometersPerHour":30.0,"fromNodeId":5467910}},{"type":"Feature","id":6405178,"geometry":{"type":"LineString","coordinates":[[5.426228,52.18103],[5.426726,52.180954]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":35.069,"toNodeId":5467911,"speedInKilometersPerHour":30.0,"fromNodeId":1121765}},{"type":"Feature","id":6405179,"geometry":{"type":"LineString","coordinates":[[5.426726,52.180954],[5.427223,52.180878]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":35.069,"toNodeId":5467912,"speedInKilometersPerHour":30.0,"fromNodeId":5467911}},{"type":"Feature","id":6405180,"geometry":{"type":"LineString","coordinates":[[5.427223,52.180878],[5.42747,52.18084],[5.427719,52.180798]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":35.069,"toNodeId":1121766,"speedInKilometersPerHour":30.0,"fromNodeId":5467912}},{"type":"Feature","id":6405175,"geometry":{"type":"LineString","coordinates":[[5.427719,52.180798],[5.42747,52.18084],[5.427223,52.180878]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":35.069,"toNodeId":5467909,"speedInKilometersPerHour":30.0,"fromNodeId":1121766}},{"type":"Feature","id":6405183,"geometry":{"type":"LineString","coordinates":[[5.426228,52.18103],[5.426059,52.180613]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.824,"toNodeId":5467913,"speedInKilometersPerHour":50.0,"fromNodeId":1121765}},{"type":"Feature","id":6405184,"geometry":{"type":"LineString","coordinates":[[5.426059,52.180613],[5.425889,52.180196]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.824,"toNodeId":5467914,"speedInKilometersPerHour":50.0,"fromNodeId":5467913}},{"type":"Feature","id":6405176,"geometry":{"type":"LineString","coordinates":[[5.427223,52.180878],[5.426726,52.180954]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":35.069,"toNodeId":5467910,"speedInKilometersPerHour":30.0,"fromNodeId":5467909}},{"type":"Feature","id":6405181,"geometry":{"type":"LineString","coordinates":[[5.426316,52.181244],[5.426228,52.18103]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":24.561,"toNodeId":1121765,"speedInKilometersPerHour":50.0,"fromNodeId":1121767}},{"type":"Feature","id":6405182,"geometry":{"type":"LineString","coordinates":[[5.426228,52.18103],[5.426316,52.181244]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":24.561,"toNodeId":1121767,"speedInKilometersPerHour":50.0,"fromNodeId":1121765}},{"type":"Feature","id":6405185,"geometry":{"type":"LineString","coordinates":[[5.425889,52.180196],[5.42572,52.179779]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.824,"toNodeId":1117050,"speedInKilometersPerHour":50.0,"fromNodeId":5467914}},{"type":"Feature","id":6405186,"geometry":{"type":"LineString","coordinates":[[5.42572,52.179779],[5.425889,52.180196]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.824,"toNodeId":5467915,"speedInKilometersPerHour":50.0,"fromNodeId":1117050}},{"type":"Feature","id":6405187,"geometry":{"type":"LineString","coordinates":[[5.425889,52.180196],[5.426059,52.180613]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.824,"toNodeId":5467916,"speedInKilometersPerHour":50.0,"fromNodeId":5467915}},{"type":"Feature","id":6405188,"geometry":{"type":"LineString","coordinates":[[5.426059,52.180613],[5.426228,52.18103]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.824,"toNodeId":1121765,"speedInKilometersPerHour":50.0,"fromNodeId":5467916}},{"type":"Feature","id":6405219,"geometry":{"type":"LineString","coordinates":[[5.426411,52.179772],[5.426481,52.179771],[5.427101,52.179794]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.281,"toNodeId":5467932,"speedInKilometersPerHour":30.0,"fromNodeId":5467931}},{"type":"Feature","id":6405222,"geometry":{"type":"LineString","coordinates":[[5.428481,52.179846],[5.429171,52.179872]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.281,"toNodeId":5467935,"speedInKilometersPerHour":30.0,"fromNodeId":5467934}},{"type":"Feature","id":6405218,"geometry":{"type":"LineString","coordinates":[[5.42572,52.179779],[5.426411,52.179772]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.281,"toNodeId":5467931,"speedInKilometersPerHour":30.0,"fromNodeId":1117050}},{"type":"Feature","id":6405220,"geometry":{"type":"LineString","coordinates":[[5.427101,52.179794],[5.427791,52.17982]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.281,"toNodeId":5467933,"speedInKilometersPerHour":30.0,"fromNodeId":5467932}},{"type":"Feature","id":6405221,"geometry":{"type":"LineString","coordinates":[[5.427791,52.17982],[5.428481,52.179846]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.281,"toNodeId":5467934,"speedInKilometersPerHour":30.0,"fromNodeId":5467933}},{"type":"Feature","id":6405223,"geometry":{"type":"LineString","coordinates":[[5.429171,52.179872],[5.429861,52.179897]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.281,"toNodeId":5467936,"speedInKilometersPerHour":30.0,"fromNodeId":5467935}},{"type":"Feature","id":6405224,"geometry":{"type":"LineString","coordinates":[[5.429861,52.179897],[5.43036,52.179916],[5.430534,52.179965]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.281,"toNodeId":5467937,"speedInKilometersPerHour":30.0,"fromNodeId":5467936}},{"type":"Feature","id":6405225,"geometry":{"type":"LineString","coordinates":[[5.430534,52.179965],[5.430536,52.179966],[5.430629,52.18008],[5.430644,52.180176],[5.430639,52.180237],[5.430609,52.180374]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.281,"toNodeId":1121779,"speedInKilometersPerHour":30.0,"fromNodeId":5467937}},{"type":"Feature","id":6405226,"geometry":{"type":"LineString","coordinates":[[5.430609,52.180374],[5.430639,52.180237],[5.430644,52.180176],[5.430629,52.18008],[5.430536,52.179966],[5.430534,52.179965]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.281,"toNodeId":5467938,"speedInKilometersPerHour":30.0,"fromNodeId":1121779}},{"type":"Feature","id":6405227,"geometry":{"type":"LineString","coordinates":[[5.430534,52.179965],[5.43036,52.179916],[5.429861,52.179897]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.281,"toNodeId":5467939,"speedInKilometersPerHour":30.0,"fromNodeId":5467938}},{"type":"Feature","id":6405231,"geometry":{"type":"LineString","coordinates":[[5.427791,52.17982],[5.427101,52.179794]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.281,"toNodeId":5467943,"speedInKilometersPerHour":30.0,"fromNodeId":5467942}},{"type":"Feature","id":6405228,"geometry":{"type":"LineString","coordinates":[[5.429861,52.179897],[5.429171,52.179872]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.281,"toNodeId":5467940,"speedInKilometersPerHour":30.0,"fromNodeId":5467939}},{"type":"Feature","id":6405229,"geometry":{"type":"LineString","coordinates":[[5.429171,52.179872],[5.428481,52.179846]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.281,"toNodeId":5467941,"speedInKilometersPerHour":30.0,"fromNodeId":5467940}},{"type":"Feature","id":6405234,"geometry":{"type":"LineString","coordinates":[[5.430609,52.180374],[5.429931,52.180485]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.993,"toNodeId":1121780,"speedInKilometersPerHour":30.0,"fromNodeId":1121779}},{"type":"Feature","id":6405235,"geometry":{"type":"LineString","coordinates":[[5.429931,52.180485],[5.430609,52.180374]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.993,"toNodeId":1121779,"speedInKilometersPerHour":30.0,"fromNodeId":1121780}},{"type":"Feature","id":6405237,"geometry":{"type":"LineString","coordinates":[[5.431004,52.18128],[5.431042,52.181019],[5.431057,52.180851]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.913,"toNodeId":5467946,"speedInKilometersPerHour":30.0,"fromNodeId":5467945}},{"type":"Feature","id":6405230,"geometry":{"type":"LineString","coordinates":[[5.428481,52.179846],[5.427791,52.17982]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.281,"toNodeId":5467942,"speedInKilometersPerHour":30.0,"fromNodeId":5467941}},{"type":"Feature","id":6405232,"geometry":{"type":"LineString","coordinates":[[5.427101,52.179794],[5.426481,52.179771],[5.426411,52.179772]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.281,"toNodeId":5467944,"speedInKilometersPerHour":30.0,"fromNodeId":5467943}},{"type":"Feature","id":6405240,"geometry":{"type":"LineString","coordinates":[[5.429931,52.180485],[5.429378,52.180563]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":38.815,"toNodeId":5467948,"speedInKilometersPerHour":30.0,"fromNodeId":1121780}},{"type":"Feature","id":6405241,"geometry":{"type":"LineString","coordinates":[[5.429378,52.180563],[5.428825,52.180642]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":38.815,"toNodeId":5467949,"speedInKilometersPerHour":30.0,"fromNodeId":5467948}},{"type":"Feature","id":6405233,"geometry":{"type":"LineString","coordinates":[[5.426411,52.179772],[5.42572,52.179779]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.281,"toNodeId":1117050,"speedInKilometersPerHour":30.0,"fromNodeId":5467944}},{"type":"Feature","id":6405238,"geometry":{"type":"LineString","coordinates":[[5.431057,52.180851],[5.43107,52.18071],[5.431116,52.18045],[5.431117,52.180422]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.913,"toNodeId":5467947,"speedInKilometersPerHour":30.0,"fromNodeId":5467946}},{"type":"Feature","id":6405239,"geometry":{"type":"LineString","coordinates":[[5.431117,52.180422],[5.431123,52.180313],[5.430609,52.180374]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.913,"toNodeId":1121779,"speedInKilometersPerHour":30.0,"fromNodeId":5467947}},{"type":"Feature","id":6405242,"geometry":{"type":"LineString","coordinates":[[5.428825,52.180642],[5.428272,52.18072]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":38.815,"toNodeId":5467950,"speedInKilometersPerHour":30.0,"fromNodeId":5467949}},{"type":"Feature","id":6405246,"geometry":{"type":"LineString","coordinates":[[5.428825,52.180642],[5.429378,52.180563]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":38.815,"toNodeId":5467953,"speedInKilometersPerHour":30.0,"fromNodeId":5467952}},{"type":"Feature","id":6405243,"geometry":{"type":"LineString","coordinates":[[5.428272,52.18072],[5.427719,52.180798]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":38.815,"toNodeId":1121766,"speedInKilometersPerHour":30.0,"fromNodeId":5467950}},{"type":"Feature","id":6405244,"geometry":{"type":"LineString","coordinates":[[5.427719,52.180798],[5.428272,52.18072]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":38.815,"toNodeId":5467951,"speedInKilometersPerHour":30.0,"fromNodeId":1121766}},{"type":"Feature","id":6405245,"geometry":{"type":"LineString","coordinates":[[5.428272,52.18072],[5.428825,52.180642]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":38.815,"toNodeId":5467952,"speedInKilometersPerHour":30.0,"fromNodeId":5467951}},{"type":"Feature","id":6405247,"geometry":{"type":"LineString","coordinates":[[5.429378,52.180563],[5.429931,52.180485]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":38.815,"toNodeId":1121780,"speedInKilometersPerHour":30.0,"fromNodeId":5467953}},{"type":"Feature","id":6405252,"geometry":{"type":"LineString","coordinates":[[5.429875,52.180884],[5.429819,52.181284]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":44.599,"toNodeId":5467957,"speedInKilometersPerHour":30.0,"fromNodeId":5467956}},{"type":"Feature","id":6405249,"geometry":{"type":"LineString","coordinates":[[5.429819,52.181284],[5.429875,52.180884]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":44.599,"toNodeId":5467955,"speedInKilometersPerHour":30.0,"fromNodeId":5467954}},{"type":"Feature","id":6405250,"geometry":{"type":"LineString","coordinates":[[5.429875,52.180884],[5.429931,52.180485]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":44.599,"toNodeId":1121780,"speedInKilometersPerHour":30.0,"fromNodeId":5467955}},{"type":"Feature","id":6405251,"geometry":{"type":"LineString","coordinates":[[5.429931,52.180485],[5.429875,52.180884]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":44.599,"toNodeId":5467956,"speedInKilometersPerHour":30.0,"fromNodeId":1121780}},{"type":"Feature","id":6405256,"geometry":{"type":"LineString","coordinates":[[5.427839,52.181107],[5.427719,52.180798]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":35.349,"toNodeId":1121766,"speedInKilometersPerHour":30.0,"fromNodeId":5467959}},{"type":"Feature","id":6405257,"geometry":{"type":"LineString","coordinates":[[5.427719,52.180798],[5.427839,52.181107]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":35.349,"toNodeId":5467960,"speedInKilometersPerHour":30.0,"fromNodeId":1121766}},{"type":"Feature","id":6409986,"geometry":{"type":"LineString","coordinates":[[5.433145,52.172166],[5.432642,52.172405],[5.432593,52.172423]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.408,"toNodeId":5470746,"speedInKilometersPerHour":70.0,"fromNodeId":5470745}},{"type":"Feature","id":6409987,"geometry":{"type":"LineString","coordinates":[[5.432593,52.172423],[5.43231,52.172531],[5.431984,52.172625]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.408,"toNodeId":5470747,"speedInKilometersPerHour":70.0,"fromNodeId":5470746}},{"type":"Feature","id":6409988,"geometry":{"type":"LineString","coordinates":[[5.431984,52.172625],[5.431937,52.172638],[5.431495,52.172714],[5.431314,52.172729]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.408,"toNodeId":5470748,"speedInKilometersPerHour":70.0,"fromNodeId":5470747}},{"type":"Feature","id":6409989,"geometry":{"type":"LineString","coordinates":[[5.431314,52.172729],[5.431076,52.172749],[5.430624,52.172745]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.408,"toNodeId":5470749,"speedInKilometersPerHour":70.0,"fromNodeId":5470748}},{"type":"Feature","id":6409990,"geometry":{"type":"LineString","coordinates":[[5.430624,52.172745],[5.430595,52.172745],[5.430142,52.172695],[5.429948,52.172655]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.408,"toNodeId":5470750,"speedInKilometersPerHour":70.0,"fromNodeId":5470749}},{"type":"Feature","id":6409991,"geometry":{"type":"LineString","coordinates":[[5.429948,52.172655],[5.429864,52.172638],[5.429593,52.172562],[5.429338,52.172458]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.408,"toNodeId":5470751,"speedInKilometersPerHour":70.0,"fromNodeId":5470750}},{"type":"Feature","id":6409992,"geometry":{"type":"LineString","coordinates":[[5.429338,52.172458],[5.429275,52.172432],[5.429121,52.172352],[5.428904,52.172237],[5.428808,52.172184]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.408,"toNodeId":5470752,"speedInKilometersPerHour":70.0,"fromNodeId":5470751}},{"type":"Feature","id":6410877,"geometry":{"type":"LineString","coordinates":[[5.432878,52.18021],[5.433451,52.17997]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.431,"toNodeId":5471354,"speedInKilometersPerHour":50.0,"fromNodeId":1122767}},{"type":"Feature","id":6410880,"geometry":{"type":"LineString","coordinates":[[5.431435,52.181028],[5.43153,52.180908],[5.43167,52.180786],[5.431812,52.180696]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":45.451,"toNodeId":5471356,"speedInKilometersPerHour":50.0,"fromNodeId":5471355}},{"type":"Feature","id":6410881,"geometry":{"type":"LineString","coordinates":[[5.431812,52.180696],[5.431916,52.18063],[5.432222,52.180496],[5.432336,52.180446]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":45.451,"toNodeId":5471357,"speedInKilometersPerHour":50.0,"fromNodeId":5471356}},{"type":"Feature","id":6410882,"geometry":{"type":"LineString","coordinates":[[5.432336,52.180446],[5.432878,52.18021]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":45.451,"toNodeId":1122767,"speedInKilometersPerHour":50.0,"fromNodeId":5471357}},{"type":"Feature","id":7223061,"geometry":{"type":"LineString","coordinates":[[5.433661,52.180611],[5.43331,52.180338]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":38.697,"toNodeId":5985263,"speedInKilometersPerHour":100.0,"fromNodeId":5985262}},{"type":"Feature","id":7223062,"geometry":{"type":"LineString","coordinates":[[5.43331,52.180338],[5.432959,52.180065]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":38.697,"toNodeId":596832,"speedInKilometersPerHour":100.0,"fromNodeId":5985263}},{"type":"Feature","id":7223065,"geometry":{"type":"LineString","coordinates":[[5.433601,52.180439],[5.433382,52.180233],[5.433212,52.180084]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.631,"toNodeId":5985266,"speedInKilometersPerHour":100.0,"fromNodeId":5985265}},{"type":"Feature","id":7223066,"geometry":{"type":"LineString","coordinates":[[5.433212,52.180084],[5.432811,52.179734]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.631,"toNodeId":5985267,"speedInKilometersPerHour":100.0,"fromNodeId":5985266}},{"type":"Feature","id":7223067,"geometry":{"type":"LineString","coordinates":[[5.432811,52.179734],[5.43241,52.179384]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.631,"toNodeId":5985268,"speedInKilometersPerHour":100.0,"fromNodeId":5985267}},{"type":"Feature","id":7223068,"geometry":{"type":"LineString","coordinates":[[5.43241,52.179384],[5.432009,52.179034]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.631,"toNodeId":5985269,"speedInKilometersPerHour":100.0,"fromNodeId":5985268}},{"type":"Feature","id":7223069,"geometry":{"type":"LineString","coordinates":[[5.432009,52.179034],[5.431713,52.178776],[5.431609,52.178684]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.631,"toNodeId":5985270,"speedInKilometersPerHour":100.0,"fromNodeId":5985269}},{"type":"Feature","id":7223070,"geometry":{"type":"LineString","coordinates":[[5.431609,52.178684],[5.43121,52.178333]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.631,"toNodeId":5985271,"speedInKilometersPerHour":100.0,"fromNodeId":5985270}},{"type":"Feature","id":7223071,"geometry":{"type":"LineString","coordinates":[[5.43121,52.178333],[5.430812,52.177982]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.631,"toNodeId":5985272,"speedInKilometersPerHour":100.0,"fromNodeId":5985271}},{"type":"Feature","id":7223072,"geometry":{"type":"LineString","coordinates":[[5.430812,52.177982],[5.430413,52.177631]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.631,"toNodeId":5985273,"speedInKilometersPerHour":100.0,"fromNodeId":5985272}},{"type":"Feature","id":7223073,"geometry":{"type":"LineString","coordinates":[[5.430413,52.177631],[5.430015,52.17728]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.631,"toNodeId":597029,"speedInKilometersPerHour":100.0,"fromNodeId":5985273}},{"type":"Feature","id":7930097,"geometry":{"type":"LineString","coordinates":[[5.428925,52.172131],[5.428988,52.172165],[5.429345,52.172329],[5.42949,52.172383]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.846,"toNodeId":6349337,"speedInKilometersPerHour":70.0,"fromNodeId":6349336}},{"type":"Feature","id":7930098,"geometry":{"type":"LineString","coordinates":[[5.42949,52.172383],[5.429684,52.172455],[5.430015,52.172539],[5.430126,52.172557]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.846,"toNodeId":6349338,"speedInKilometersPerHour":70.0,"fromNodeId":6349337}},{"type":"Feature","id":7930099,"geometry":{"type":"LineString","coordinates":[[5.430126,52.172557],[5.430324,52.172588],[5.430683,52.172626],[5.430814,52.172629]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.846,"toNodeId":6349339,"speedInKilometersPerHour":70.0,"fromNodeId":6349338}},{"type":"Feature","id":7930100,"geometry":{"type":"LineString","coordinates":[[5.430814,52.172629],[5.431061,52.172634],[5.431426,52.172611],[5.431509,52.172599]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.846,"toNodeId":6349340,"speedInKilometersPerHour":70.0,"fromNodeId":6349339}},{"type":"Feature","id":7930101,"geometry":{"type":"LineString","coordinates":[[5.431509,52.172599],[5.431897,52.172543],[5.432171,52.172468]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.846,"toNodeId":6349341,"speedInKilometersPerHour":70.0,"fromNodeId":6349340}},{"type":"Feature","id":7930102,"geometry":{"type":"LineString","coordinates":[[5.432171,52.172468],[5.432286,52.172436],[5.432635,52.172298],[5.432759,52.172237]]},"properties":{"reverseSpeedInKilometersPerHour":0.0,"distanceInMeters":47.846,"toNodeId":6349342,"speedInKilometersPerHour":70.0,"fromNodeId":6349341}}]}
\ No newline at end of file
+{
+ "type": "FeatureCollection",
+ "features": [
+ {
+ "type": "Feature",
+ "id": 3666256,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.433595,
+ 52.173101
+ ],
+ [
+ 5.433133,
+ 52.173317
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666256,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873704,
+ "toNodeId": 596870,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 39.714
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666944,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42866,
+ 52.176369
+ ],
+ [
+ 5.428427,
+ 52.17617
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666944,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874089,
+ "toNodeId": 597005,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 27.238
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666076,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431601,
+ 52.178947
+ ],
+ [
+ 5.43111,
+ 52.178622
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666076,
+ "linkIdReversed": 0,
+ "fromNodeId": 596829,
+ "toNodeId": 3873575,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.372
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666077,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.43111,
+ 52.178622
+ ],
+ [
+ 5.431077,
+ 52.1786
+ ],
+ [
+ 5.430663,
+ 52.178413
+ ],
+ [
+ 5.430526,
+ 52.178363
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666077,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873575,
+ "toNodeId": 3873576,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.372
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666078,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430526,
+ 52.178363
+ ],
+ [
+ 5.430206,
+ 52.178246
+ ],
+ [
+ 5.429884,
+ 52.178165
+ ],
+ [
+ 5.429882,
+ 52.178165
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666078,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873576,
+ "toNodeId": 3873577,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.372
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666082,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427747,
+ 52.17797
+ ],
+ [
+ 5.427079,
+ 52.177963
+ ],
+ [
+ 5.427025,
+ 52.177964
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666082,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873580,
+ "toNodeId": 3873581,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.372
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666079,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429882,
+ 52.178165
+ ],
+ [
+ 5.429507,
+ 52.178104
+ ],
+ [
+ 5.42918,
+ 52.178064
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666079,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873577,
+ "toNodeId": 3873578,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.372
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666080,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42918,
+ 52.178064
+ ],
+ [
+ 5.429103,
+ 52.178055
+ ],
+ [
+ 5.428641,
+ 52.178005
+ ],
+ [
+ 5.428467,
+ 52.177998
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666080,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873578,
+ "toNodeId": 3873579,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.372
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666081,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428467,
+ 52.177998
+ ],
+ [
+ 5.427836,
+ 52.177971
+ ],
+ [
+ 5.427747,
+ 52.17797
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666081,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873579,
+ "toNodeId": 3873580,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.372
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666083,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427025,
+ 52.177964
+ ],
+ [
+ 5.426695,
+ 52.177971
+ ],
+ [
+ 5.426323,
+ 52.178013
+ ],
+ [
+ 5.42631,
+ 52.178015
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666083,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873581,
+ "toNodeId": 3873582,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.372
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666084,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42631,
+ 52.178015
+ ],
+ [
+ 5.42593,
+ 52.178082
+ ],
+ [
+ 5.425628,
+ 52.178159
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666084,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873582,
+ "toNodeId": 3873583,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.372
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666088,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431217,
+ 52.178606
+ ],
+ [
+ 5.430834,
+ 52.178264
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666088,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873585,
+ "toNodeId": 3873586,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.171
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666089,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430834,
+ 52.178264
+ ],
+ [
+ 5.43045,
+ 52.177923
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666089,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873586,
+ "toNodeId": 3873587,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.171
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666085,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425628,
+ 52.178159
+ ],
+ [
+ 5.425557,
+ 52.178177
+ ],
+ [
+ 5.425227,
+ 52.178303
+ ],
+ [
+ 5.425037,
+ 52.178409
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666085,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873583,
+ "toNodeId": 3873584,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.372
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666091,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430067,
+ 52.177581
+ ],
+ [
+ 5.429754,
+ 52.177303
+ ],
+ [
+ 5.429681,
+ 52.177241
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666091,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873588,
+ "toNodeId": 3873589,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.171
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666092,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429681,
+ 52.177241
+ ],
+ [
+ 5.429287,
+ 52.176904
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666092,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873589,
+ "toNodeId": 3873590,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.171
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666086,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425037,
+ 52.178409
+ ],
+ [
+ 5.424503,
+ 52.178707
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666086,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873584,
+ "toNodeId": 596830,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.372
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666087,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431601,
+ 52.178947
+ ],
+ [
+ 5.431217,
+ 52.178606
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666087,
+ "linkIdReversed": 0,
+ "fromNodeId": 596829,
+ "toNodeId": 3873585,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.171
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666095,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432619,
+ 52.179786
+ ],
+ [
+ 5.43228,
+ 52.179506
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666095,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873591,
+ "toNodeId": 3873592,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 38.814
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666096,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.43228,
+ 52.179506
+ ],
+ [
+ 5.43194,
+ 52.179227
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666096,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873592,
+ "toNodeId": 3873593,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 38.814
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666090,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.43045,
+ 52.177923
+ ],
+ [
+ 5.430067,
+ 52.177581
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666090,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873587,
+ "toNodeId": 3873588,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.171
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666093,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429287,
+ 52.176904
+ ],
+ [
+ 5.428893,
+ 52.176567
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666093,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873590,
+ "toNodeId": 596831,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.171
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666094,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432959,
+ 52.180065
+ ],
+ [
+ 5.432619,
+ 52.179786
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666094,
+ "linkIdReversed": 0,
+ "fromNodeId": 596832,
+ "toNodeId": 3873591,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 38.814
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666100,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426578,
+ 52.177202
+ ],
+ [
+ 5.426155,
+ 52.177499
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666100,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873595,
+ "toNodeId": 3873596,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 43.905
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666097,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.43194,
+ 52.179227
+ ],
+ [
+ 5.431601,
+ 52.178947
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666097,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873593,
+ "toNodeId": 596829,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 38.814
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666098,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427439,
+ 52.176617
+ ],
+ [
+ 5.427006,
+ 52.176908
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666098,
+ "linkIdReversed": 0,
+ "fromNodeId": 596833,
+ "toNodeId": 3873594,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 43.905
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666103,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42532,
+ 52.178098
+ ],
+ [
+ 5.424912,
+ 52.178403
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666103,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873598,
+ "toNodeId": 3873599,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 43.905
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666104,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424912,
+ 52.178403
+ ],
+ [
+ 5.424503,
+ 52.178707
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666104,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873599,
+ "toNodeId": 596830,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 43.905
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666099,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427006,
+ 52.176908
+ ],
+ [
+ 5.426791,
+ 52.177052
+ ],
+ [
+ 5.426578,
+ 52.177202
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666099,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873594,
+ "toNodeId": 3873595,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 43.905
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666101,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426155,
+ 52.177499
+ ],
+ [
+ 5.425733,
+ 52.177796
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666101,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873596,
+ "toNodeId": 3873597,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 43.905
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666107,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.4237,
+ 52.179271
+ ],
+ [
+ 5.423427,
+ 52.179462
+ ],
+ [
+ 5.423301,
+ 52.179555
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666107,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873601,
+ "toNodeId": 3873602,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 41.702
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666102,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425733,
+ 52.177796
+ ],
+ [
+ 5.425619,
+ 52.177876
+ ],
+ [
+ 5.42532,
+ 52.178098
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666102,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873597,
+ "toNodeId": 3873598,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 43.905
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666105,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424503,
+ 52.178707
+ ],
+ [
+ 5.424101,
+ 52.178989
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666105,
+ "linkIdReversed": 0,
+ "fromNodeId": 596830,
+ "toNodeId": 3873600,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 41.702
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666106,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424101,
+ 52.178989
+ ],
+ [
+ 5.4237,
+ 52.179271
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666106,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873600,
+ "toNodeId": 3873601,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 41.702
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666111,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427038,
+ 52.174931
+ ],
+ [
+ 5.426641,
+ 52.174561
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666111,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873604,
+ "toNodeId": 3873605,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.328
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666108,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.423301,
+ 52.179555
+ ],
+ [
+ 5.422911,
+ 52.179842
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666108,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873602,
+ "toNodeId": 3873603,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 41.702
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666109,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.422911,
+ 52.179842
+ ],
+ [
+ 5.42252,
+ 52.18013
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666109,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873603,
+ "toNodeId": 596834,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 41.702
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666114,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42591,
+ 52.173797
+ ],
+ [
+ 5.425682,
+ 52.173553
+ ],
+ [
+ 5.425613,
+ 52.173397
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666114,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873607,
+ "toNodeId": 596836,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.328
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666110,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427436,
+ 52.175301
+ ],
+ [
+ 5.427038,
+ 52.174931
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666110,
+ "linkIdReversed": 0,
+ "fromNodeId": 596835,
+ "toNodeId": 3873604,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.328
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666112,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426641,
+ 52.174561
+ ],
+ [
+ 5.426505,
+ 52.174435
+ ],
+ [
+ 5.426269,
+ 52.174182
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666112,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873605,
+ "toNodeId": 3873606,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.328
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666117,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426173,
+ 52.175001
+ ],
+ [
+ 5.425914,
+ 52.17506
+ ],
+ [
+ 5.425746,
+ 52.17514
+ ],
+ [
+ 5.425612,
+ 52.175228
+ ],
+ [
+ 5.425594,
+ 52.175247
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666117,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873609,
+ "toNodeId": 3873610,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.247
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666118,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425594,
+ 52.175247
+ ],
+ [
+ 5.425488,
+ 52.175358
+ ],
+ [
+ 5.425406,
+ 52.175503
+ ],
+ [
+ 5.425382,
+ 52.175662
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666118,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873610,
+ "toNodeId": 3873611,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.247
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666119,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425382,
+ 52.175662
+ ],
+ [
+ 5.425381,
+ 52.175671
+ ],
+ [
+ 5.425436,
+ 52.175835
+ ],
+ [
+ 5.425518,
+ 52.175953
+ ],
+ [
+ 5.425622,
+ 52.176044
+ ],
+ [
+ 5.425653,
+ 52.176063
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666119,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873611,
+ "toNodeId": 3873612,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.247
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666120,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425653,
+ 52.176063
+ ],
+ [
+ 5.425793,
+ 52.176147
+ ],
+ [
+ 5.426001,
+ 52.176224
+ ],
+ [
+ 5.426264,
+ 52.17627
+ ],
+ [
+ 5.426272,
+ 52.176271
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666120,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873612,
+ "toNodeId": 3873613,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.247
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666121,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426272,
+ 52.176271
+ ],
+ [
+ 5.426511,
+ 52.176289
+ ],
+ [
+ 5.426772,
+ 52.176262
+ ],
+ [
+ 5.426965,
+ 52.176204
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666121,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873613,
+ "toNodeId": 3873614,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.247
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666122,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426965,
+ 52.176204
+ ],
+ [
+ 5.427002,
+ 52.176193
+ ],
+ [
+ 5.427353,
+ 52.176022
+ ],
+ [
+ 5.427542,
+ 52.175941
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666122,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873614,
+ "toNodeId": 596837,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.247
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666123,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427756,
+ 52.175579
+ ],
+ [
+ 5.427436,
+ 52.175301
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666123,
+ "linkIdReversed": 0,
+ "fromNodeId": 596838,
+ "toNodeId": 596835,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 37.896
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666124,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427942,
+ 52.175461
+ ],
+ [
+ 5.427554,
+ 52.175117
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666124,
+ "linkIdReversed": 0,
+ "fromNodeId": 596839,
+ "toNodeId": 3873615,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.586
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666125,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427554,
+ 52.175117
+ ],
+ [
+ 5.427166,
+ 52.174773
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666125,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873615,
+ "toNodeId": 3873616,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.586
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666126,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427166,
+ 52.174773
+ ],
+ [
+ 5.426777,
+ 52.174429
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666126,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873616,
+ "toNodeId": 3873617,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.586
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666127,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426777,
+ 52.174429
+ ],
+ [
+ 5.426389,
+ 52.174085
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666127,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873617,
+ "toNodeId": 3873618,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.586
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666113,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426269,
+ 52.174182
+ ],
+ [
+ 5.42591,
+ 52.173797
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666113,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873606,
+ "toNodeId": 3873607,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.328
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666115,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427436,
+ 52.175301
+ ],
+ [
+ 5.427168,
+ 52.175137
+ ],
+ [
+ 5.426982,
+ 52.17506
+ ],
+ [
+ 5.426875,
+ 52.175031
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666115,
+ "linkIdReversed": 0,
+ "fromNodeId": 596835,
+ "toNodeId": 3873608,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.247
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666130,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425613,
+ 52.173397
+ ],
+ [
+ 5.425311,
+ 52.173067
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666130,
+ "linkIdReversed": 0,
+ "fromNodeId": 596836,
+ "toNodeId": 3873620,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 42.122
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666116,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426875,
+ 52.175031
+ ],
+ [
+ 5.426734,
+ 52.174992
+ ],
+ [
+ 5.426459,
+ 52.174976
+ ],
+ [
+ 5.426199,
+ 52.174995
+ ],
+ [
+ 5.426173,
+ 52.175001
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666116,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873608,
+ "toNodeId": 3873609,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.247
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666128,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426389,
+ 52.174085
+ ],
+ [
+ 5.426001,
+ 52.173741
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666128,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873618,
+ "toNodeId": 3873619,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.586
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666129,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426001,
+ 52.173741
+ ],
+ [
+ 5.425613,
+ 52.173397
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666129,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873619,
+ "toNodeId": 596836,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.586
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666131,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425311,
+ 52.173067
+ ],
+ [
+ 5.425306,
+ 52.173061
+ ],
+ [
+ 5.425025,
+ 52.172732
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666131,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873620,
+ "toNodeId": 3873621,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 42.122
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666132,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425025,
+ 52.172732
+ ],
+ [
+ 5.42488,
+ 52.172562
+ ],
+ [
+ 5.424755,
+ 52.172392
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666132,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873621,
+ "toNodeId": 3873622,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 42.122
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666204,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42861,
+ 52.176056
+ ],
+ [
+ 5.428276,
+ 52.175759
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666204,
+ "linkIdReversed": 0,
+ "fromNodeId": 596855,
+ "toNodeId": 3873665,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 40.223
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666205,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428276,
+ 52.175759
+ ],
+ [
+ 5.427942,
+ 52.175461
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666205,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873665,
+ "toNodeId": 596839,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 40.223
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666210,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424717,
+ 52.172107
+ ],
+ [
+ 5.425023,
+ 52.172495
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666210,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873669,
+ "toNodeId": 3873670,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.912
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666211,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425023,
+ 52.172495
+ ],
+ [
+ 5.425043,
+ 52.17252
+ ],
+ [
+ 5.425335,
+ 52.17288
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666211,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873670,
+ "toNodeId": 3873671,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.912
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666214,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426059,
+ 52.173617
+ ],
+ [
+ 5.426461,
+ 52.173969
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666214,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873673,
+ "toNodeId": 3873674,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.912
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666212,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425335,
+ 52.17288
+ ],
+ [
+ 5.425417,
+ 52.172981
+ ],
+ [
+ 5.425689,
+ 52.173251
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666212,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873671,
+ "toNodeId": 3873672,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.912
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666217,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427263,
+ 52.174675
+ ],
+ [
+ 5.427665,
+ 52.175028
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666217,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873676,
+ "toNodeId": 3873677,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.912
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666213,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425689,
+ 52.173251
+ ],
+ [
+ 5.426053,
+ 52.173611
+ ],
+ [
+ 5.426059,
+ 52.173617
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666213,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873672,
+ "toNodeId": 3873673,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.912
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666215,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426461,
+ 52.173969
+ ],
+ [
+ 5.426862,
+ 52.174322
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666215,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873674,
+ "toNodeId": 3873675,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.912
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666220,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428066,
+ 52.175381
+ ],
+ [
+ 5.428403,
+ 52.175677
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666220,
+ "linkIdReversed": 0,
+ "fromNodeId": 596857,
+ "toNodeId": 3873678,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 40.157
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666216,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426862,
+ 52.174322
+ ],
+ [
+ 5.427263,
+ 52.174675
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666216,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873675,
+ "toNodeId": 3873676,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.912
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666218,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427665,
+ 52.175028
+ ],
+ [
+ 5.428066,
+ 52.175381
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666218,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873677,
+ "toNodeId": 596857,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.912
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666221,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428403,
+ 52.175677
+ ],
+ [
+ 5.42874,
+ 52.175972
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666221,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873678,
+ "toNodeId": 596859,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 40.157
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666225,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425348,
+ 52.172509
+ ],
+ [
+ 5.425448,
+ 52.172604
+ ],
+ [
+ 5.42564,
+ 52.17276
+ ],
+ [
+ 5.42576,
+ 52.172837
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666225,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873680,
+ "toNodeId": 3873681,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.237
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666226,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42576,
+ 52.172837
+ ],
+ [
+ 5.425812,
+ 52.172871
+ ],
+ [
+ 5.425988,
+ 52.172958
+ ],
+ [
+ 5.426297,
+ 52.173088
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666226,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873681,
+ "toNodeId": 3873682,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.237
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666222,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42496,
+ 52.172169
+ ],
+ [
+ 5.425194,
+ 52.172501
+ ],
+ [
+ 5.42524,
+ 52.172555
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666222,
+ "linkIdReversed": 0,
+ "fromNodeId": 596860,
+ "toNodeId": 3873679,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.076
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666223,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42524,
+ 52.172555
+ ],
+ [
+ 5.425388,
+ 52.172729
+ ],
+ [
+ 5.425577,
+ 52.172924
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666223,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873679,
+ "toNodeId": 596861,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.076
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666229,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427556,
+ 52.173366
+ ],
+ [
+ 5.427933,
+ 52.173389
+ ],
+ [
+ 5.42823,
+ 52.173395
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666229,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873684,
+ "toNodeId": 3873685,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.237
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666230,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42823,
+ 52.173395
+ ],
+ [
+ 5.428576,
+ 52.173401
+ ],
+ [
+ 5.428905,
+ 52.173399
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666230,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873685,
+ "toNodeId": 3873686,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.237
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666224,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42496,
+ 52.172169
+ ],
+ [
+ 5.425298,
+ 52.172462
+ ],
+ [
+ 5.425348,
+ 52.172509
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666224,
+ "linkIdReversed": 0,
+ "fromNodeId": 596860,
+ "toNodeId": 3873680,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.237
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666227,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426297,
+ 52.173088
+ ],
+ [
+ 5.426332,
+ 52.173103
+ ],
+ [
+ 5.426621,
+ 52.173206
+ ],
+ [
+ 5.426899,
+ 52.173274
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666227,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873682,
+ "toNodeId": 3873683,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.237
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666233,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430257,
+ 52.173387
+ ],
+ [
+ 5.430814,
+ 52.17337
+ ],
+ [
+ 5.430931,
+ 52.173363
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666233,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873688,
+ "toNodeId": 3873689,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.237
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666234,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430931,
+ 52.173363
+ ],
+ [
+ 5.431254,
+ 52.173344
+ ],
+ [
+ 5.4316,
+ 52.173307
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666234,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873689,
+ "toNodeId": 3873690,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.237
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666228,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426899,
+ 52.173274
+ ],
+ [
+ 5.426995,
+ 52.173298
+ ],
+ [
+ 5.427433,
+ 52.173359
+ ],
+ [
+ 5.427556,
+ 52.173366
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666228,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873683,
+ "toNodeId": 3873684,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.237
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666231,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428905,
+ 52.173399
+ ],
+ [
+ 5.429581,
+ 52.173394
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666231,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873686,
+ "toNodeId": 3873687,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.237
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666232,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429581,
+ 52.173394
+ ],
+ [
+ 5.430187,
+ 52.173389
+ ],
+ [
+ 5.430257,
+ 52.173387
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666232,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873687,
+ "toNodeId": 3873688,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.237
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666235,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.4316,
+ 52.173307
+ ],
+ [
+ 5.431607,
+ 52.173306
+ ],
+ [
+ 5.431988,
+ 52.173225
+ ],
+ [
+ 5.432235,
+ 52.173164
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666235,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873690,
+ "toNodeId": 3873691,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.237
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666240,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425577,
+ 52.172924
+ ],
+ [
+ 5.425919,
+ 52.173229
+ ],
+ [
+ 5.425982,
+ 52.173288
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666240,
+ "linkIdReversed": 0,
+ "fromNodeId": 596861,
+ "toNodeId": 3873694,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.058
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666241,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425982,
+ 52.173288
+ ],
+ [
+ 5.426368,
+ 52.173653
+ ],
+ [
+ 5.426373,
+ 52.173657
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666241,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873694,
+ "toNodeId": 3873695,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.058
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666236,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432235,
+ 52.173164
+ ],
+ [
+ 5.432294,
+ 52.173149
+ ],
+ [
+ 5.432825,
+ 52.172962
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666236,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873691,
+ "toNodeId": 596862,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.237
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666244,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427197,
+ 52.174379
+ ],
+ [
+ 5.427609,
+ 52.17474
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666244,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873697,
+ "toNodeId": 596864,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.058
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666245,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432825,
+ 52.172962
+ ],
+ [
+ 5.433299,
+ 52.172748
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666245,
+ "linkIdReversed": 0,
+ "fromNodeId": 596862,
+ "toNodeId": 3873698,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 40.191
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666242,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426373,
+ 52.173657
+ ],
+ [
+ 5.426785,
+ 52.174018
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666242,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873695,
+ "toNodeId": 3873696,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.058
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666243,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426785,
+ 52.174018
+ ],
+ [
+ 5.427197,
+ 52.174379
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666243,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873696,
+ "toNodeId": 3873697,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.058
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667013,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.423609,
+ 52.17878
+ ],
+ [
+ 5.423952,
+ 52.178426
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667013,
+ "linkIdReversed": 0,
+ "fromNodeId": 597011,
+ "toNodeId": 3874148,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.877
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667134,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427609,
+ 52.17474
+ ],
+ [
+ 5.427911,
+ 52.175013
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667134,
+ "linkIdReversed": 0,
+ "fromNodeId": 596864,
+ "toNodeId": 3874250,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 36.71
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666943,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428893,
+ 52.176567
+ ],
+ [
+ 5.42866,
+ 52.176369
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666943,
+ "linkIdReversed": 0,
+ "fromNodeId": 596831,
+ "toNodeId": 3874089,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 27.238
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666945,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427439,
+ 52.176617
+ ],
+ [
+ 5.427327,
+ 52.176769
+ ],
+ [
+ 5.42723,
+ 52.176865
+ ],
+ [
+ 5.427172,
+ 52.176952
+ ],
+ [
+ 5.427161,
+ 52.176984
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666945,
+ "linkIdReversed": 0,
+ "fromNodeId": 596833,
+ "toNodeId": 3874090,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.233
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666946,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427161,
+ 52.176984
+ ],
+ [
+ 5.427141,
+ 52.17704
+ ],
+ [
+ 5.427121,
+ 52.177132
+ ],
+ [
+ 5.427129,
+ 52.177223
+ ],
+ [
+ 5.42715,
+ 52.177307
+ ],
+ [
+ 5.427181,
+ 52.177376
+ ],
+ [
+ 5.427187,
+ 52.177384
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666946,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874090,
+ "toNodeId": 3874091,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.233
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666950,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428841,
+ 52.177664
+ ],
+ [
+ 5.428947,
+ 52.177605
+ ],
+ [
+ 5.429062,
+ 52.177505
+ ],
+ [
+ 5.429166,
+ 52.177399
+ ],
+ [
+ 5.429198,
+ 52.17733
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666950,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874094,
+ "toNodeId": 3874095,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.233
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666947,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427187,
+ 52.177384
+ ],
+ [
+ 5.427232,
+ 52.177437
+ ],
+ [
+ 5.427304,
+ 52.177521
+ ],
+ [
+ 5.427391,
+ 52.177582
+ ],
+ [
+ 5.427467,
+ 52.177624
+ ],
+ [
+ 5.427556,
+ 52.17767
+ ],
+ [
+ 5.427604,
+ 52.177691
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666947,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874091,
+ "toNodeId": 3874092,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.233
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666948,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427604,
+ 52.177691
+ ],
+ [
+ 5.427657,
+ 52.177715
+ ],
+ [
+ 5.427782,
+ 52.177753
+ ],
+ [
+ 5.428007,
+ 52.177795
+ ],
+ [
+ 5.428181,
+ 52.177799
+ ],
+ [
+ 5.428227,
+ 52.177798
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666948,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874092,
+ "toNodeId": 3874093,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.233
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666953,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428427,
+ 52.17617
+ ],
+ [
+ 5.428091,
+ 52.175875
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666953,
+ "linkIdReversed": 0,
+ "fromNodeId": 597005,
+ "toNodeId": 3874097,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 40.098
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666949,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428227,
+ 52.177798
+ ],
+ [
+ 5.428348,
+ 52.177795
+ ],
+ [
+ 5.428487,
+ 52.177773
+ ],
+ [
+ 5.428694,
+ 52.177719
+ ],
+ [
+ 5.428826,
+ 52.177673
+ ],
+ [
+ 5.428841,
+ 52.177664
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666949,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874093,
+ "toNodeId": 3874094,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.233
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666951,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429198,
+ 52.17733
+ ],
+ [
+ 5.429225,
+ 52.177269
+ ],
+ [
+ 5.42924,
+ 52.177147
+ ],
+ [
+ 5.429227,
+ 52.177032
+ ],
+ [
+ 5.429199,
+ 52.176933
+ ],
+ [
+ 5.429195,
+ 52.176928
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666951,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874095,
+ "toNodeId": 3874096,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.233
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666956,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428755,
+ 52.175753
+ ],
+ [
+ 5.428317,
+ 52.176041
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666956,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874098,
+ "toNodeId": 3874099,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 43.907
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666952,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429195,
+ 52.176928
+ ],
+ [
+ 5.429106,
+ 52.1768
+ ],
+ [
+ 5.428893,
+ 52.176567
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666952,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874096,
+ "toNodeId": 596831,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.233
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666954,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428091,
+ 52.175875
+ ],
+ [
+ 5.427756,
+ 52.175579
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666954,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874097,
+ "toNodeId": 596838,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 40.098
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666959,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429265,
+ 52.176201
+ ],
+ [
+ 5.429654,
+ 52.176545
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666959,
+ "linkIdReversed": 0,
+ "fromNodeId": 597007,
+ "toNodeId": 3874101,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.609
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666955,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429194,
+ 52.175465
+ ],
+ [
+ 5.428755,
+ 52.175753
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666955,
+ "linkIdReversed": 0,
+ "fromNodeId": 597006,
+ "toNodeId": 3874098,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 43.907
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666957,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428317,
+ 52.176041
+ ],
+ [
+ 5.427878,
+ 52.176329
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666957,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874099,
+ "toNodeId": 3874100,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 43.907
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666962,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430433,
+ 52.177232
+ ],
+ [
+ 5.430824,
+ 52.177575
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666962,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874103,
+ "toNodeId": 3874104,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.609
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666958,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427878,
+ 52.176329
+ ],
+ [
+ 5.427439,
+ 52.176617
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666958,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874100,
+ "toNodeId": 596833,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 43.907
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666960,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429654,
+ 52.176545
+ ],
+ [
+ 5.430043,
+ 52.176889
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666960,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874101,
+ "toNodeId": 3874102,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.609
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666961,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430043,
+ 52.176889
+ ],
+ [
+ 5.430279,
+ 52.177097
+ ],
+ [
+ 5.430433,
+ 52.177232
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666961,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874102,
+ "toNodeId": 3874103,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.609
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666966,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429265,
+ 52.176201
+ ],
+ [
+ 5.429613,
+ 52.176346
+ ],
+ [
+ 5.429734,
+ 52.176395
+ ],
+ [
+ 5.429861,
+ 52.176427
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666966,
+ "linkIdReversed": 0,
+ "fromNodeId": 597007,
+ "toNodeId": 3874107,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.088
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666967,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429861,
+ 52.176427
+ ],
+ [
+ 5.4299,
+ 52.176437
+ ],
+ [
+ 5.430044,
+ 52.176464
+ ],
+ [
+ 5.430235,
+ 52.176476
+ ],
+ [
+ 5.430438,
+ 52.176464
+ ],
+ [
+ 5.430548,
+ 52.176444
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666967,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874107,
+ "toNodeId": 3874108,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.088
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666963,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430824,
+ 52.177575
+ ],
+ [
+ 5.431216,
+ 52.177918
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666963,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874104,
+ "toNodeId": 3874105,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.609
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666964,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431216,
+ 52.177918
+ ],
+ [
+ 5.431607,
+ 52.178261
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666964,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874105,
+ "toNodeId": 3874106,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.609
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666970,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431298,
+ 52.175788
+ ],
+ [
+ 5.431298,
+ 52.175716
+ ],
+ [
+ 5.431243,
+ 52.175579
+ ],
+ [
+ 5.431151,
+ 52.175453
+ ],
+ [
+ 5.431058,
+ 52.175395
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666970,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874110,
+ "toNodeId": 3874111,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.088
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666971,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431058,
+ 52.175395
+ ],
+ [
+ 5.430968,
+ 52.175339
+ ],
+ [
+ 5.430759,
+ 52.175243
+ ],
+ [
+ 5.430482,
+ 52.175175
+ ],
+ [
+ 5.430466,
+ 52.175174
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666971,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874111,
+ "toNodeId": 3874112,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.088
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666972,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430466,
+ 52.175174
+ ],
+ [
+ 5.430201,
+ 52.175163
+ ],
+ [
+ 5.429923,
+ 52.17519
+ ],
+ [
+ 5.42978,
+ 52.175228
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666972,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874112,
+ "toNodeId": 3874113,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.088
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666965,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431607,
+ 52.178261
+ ],
+ [
+ 5.431998,
+ 52.178604
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666965,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874106,
+ "toNodeId": 597008,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.609
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666968,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430548,
+ 52.176444
+ ],
+ [
+ 5.430564,
+ 52.176441
+ ],
+ [
+ 5.430718,
+ 52.176399
+ ],
+ [
+ 5.430852,
+ 52.17635
+ ],
+ [
+ 5.430956,
+ 52.176308
+ ],
+ [
+ 5.431067,
+ 52.176231
+ ],
+ [
+ 5.431104,
+ 52.176194
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666968,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874108,
+ "toNodeId": 3874109,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.088
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666975,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.433133,
+ 52.173317
+ ],
+ [
+ 5.43269,
+ 52.173648
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666975,
+ "linkIdReversed": 0,
+ "fromNodeId": 596870,
+ "toNodeId": 3874114,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.707
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666976,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.43269,
+ 52.173648
+ ],
+ [
+ 5.432576,
+ 52.173733
+ ],
+ [
+ 5.432343,
+ 52.173916
+ ],
+ [
+ 5.432279,
+ 52.173993
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666976,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874114,
+ "toNodeId": 3874115,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.707
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666977,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432279,
+ 52.173993
+ ],
+ [
+ 5.432025,
+ 52.174301
+ ],
+ [
+ 5.431992,
+ 52.174382
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666977,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874115,
+ "toNodeId": 3874116,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.707
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666969,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431104,
+ 52.176194
+ ],
+ [
+ 5.431154,
+ 52.176144
+ ],
+ [
+ 5.431248,
+ 52.176025
+ ],
+ [
+ 5.431298,
+ 52.175888
+ ],
+ [
+ 5.431298,
+ 52.175788
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666969,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874109,
+ "toNodeId": 3874110,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.088
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666973,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42978,
+ 52.175228
+ ],
+ [
+ 5.429733,
+ 52.17524
+ ],
+ [
+ 5.429437,
+ 52.175358
+ ],
+ [
+ 5.429194,
+ 52.175465
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666973,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874113,
+ "toNodeId": 597006,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.088
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666980,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431755,
+ 52.175225
+ ],
+ [
+ 5.431699,
+ 52.175468
+ ],
+ [
+ 5.431674,
+ 52.175651
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666980,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874118,
+ "toNodeId": 3874119,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.707
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666981,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431674,
+ 52.175651
+ ],
+ [
+ 5.431614,
+ 52.176078
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666981,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874119,
+ "toNodeId": 3874120,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.707
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666974,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428897,
+ 52.175877
+ ],
+ [
+ 5.429265,
+ 52.176201
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666974,
+ "linkIdReversed": 0,
+ "fromNodeId": 597009,
+ "toNodeId": 597007,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 43.971
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666978,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431992,
+ 52.174382
+ ],
+ [
+ 5.431855,
+ 52.174713
+ ],
+ [
+ 5.431839,
+ 52.174799
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666978,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874116,
+ "toNodeId": 3874117,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.707
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666979,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431839,
+ 52.174799
+ ],
+ [
+ 5.431774,
+ 52.17514
+ ],
+ [
+ 5.431755,
+ 52.175225
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666979,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874117,
+ "toNodeId": 3874118,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.707
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666985,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431527,
+ 52.177362
+ ],
+ [
+ 5.431572,
+ 52.177769
+ ],
+ [
+ 5.431579,
+ 52.17779
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666985,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874123,
+ "toNodeId": 3874124,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.707
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666982,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431614,
+ 52.176078
+ ],
+ [
+ 5.431576,
+ 52.17635
+ ],
+ [
+ 5.431564,
+ 52.176505
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666982,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874120,
+ "toNodeId": 3874121,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.707
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666983,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431564,
+ 52.176505
+ ],
+ [
+ 5.431532,
+ 52.176934
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666983,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874121,
+ "toNodeId": 3874122,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.707
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666988,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431998,
+ 52.178604
+ ],
+ [
+ 5.432367,
+ 52.178929
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666988,
+ "linkIdReversed": 0,
+ "fromNodeId": 597008,
+ "toNodeId": 3874126,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.067
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666989,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432367,
+ 52.178929
+ ],
+ [
+ 5.432737,
+ 52.179253
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666989,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874126,
+ "toNodeId": 3874127,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.067
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666984,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431532,
+ 52.176934
+ ],
+ [
+ 5.431525,
+ 52.177029
+ ],
+ [
+ 5.431526,
+ 52.177353
+ ],
+ [
+ 5.431527,
+ 52.177362
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666984,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874122,
+ "toNodeId": 3874123,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.707
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666986,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431579,
+ 52.17779
+ ],
+ [
+ 5.431678,
+ 52.178078
+ ],
+ [
+ 5.431741,
+ 52.178206
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666986,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874124,
+ "toNodeId": 3874125,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.707
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666987,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431741,
+ 52.178206
+ ],
+ [
+ 5.431812,
+ 52.178352
+ ],
+ [
+ 5.431998,
+ 52.178604
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666987,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874125,
+ "toNodeId": 597008,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.707
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666990,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432737,
+ 52.179253
+ ],
+ [
+ 5.43284,
+ 52.179344
+ ],
+ [
+ 5.433105,
+ 52.179578
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666990,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874127,
+ "toNodeId": 3874128,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.067
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666991,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.433105,
+ 52.179578
+ ],
+ [
+ 5.433461,
+ 52.179893
+ ],
+ [
+ 5.433472,
+ 52.179903
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666991,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874128,
+ "toNodeId": 3874129,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.067
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666997,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.43262,
+ 52.173571
+ ],
+ [
+ 5.432107,
+ 52.173825
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666997,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874133,
+ "toNodeId": 3874134,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.066
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667000,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431105,
+ 52.174351
+ ],
+ [
+ 5.43086,
+ 52.17448
+ ],
+ [
+ 5.430611,
+ 52.174619
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667000,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874136,
+ "toNodeId": 3874137,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.066
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666996,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.433133,
+ 52.173317
+ ],
+ [
+ 5.43262,
+ 52.173571
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666996,
+ "linkIdReversed": 0,
+ "fromNodeId": 596870,
+ "toNodeId": 3874133,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.066
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666998,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432107,
+ 52.173825
+ ],
+ [
+ 5.431993,
+ 52.173882
+ ],
+ [
+ 5.431605,
+ 52.174087
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666998,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874134,
+ "toNodeId": 3874135,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.066
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666999,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431605,
+ 52.174087
+ ],
+ [
+ 5.431105,
+ 52.174351
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666999,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874135,
+ "toNodeId": 3874136,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.066
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667001,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430611,
+ 52.174619
+ ],
+ [
+ 5.430122,
+ 52.17489
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667001,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874137,
+ "toNodeId": 3874138,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.066
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667005,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424063,
+ 52.178474
+ ],
+ [
+ 5.424496,
+ 52.178156
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667005,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874140,
+ "toNodeId": 3874141,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.115
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667006,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424496,
+ 52.178156
+ ],
+ [
+ 5.424671,
+ 52.178028
+ ],
+ [
+ 5.424924,
+ 52.177836
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667006,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874141,
+ "toNodeId": 3874142,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.115
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667002,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430122,
+ 52.17489
+ ],
+ [
+ 5.42998,
+ 52.174969
+ ],
+ [
+ 5.429654,
+ 52.175175
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667002,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874138,
+ "toNodeId": 3874139,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.066
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667003,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429654,
+ 52.175175
+ ],
+ [
+ 5.429194,
+ 52.175465
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667003,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874139,
+ "toNodeId": 597006,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.066
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667009,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42578,
+ 52.177195
+ ],
+ [
+ 5.426212,
+ 52.176877
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667009,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874144,
+ "toNodeId": 3874145,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.115
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667010,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426212,
+ 52.176877
+ ],
+ [
+ 5.426514,
+ 52.176655
+ ],
+ [
+ 5.426648,
+ 52.176562
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667010,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874145,
+ "toNodeId": 3874146,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.115
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667004,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.423609,
+ 52.17878
+ ],
+ [
+ 5.423953,
+ 52.178555
+ ],
+ [
+ 5.424063,
+ 52.178474
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667004,
+ "linkIdReversed": 0,
+ "fromNodeId": 597011,
+ "toNodeId": 3874140,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.115
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667007,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424924,
+ 52.177836
+ ],
+ [
+ 5.425349,
+ 52.177514
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667007,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874142,
+ "toNodeId": 3874143,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.115
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667008,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425349,
+ 52.177514
+ ],
+ [
+ 5.425446,
+ 52.177441
+ ],
+ [
+ 5.42578,
+ 52.177195
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667008,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874143,
+ "toNodeId": 3874144,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.115
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667014,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.423952,
+ 52.178426
+ ],
+ [
+ 5.42422,
+ 52.17815
+ ],
+ [
+ 5.424268,
+ 52.178064
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667014,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874148,
+ "toNodeId": 3874149,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.877
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667011,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426648,
+ 52.176562
+ ],
+ [
+ 5.427095,
+ 52.176251
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667011,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874146,
+ "toNodeId": 3874147,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.115
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667012,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427095,
+ 52.176251
+ ],
+ [
+ 5.427542,
+ 52.175941
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667012,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874147,
+ "toNodeId": 596837,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.115
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667015,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424268,
+ 52.178064
+ ],
+ [
+ 5.42441,
+ 52.177811
+ ],
+ [
+ 5.424465,
+ 52.17767
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667015,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874149,
+ "toNodeId": 3874150,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.877
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667020,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.421906,
+ 52.179994
+ ],
+ [
+ 5.422327,
+ 52.179688
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667020,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874153,
+ "toNodeId": 3874154,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.597
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667021,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.422327,
+ 52.179688
+ ],
+ [
+ 5.422725,
+ 52.179398
+ ],
+ [
+ 5.422748,
+ 52.179382
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667021,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874154,
+ "toNodeId": 3874155,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.597
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667016,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424465,
+ 52.17767
+ ],
+ [
+ 5.42462,
+ 52.177269
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667016,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874150,
+ "toNodeId": 597012,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.877
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667024,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427542,
+ 52.175941
+ ],
+ [
+ 5.427981,
+ 52.175668
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667024,
+ "linkIdReversed": 0,
+ "fromNodeId": 596837,
+ "toNodeId": 3874157,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 42.732
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667025,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427981,
+ 52.175668
+ ],
+ [
+ 5.428419,
+ 52.175394
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667025,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874157,
+ "toNodeId": 3874158,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 42.732
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667027,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428858,
+ 52.175121
+ ],
+ [
+ 5.429296,
+ 52.174847
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667027,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874159,
+ "toNodeId": 597014,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 42.732
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667022,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.422748,
+ 52.179382
+ ],
+ [
+ 5.423178,
+ 52.179081
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667022,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874155,
+ "toNodeId": 3874156,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.597
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667023,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.423178,
+ 52.179081
+ ],
+ [
+ 5.423609,
+ 52.17878
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667023,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874156,
+ "toNodeId": 597011,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.597
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667034,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.421688,
+ 52.180337
+ ],
+ [
+ 5.42216,
+ 52.179998
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667034,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874165,
+ "toNodeId": 3874166,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667035,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42216,
+ 52.179998
+ ],
+ [
+ 5.422633,
+ 52.17966
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667035,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874166,
+ "toNodeId": 3874167,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667036,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.422633,
+ 52.17966
+ ],
+ [
+ 5.423105,
+ 52.179322
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667036,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874167,
+ "toNodeId": 3874168,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667037,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.423105,
+ 52.179322
+ ],
+ [
+ 5.423266,
+ 52.179207
+ ],
+ [
+ 5.423577,
+ 52.178984
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667037,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874168,
+ "toNodeId": 3874169,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667038,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.423577,
+ 52.178984
+ ],
+ [
+ 5.424049,
+ 52.178645
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667038,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874169,
+ "toNodeId": 3874170,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667026,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428419,
+ 52.175394
+ ],
+ [
+ 5.428858,
+ 52.175121
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667026,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874158,
+ "toNodeId": 3874159,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 42.732
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667041,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424993,
+ 52.177968
+ ],
+ [
+ 5.425465,
+ 52.17763
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667041,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874172,
+ "toNodeId": 3874173,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667039,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424049,
+ 52.178645
+ ],
+ [
+ 5.424521,
+ 52.178307
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667039,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874170,
+ "toNodeId": 3874171,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667044,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426408,
+ 52.176953
+ ],
+ [
+ 5.426759,
+ 52.176701
+ ],
+ [
+ 5.426884,
+ 52.176616
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667044,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874175,
+ "toNodeId": 3874176,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667045,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426884,
+ 52.176616
+ ],
+ [
+ 5.427371,
+ 52.176286
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667045,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874176,
+ "toNodeId": 3874177,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667046,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427371,
+ 52.176286
+ ],
+ [
+ 5.42784,
+ 52.175968
+ ],
+ [
+ 5.427859,
+ 52.175956
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667046,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874177,
+ "toNodeId": 3874178,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667040,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424521,
+ 52.178307
+ ],
+ [
+ 5.424993,
+ 52.177968
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667040,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874171,
+ "toNodeId": 3874172,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667042,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425465,
+ 52.17763
+ ],
+ [
+ 5.425936,
+ 52.177291
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667042,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874173,
+ "toNodeId": 3874174,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667049,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428867,
+ 52.175315
+ ],
+ [
+ 5.429382,
+ 52.175002
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667049,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874180,
+ "toNodeId": 3874181,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667043,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425936,
+ 52.177291
+ ],
+ [
+ 5.426408,
+ 52.176953
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667043,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874174,
+ "toNodeId": 3874175,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667051,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429909,
+ 52.174696
+ ],
+ [
+ 5.430446,
+ 52.174396
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667051,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874182,
+ "toNodeId": 3874183,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667047,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427859,
+ 52.175956
+ ],
+ [
+ 5.428362,
+ 52.175635
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667047,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874178,
+ "toNodeId": 3874179,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667048,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428362,
+ 52.175635
+ ],
+ [
+ 5.42879,
+ 52.175362
+ ],
+ [
+ 5.428867,
+ 52.175315
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667048,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874179,
+ "toNodeId": 3874180,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667054,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431528,
+ 52.173803
+ ],
+ [
+ 5.432072,
+ 52.173508
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667054,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874185,
+ "toNodeId": 597016,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667050,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429382,
+ 52.175002
+ ],
+ [
+ 5.429625,
+ 52.174854
+ ],
+ [
+ 5.429909,
+ 52.174696
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667050,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874181,
+ "toNodeId": 3874182,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667052,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430446,
+ 52.174396
+ ],
+ [
+ 5.430895,
+ 52.174145
+ ],
+ [
+ 5.430984,
+ 52.174097
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667052,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874183,
+ "toNodeId": 3874184,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667053,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430984,
+ 52.174097
+ ],
+ [
+ 5.431528,
+ 52.173803
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667053,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874184,
+ "toNodeId": 3874185,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667060,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432072,
+ 52.173508
+ ],
+ [
+ 5.432588,
+ 52.173256
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667060,
+ "linkIdReversed": 0,
+ "fromNodeId": 597016,
+ "toNodeId": 3874189,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.102
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667061,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432588,
+ 52.173256
+ ],
+ [
+ 5.432932,
+ 52.173088
+ ],
+ [
+ 5.433107,
+ 52.173006
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667061,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874189,
+ "toNodeId": 3874190,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.102
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667062,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.433107,
+ 52.173006
+ ],
+ [
+ 5.433631,
+ 52.17276
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667062,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874190,
+ "toNodeId": 3874191,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.102
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667067,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431265,
+ 52.173805
+ ],
+ [
+ 5.431642,
+ 52.173628
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667067,
+ "linkIdReversed": 0,
+ "fromNodeId": 597020,
+ "toNodeId": 3874195,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 32.463
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667071,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429147,
+ 52.176331
+ ],
+ [
+ 5.429554,
+ 52.176691
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667071,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874196,
+ "toNodeId": 3874197,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.725
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667068,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431642,
+ 52.173628
+ ],
+ [
+ 5.431703,
+ 52.173599
+ ],
+ [
+ 5.432072,
+ 52.173508
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667068,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874195,
+ "toNodeId": 597016,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 32.463
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667070,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42874,
+ 52.175972
+ ],
+ [
+ 5.429147,
+ 52.176331
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667070,
+ "linkIdReversed": 0,
+ "fromNodeId": 596859,
+ "toNodeId": 3874196,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.725
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667075,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430781,
+ 52.177766
+ ],
+ [
+ 5.431193,
+ 52.178124
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667075,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874200,
+ "toNodeId": 3874201,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.725
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667076,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431193,
+ 52.178124
+ ],
+ [
+ 5.431604,
+ 52.178481
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667076,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874201,
+ "toNodeId": 3874202,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.725
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667077,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431604,
+ 52.178481
+ ],
+ [
+ 5.432016,
+ 52.178839
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667077,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874202,
+ "toNodeId": 3874203,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.725
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667072,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429554,
+ 52.176691
+ ],
+ [
+ 5.429961,
+ 52.17705
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667072,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874197,
+ "toNodeId": 3874198,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.725
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667079,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432427,
+ 52.179196
+ ],
+ [
+ 5.432838,
+ 52.179553
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667079,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874204,
+ "toNodeId": 3874205,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.725
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667073,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429961,
+ 52.17705
+ ],
+ [
+ 5.430139,
+ 52.177208
+ ],
+ [
+ 5.43037,
+ 52.177409
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667073,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874198,
+ "toNodeId": 3874199,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.725
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667078,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432016,
+ 52.178839
+ ],
+ [
+ 5.432427,
+ 52.179196
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667078,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874203,
+ "toNodeId": 3874204,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.725
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667080,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432838,
+ 52.179553
+ ],
+ [
+ 5.43325,
+ 52.179911
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667080,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874205,
+ "toNodeId": 3874206,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.725
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667074,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.43037,
+ 52.177409
+ ],
+ [
+ 5.430781,
+ 52.177766
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667074,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874199,
+ "toNodeId": 3874200,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.725
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667081,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.43325,
+ 52.179911
+ ],
+ [
+ 5.433661,
+ 52.180268
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667081,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874206,
+ "toNodeId": 3874207,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.725
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667121,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429482,
+ 52.174024
+ ],
+ [
+ 5.429452,
+ 52.173988
+ ],
+ [
+ 5.429347,
+ 52.173901
+ ],
+ [
+ 5.429214,
+ 52.173817
+ ],
+ [
+ 5.429055,
+ 52.173752
+ ],
+ [
+ 5.42898,
+ 52.173731
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667121,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874239,
+ "toNodeId": 3874240,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.283
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667119,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429296,
+ 52.174847
+ ],
+ [
+ 5.429416,
+ 52.174686
+ ],
+ [
+ 5.429527,
+ 52.174538
+ ],
+ [
+ 5.429559,
+ 52.174446
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667119,
+ "linkIdReversed": 0,
+ "fromNodeId": 597014,
+ "toNodeId": 3874238,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.283
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667124,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42771,
+ 52.173918
+ ],
+ [
+ 5.427675,
+ 52.173943
+ ],
+ [
+ 5.427555,
+ 52.174061
+ ],
+ [
+ 5.427491,
+ 52.174183
+ ],
+ [
+ 5.427475,
+ 52.174274
+ ],
+ [
+ 5.427475,
+ 52.174316
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667124,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874242,
+ "toNodeId": 3874243,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.283
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667125,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427475,
+ 52.174316
+ ],
+ [
+ 5.427474,
+ 52.17437
+ ],
+ [
+ 5.427494,
+ 52.174442
+ ],
+ [
+ 5.427509,
+ 52.174507
+ ],
+ [
+ 5.427609,
+ 52.17474
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667125,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874243,
+ "toNodeId": 596864,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.283
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667120,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429559,
+ 52.174446
+ ],
+ [
+ 5.429575,
+ 52.1744
+ ],
+ [
+ 5.429591,
+ 52.174274
+ ],
+ [
+ 5.42958,
+ 52.174206
+ ],
+ [
+ 5.42955,
+ 52.174141
+ ],
+ [
+ 5.429506,
+ 52.174053
+ ],
+ [
+ 5.429482,
+ 52.174024
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667120,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874238,
+ "toNodeId": 3874239,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.283
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667122,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42898,
+ 52.173731
+ ],
+ [
+ 5.428873,
+ 52.173702
+ ],
+ [
+ 5.428669,
+ 52.173676
+ ],
+ [
+ 5.428507,
+ 52.173672
+ ],
+ [
+ 5.428346,
+ 52.173679
+ ],
+ [
+ 5.428292,
+ 52.173688
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667122,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874240,
+ "toNodeId": 3874241,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.283
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667128,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430281,
+ 52.174327
+ ],
+ [
+ 5.430482,
+ 52.174225
+ ],
+ [
+ 5.430775,
+ 52.174068
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667128,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874245,
+ "toNodeId": 3874246,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.443
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667129,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430775,
+ 52.174068
+ ],
+ [
+ 5.431265,
+ 52.173805
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667129,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874246,
+ "toNodeId": 597020,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.443
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667130,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430015,
+ 52.17728
+ ],
+ [
+ 5.429664,
+ 52.176974
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667130,
+ "linkIdReversed": 0,
+ "fromNodeId": 597029,
+ "toNodeId": 3874247,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 41.673
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667131,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429664,
+ 52.176974
+ ],
+ [
+ 5.429312,
+ 52.176668
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667131,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874247,
+ "toNodeId": 3874248,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 41.673
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667123,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428292,
+ 52.173688
+ ],
+ [
+ 5.42819,
+ 52.173706
+ ],
+ [
+ 5.428039,
+ 52.17374
+ ],
+ [
+ 5.427924,
+ 52.173794
+ ],
+ [
+ 5.427783,
+ 52.173866
+ ],
+ [
+ 5.42771,
+ 52.173918
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667123,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874241,
+ "toNodeId": 3874242,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.283
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667126,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429296,
+ 52.174847
+ ],
+ [
+ 5.429658,
+ 52.174641
+ ],
+ [
+ 5.429779,
+ 52.17458
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667126,
+ "linkIdReversed": 0,
+ "fromNodeId": 597014,
+ "toNodeId": 3874244,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.443
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667135,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427911,
+ 52.175013
+ ],
+ [
+ 5.428214,
+ 52.175285
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667135,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874250,
+ "toNodeId": 597030,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 36.71
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667136,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428214,
+ 52.175285
+ ],
+ [
+ 5.428555,
+ 52.175581
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667136,
+ "linkIdReversed": 0,
+ "fromNodeId": 597030,
+ "toNodeId": 3874251,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 40.38
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667137,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428555,
+ 52.175581
+ ],
+ [
+ 5.428897,
+ 52.175877
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667137,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874251,
+ "toNodeId": 597009,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 40.38
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667127,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429779,
+ 52.17458
+ ],
+ [
+ 5.430281,
+ 52.174327
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667127,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874244,
+ "toNodeId": 3874245,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.443
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667132,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429312,
+ 52.176668
+ ],
+ [
+ 5.428961,
+ 52.176362
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667132,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874248,
+ "toNodeId": 3874249,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 41.673
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667133,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428961,
+ 52.176362
+ ],
+ [
+ 5.42861,
+ 52.176056
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667133,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874249,
+ "toNodeId": 596855,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 41.673
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669263,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.433525,
+ 52.172981
+ ],
+ [
+ 5.433012,
+ 52.173222
+ ],
+ [
+ 5.43295,
+ 52.173251
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669263,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875465,
+ "toNodeId": 3875466,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669264,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.43295,
+ 52.173251
+ ],
+ [
+ 5.432378,
+ 52.173524
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669264,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875466,
+ "toNodeId": 3875467,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669265,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432378,
+ 52.173524
+ ],
+ [
+ 5.431947,
+ 52.173729
+ ],
+ [
+ 5.431813,
+ 52.173802
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669265,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875467,
+ "toNodeId": 3875468,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669266,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431813,
+ 52.173802
+ ],
+ [
+ 5.43127,
+ 52.174096
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669266,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875468,
+ "toNodeId": 3875469,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669267,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.43127,
+ 52.174096
+ ],
+ [
+ 5.430961,
+ 52.174263
+ ],
+ [
+ 5.43073,
+ 52.174391
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669267,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875469,
+ "toNodeId": 3875470,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669268,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.43073,
+ 52.174391
+ ],
+ [
+ 5.430192,
+ 52.174689
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669268,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875470,
+ "toNodeId": 3875471,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669269,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430192,
+ 52.174689
+ ],
+ [
+ 5.429709,
+ 52.174957
+ ],
+ [
+ 5.429657,
+ 52.174988
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669269,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875471,
+ "toNodeId": 3875472,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669270,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429657,
+ 52.174988
+ ],
+ [
+ 5.429139,
+ 52.175299
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669270,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875472,
+ "toNodeId": 3875473,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669271,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429139,
+ 52.175299
+ ],
+ [
+ 5.42885,
+ 52.175472
+ ],
+ [
+ 5.428626,
+ 52.175613
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669271,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875473,
+ "toNodeId": 3875474,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669272,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428626,
+ 52.175613
+ ],
+ [
+ 5.428121,
+ 52.175932
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669272,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875474,
+ "toNodeId": 3875475,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669273,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428121,
+ 52.175932
+ ],
+ [
+ 5.427924,
+ 52.176056
+ ],
+ [
+ 5.427628,
+ 52.176257
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669273,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875475,
+ "toNodeId": 3875476,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669274,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427628,
+ 52.176257
+ ],
+ [
+ 5.427143,
+ 52.176587
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669274,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875476,
+ "toNodeId": 3875477,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669275,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427143,
+ 52.176587
+ ],
+ [
+ 5.426919,
+ 52.176739
+ ],
+ [
+ 5.426665,
+ 52.176921
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669275,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875477,
+ "toNodeId": 3875478,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669276,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426665,
+ 52.176921
+ ],
+ [
+ 5.426194,
+ 52.177259
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669276,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875478,
+ "toNodeId": 3875479,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669277,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426194,
+ 52.177259
+ ],
+ [
+ 5.425723,
+ 52.177597
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669277,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875479,
+ "toNodeId": 3875480,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669278,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425723,
+ 52.177597
+ ],
+ [
+ 5.425252,
+ 52.177934
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669278,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875480,
+ "toNodeId": 3875481,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669279,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425252,
+ 52.177934
+ ],
+ [
+ 5.424781,
+ 52.178272
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669279,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875481,
+ "toNodeId": 3875482,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669280,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424781,
+ 52.178272
+ ],
+ [
+ 5.42431,
+ 52.17861
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669280,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875482,
+ "toNodeId": 3875483,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669281,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42431,
+ 52.17861
+ ],
+ [
+ 5.423839,
+ 52.178948
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669281,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875483,
+ "toNodeId": 3875484,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669282,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.423839,
+ 52.178948
+ ],
+ [
+ 5.423381,
+ 52.179276
+ ],
+ [
+ 5.423368,
+ 52.179285
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669282,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875484,
+ "toNodeId": 3875485,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669283,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.423368,
+ 52.179285
+ ],
+ [
+ 5.422898,
+ 52.179624
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669283,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875485,
+ "toNodeId": 3875486,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669284,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.422898,
+ 52.179624
+ ],
+ [
+ 5.422429,
+ 52.179962
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669284,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875486,
+ "toNodeId": 3875487,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669285,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.422429,
+ 52.179962
+ ],
+ [
+ 5.421959,
+ 52.180301
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669285,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875487,
+ "toNodeId": 3875488,
+ "speedInKilometersPerHour": 120.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3675765,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42481,
+ 52.172878
+ ],
+ [
+ 5.424593,
+ 52.1726
+ ],
+ [
+ 5.424523,
+ 52.172503
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3675765,
+ "linkIdReversed": 0,
+ "fromNodeId": 599091,
+ "toNodeId": 3878366,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.103
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3675766,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424523,
+ 52.172503
+ ],
+ [
+ 5.424343,
+ 52.172253
+ ],
+ [
+ 5.424255,
+ 52.172123
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3675766,
+ "linkIdReversed": 0,
+ "fromNodeId": 3878366,
+ "toNodeId": 3878367,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.103
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3675773,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425323,
+ 52.173673
+ ],
+ [
+ 5.425224,
+ 52.173466
+ ],
+ [
+ 5.425101,
+ 52.173267
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3675773,
+ "linkIdReversed": 0,
+ "fromNodeId": 3878372,
+ "toNodeId": 3878373,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.679
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3675774,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425101,
+ 52.173267
+ ],
+ [
+ 5.425051,
+ 52.173187
+ ],
+ [
+ 5.42481,
+ 52.172878
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3675774,
+ "linkIdReversed": 0,
+ "fromNodeId": 3878373,
+ "toNodeId": 599091,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.679
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3675771,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425338,
+ 52.174526
+ ],
+ [
+ 5.425378,
+ 52.174103
+ ],
+ [
+ 5.425378,
+ 52.174098
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3675771,
+ "linkIdReversed": 0,
+ "fromNodeId": 599093,
+ "toNodeId": 3878371,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.679
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3675772,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425378,
+ 52.174098
+ ],
+ [
+ 5.425385,
+ 52.173904
+ ],
+ [
+ 5.425326,
+ 52.173679
+ ],
+ [
+ 5.425323,
+ 52.173673
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3675772,
+ "linkIdReversed": 0,
+ "fromNodeId": 3878371,
+ "toNodeId": 3878372,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.679
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3684607,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42206,
+ 52.175152
+ ],
+ [
+ 5.422059,
+ 52.175592
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3684607,
+ "linkIdReversed": 0,
+ "fromNodeId": 601546,
+ "toNodeId": 3882053,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.952
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3684608,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.422059,
+ 52.175592
+ ],
+ [
+ 5.422059,
+ 52.175766
+ ],
+ [
+ 5.42206,
+ 52.176032
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3684608,
+ "linkIdReversed": 0,
+ "fromNodeId": 3882053,
+ "toNodeId": 3882054,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.952
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3684609,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42206,
+ 52.176032
+ ],
+ [
+ 5.422062,
+ 52.176373
+ ],
+ [
+ 5.422056,
+ 52.176472
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3684609,
+ "linkIdReversed": 0,
+ "fromNodeId": 3882054,
+ "toNodeId": 3882055,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.952
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3684614,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.422056,
+ 52.176472
+ ],
+ [
+ 5.422062,
+ 52.176373
+ ],
+ [
+ 5.42206,
+ 52.176032
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3684614,
+ "linkIdReversed": 0,
+ "fromNodeId": 3882058,
+ "toNodeId": 3882059,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.952
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3684615,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42206,
+ 52.176032
+ ],
+ [
+ 5.422059,
+ 52.175766
+ ],
+ [
+ 5.422059,
+ 52.175592
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3684615,
+ "linkIdReversed": 0,
+ "fromNodeId": 3882059,
+ "toNodeId": 3882060,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.952
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3684616,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.422059,
+ 52.175592
+ ],
+ [
+ 5.42206,
+ 52.175152
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3684616,
+ "linkIdReversed": 0,
+ "fromNodeId": 3882060,
+ "toNodeId": 601546,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.952
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3684909,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.421854,
+ 52.173817
+ ],
+ [
+ 5.421967,
+ 52.173874
+ ],
+ [
+ 5.422039,
+ 52.173943
+ ],
+ [
+ 5.422042,
+ 52.174116
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3684909,
+ "linkIdReversed": 0,
+ "fromNodeId": 601607,
+ "toNodeId": 3882193,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 38.414
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3684910,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.422042,
+ 52.174116
+ ],
+ [
+ 5.422045,
+ 52.174305
+ ],
+ [
+ 5.422048,
+ 52.174462
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3684910,
+ "linkIdReversed": 0,
+ "fromNodeId": 3882193,
+ "toNodeId": 3882194,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 38.414
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3684913,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42206,
+ 52.175152
+ ],
+ [
+ 5.422054,
+ 52.174807
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3684913,
+ "linkIdReversed": 0,
+ "fromNodeId": 601546,
+ "toNodeId": 3882196,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 38.414
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3684914,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.422054,
+ 52.174807
+ ],
+ [
+ 5.422048,
+ 52.174462
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3684914,
+ "linkIdReversed": 0,
+ "fromNodeId": 3882196,
+ "toNodeId": 3882197,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 38.414
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3684915,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.422048,
+ 52.174462
+ ],
+ [
+ 5.422045,
+ 52.174305
+ ],
+ [
+ 5.422042,
+ 52.174116
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3684915,
+ "linkIdReversed": 0,
+ "fromNodeId": 3882197,
+ "toNodeId": 3882198,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 38.414
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3684916,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.422042,
+ 52.174116
+ ],
+ [
+ 5.422039,
+ 52.173943
+ ],
+ [
+ 5.421967,
+ 52.173874
+ ],
+ [
+ 5.421854,
+ 52.173817
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3684916,
+ "linkIdReversed": 0,
+ "fromNodeId": 3882198,
+ "toNodeId": 601607,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 38.414
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3684921,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.421867,
+ 52.173466
+ ],
+ [
+ 5.421854,
+ 52.173817
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3684921,
+ "linkIdReversed": 0,
+ "fromNodeId": 601609,
+ "toNodeId": 601607,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 39.066
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3684922,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.421854,
+ 52.173817
+ ],
+ [
+ 5.421867,
+ 52.173466
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3684922,
+ "linkIdReversed": 0,
+ "fromNodeId": 601607,
+ "toNodeId": 601609,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 39.066
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3684911,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.422048,
+ 52.174462
+ ],
+ [
+ 5.422054,
+ 52.174807
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3684911,
+ "linkIdReversed": 0,
+ "fromNodeId": 3882194,
+ "toNodeId": 3882195,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 38.414
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3684912,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.422054,
+ 52.174807
+ ],
+ [
+ 5.42206,
+ 52.175152
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3684912,
+ "linkIdReversed": 0,
+ "fromNodeId": 3882195,
+ "toNodeId": 601546,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 38.414
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3685165,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.421873,
+ 52.172724
+ ],
+ [
+ 5.42187,
+ 52.173095
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3685165,
+ "linkIdReversed": 0,
+ "fromNodeId": 3882328,
+ "toNodeId": 3882329,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 41.26
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3685166,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42187,
+ 52.173095
+ ],
+ [
+ 5.421867,
+ 52.173466
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3685166,
+ "linkIdReversed": 0,
+ "fromNodeId": 3882329,
+ "toNodeId": 601609,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 41.26
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3685167,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.421867,
+ 52.173466
+ ],
+ [
+ 5.42187,
+ 52.173095
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3685167,
+ "linkIdReversed": 0,
+ "fromNodeId": 601609,
+ "toNodeId": 3882330,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 41.26
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3685168,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42187,
+ 52.173095
+ ],
+ [
+ 5.421873,
+ 52.172724
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3685168,
+ "linkIdReversed": 0,
+ "fromNodeId": 3882330,
+ "toNodeId": 3882331,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 41.26
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3686220,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42462,
+ 52.177269
+ ],
+ [
+ 5.424733,
+ 52.176878
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3686220,
+ "linkIdReversed": 0,
+ "fromNodeId": 597012,
+ "toNodeId": 3882838,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.171
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3686221,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424733,
+ 52.176878
+ ],
+ [
+ 5.424845,
+ 52.176487
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3686221,
+ "linkIdReversed": 0,
+ "fromNodeId": 3882838,
+ "toNodeId": 3882839,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.171
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3686216,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42252,
+ 52.18013
+ ],
+ [
+ 5.42204,
+ 52.180435
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3686216,
+ "linkIdReversed": 0,
+ "fromNodeId": 596834,
+ "toNodeId": 3882835,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.267
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3686224,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425031,
+ 52.175702
+ ],
+ [
+ 5.425134,
+ 52.17531
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3686224,
+ "linkIdReversed": 0,
+ "fromNodeId": 3882841,
+ "toNodeId": 3882842,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.171
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3686225,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425134,
+ 52.17531
+ ],
+ [
+ 5.425236,
+ 52.174918
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3686225,
+ "linkIdReversed": 0,
+ "fromNodeId": 3882842,
+ "toNodeId": 3882843,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.171
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3686226,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425236,
+ 52.174918
+ ],
+ [
+ 5.425338,
+ 52.174526
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3686226,
+ "linkIdReversed": 0,
+ "fromNodeId": 3882843,
+ "toNodeId": 599093,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.171
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3686217,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42204,
+ 52.180435
+ ],
+ [
+ 5.42156,
+ 52.180741
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3686217,
+ "linkIdReversed": 0,
+ "fromNodeId": 3882835,
+ "toNodeId": 3882836,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.267
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3686222,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424845,
+ 52.176487
+ ],
+ [
+ 5.42489,
+ 52.176331
+ ],
+ [
+ 5.424929,
+ 52.176094
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3686222,
+ "linkIdReversed": 0,
+ "fromNodeId": 3882839,
+ "toNodeId": 3882840,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.171
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3686223,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424929,
+ 52.176094
+ ],
+ [
+ 5.42493,
+ 52.17609
+ ],
+ [
+ 5.425031,
+ 52.175702
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3686223,
+ "linkIdReversed": 0,
+ "fromNodeId": 3882840,
+ "toNodeId": 3882841,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.171
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6369279,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.423044,
+ 52.181034
+ ],
+ [
+ 5.423499,
+ 52.180712
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6369279,
+ "linkIdReversed": 0,
+ "fromNodeId": 5442740,
+ "toNodeId": 5442741,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.43
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6369280,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.423499,
+ 52.180712
+ ],
+ [
+ 5.423955,
+ 52.180391
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6369280,
+ "linkIdReversed": 0,
+ "fromNodeId": 5442741,
+ "toNodeId": 5442742,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.43
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6369281,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.423955,
+ 52.180391
+ ],
+ [
+ 5.424184,
+ 52.180229
+ ],
+ [
+ 5.424419,
+ 52.180107
+ ],
+ [
+ 5.424449,
+ 52.180094
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6369281,
+ "linkIdReversed": 0,
+ "fromNodeId": 5442742,
+ "toNodeId": 5442743,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.43
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6369282,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424449,
+ 52.180094
+ ],
+ [
+ 5.424675,
+ 52.179996
+ ],
+ [
+ 5.424941,
+ 52.179909
+ ],
+ [
+ 5.42505,
+ 52.179885
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6369282,
+ "linkIdReversed": 0,
+ "fromNodeId": 5442743,
+ "toNodeId": 5442744,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.43
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6369283,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42505,
+ 52.179885
+ ],
+ [
+ 5.425237,
+ 52.179844
+ ],
+ [
+ 5.42572,
+ 52.179779
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6369283,
+ "linkIdReversed": 0,
+ "fromNodeId": 5442744,
+ "toNodeId": 1117050,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.43
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6369284,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42572,
+ 52.179779
+ ],
+ [
+ 5.425237,
+ 52.179844
+ ],
+ [
+ 5.42505,
+ 52.179885
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6369284,
+ "linkIdReversed": 0,
+ "fromNodeId": 1117050,
+ "toNodeId": 5442745,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.43
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6369285,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42505,
+ 52.179885
+ ],
+ [
+ 5.424941,
+ 52.179909
+ ],
+ [
+ 5.424675,
+ 52.179996
+ ],
+ [
+ 5.424449,
+ 52.180094
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6369285,
+ "linkIdReversed": 0,
+ "fromNodeId": 5442745,
+ "toNodeId": 5442746,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.43
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6369286,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424449,
+ 52.180094
+ ],
+ [
+ 5.424419,
+ 52.180107
+ ],
+ [
+ 5.424184,
+ 52.180229
+ ],
+ [
+ 5.423955,
+ 52.180391
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6369286,
+ "linkIdReversed": 0,
+ "fromNodeId": 5442746,
+ "toNodeId": 5442747,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.43
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6369287,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.423955,
+ 52.180391
+ ],
+ [
+ 5.423499,
+ 52.180712
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6369287,
+ "linkIdReversed": 0,
+ "fromNodeId": 5442747,
+ "toNodeId": 5442748,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.43
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6369288,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.423499,
+ 52.180712
+ ],
+ [
+ 5.423044,
+ 52.181034
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6369288,
+ "linkIdReversed": 0,
+ "fromNodeId": 5442748,
+ "toNodeId": 5442749,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.43
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405115,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432927,
+ 52.180256
+ ],
+ [
+ 5.432499,
+ 52.180435
+ ],
+ [
+ 5.432473,
+ 52.180446
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405115,
+ "linkIdReversed": 0,
+ "fromNodeId": 1121748,
+ "toNodeId": 5467882,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 37.625
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405118,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431663,
+ 52.180894
+ ],
+ [
+ 5.431594,
+ 52.180969
+ ],
+ [
+ 5.431524,
+ 52.18108
+ ],
+ [
+ 5.431477,
+ 52.18121
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405118,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467884,
+ "toNodeId": 1121749,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 37.625
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405116,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432473,
+ 52.180446
+ ],
+ [
+ 5.432129,
+ 52.180595
+ ],
+ [
+ 5.432028,
+ 52.180645
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405116,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467882,
+ "toNodeId": 5467883,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 37.625
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405117,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432028,
+ 52.180645
+ ],
+ [
+ 5.431884,
+ 52.180717
+ ],
+ [
+ 5.431712,
+ 52.18084
+ ],
+ [
+ 5.431663,
+ 52.180894
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405117,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467883,
+ "toNodeId": 5467884,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 37.625
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405120,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.4335,
+ 52.180016
+ ],
+ [
+ 5.432927,
+ 52.180256
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405120,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467885,
+ "toNodeId": 1121748,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.431
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405165,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424756,
+ 52.181271
+ ],
+ [
+ 5.425247,
+ 52.181191
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405165,
+ "linkIdReversed": 0,
+ "fromNodeId": 1117049,
+ "toNodeId": 5467903,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 34.732
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405166,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425247,
+ 52.181191
+ ],
+ [
+ 5.425737,
+ 52.18111
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405166,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467903,
+ "toNodeId": 5467904,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 34.732
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405167,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425737,
+ 52.18111
+ ],
+ [
+ 5.426228,
+ 52.18103
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405167,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467904,
+ "toNodeId": 1121765,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 34.732
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405168,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426228,
+ 52.18103
+ ],
+ [
+ 5.425737,
+ 52.18111
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405168,
+ "linkIdReversed": 0,
+ "fromNodeId": 1121765,
+ "toNodeId": 5467905,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 34.732
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405169,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425737,
+ 52.18111
+ ],
+ [
+ 5.425247,
+ 52.181191
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405169,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467905,
+ "toNodeId": 5467906,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 34.732
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405170,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425247,
+ 52.181191
+ ],
+ [
+ 5.424756,
+ 52.181271
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405170,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467906,
+ "toNodeId": 1117049,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 34.732
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405177,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426726,
+ 52.180954
+ ],
+ [
+ 5.426228,
+ 52.18103
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405177,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467910,
+ "toNodeId": 1121765,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 35.069
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405178,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426228,
+ 52.18103
+ ],
+ [
+ 5.426726,
+ 52.180954
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405178,
+ "linkIdReversed": 0,
+ "fromNodeId": 1121765,
+ "toNodeId": 5467911,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 35.069
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405179,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426726,
+ 52.180954
+ ],
+ [
+ 5.427223,
+ 52.180878
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405179,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467911,
+ "toNodeId": 5467912,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 35.069
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405180,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427223,
+ 52.180878
+ ],
+ [
+ 5.42747,
+ 52.18084
+ ],
+ [
+ 5.427719,
+ 52.180798
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405180,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467912,
+ "toNodeId": 1121766,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 35.069
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405175,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427719,
+ 52.180798
+ ],
+ [
+ 5.42747,
+ 52.18084
+ ],
+ [
+ 5.427223,
+ 52.180878
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405175,
+ "linkIdReversed": 0,
+ "fromNodeId": 1121766,
+ "toNodeId": 5467909,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 35.069
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405183,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426228,
+ 52.18103
+ ],
+ [
+ 5.426059,
+ 52.180613
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405183,
+ "linkIdReversed": 0,
+ "fromNodeId": 1121765,
+ "toNodeId": 5467913,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.824
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405184,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426059,
+ 52.180613
+ ],
+ [
+ 5.425889,
+ 52.180196
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405184,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467913,
+ "toNodeId": 5467914,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.824
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405176,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427223,
+ 52.180878
+ ],
+ [
+ 5.426726,
+ 52.180954
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405176,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467909,
+ "toNodeId": 5467910,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 35.069
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405181,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426316,
+ 52.181244
+ ],
+ [
+ 5.426228,
+ 52.18103
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405181,
+ "linkIdReversed": 0,
+ "fromNodeId": 1121767,
+ "toNodeId": 1121765,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 24.561
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405182,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426228,
+ 52.18103
+ ],
+ [
+ 5.426316,
+ 52.181244
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405182,
+ "linkIdReversed": 0,
+ "fromNodeId": 1121765,
+ "toNodeId": 1121767,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 24.561
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405185,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425889,
+ 52.180196
+ ],
+ [
+ 5.42572,
+ 52.179779
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405185,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467914,
+ "toNodeId": 1117050,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.824
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405186,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42572,
+ 52.179779
+ ],
+ [
+ 5.425889,
+ 52.180196
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405186,
+ "linkIdReversed": 0,
+ "fromNodeId": 1117050,
+ "toNodeId": 5467915,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.824
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405187,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425889,
+ 52.180196
+ ],
+ [
+ 5.426059,
+ 52.180613
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405187,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467915,
+ "toNodeId": 5467916,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.824
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405188,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426059,
+ 52.180613
+ ],
+ [
+ 5.426228,
+ 52.18103
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405188,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467916,
+ "toNodeId": 1121765,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.824
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405219,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426411,
+ 52.179772
+ ],
+ [
+ 5.426481,
+ 52.179771
+ ],
+ [
+ 5.427101,
+ 52.179794
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405219,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467931,
+ "toNodeId": 5467932,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.281
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405222,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428481,
+ 52.179846
+ ],
+ [
+ 5.429171,
+ 52.179872
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405222,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467934,
+ "toNodeId": 5467935,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.281
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405218,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42572,
+ 52.179779
+ ],
+ [
+ 5.426411,
+ 52.179772
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405218,
+ "linkIdReversed": 0,
+ "fromNodeId": 1117050,
+ "toNodeId": 5467931,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.281
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405220,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427101,
+ 52.179794
+ ],
+ [
+ 5.427791,
+ 52.17982
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405220,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467932,
+ "toNodeId": 5467933,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.281
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405221,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427791,
+ 52.17982
+ ],
+ [
+ 5.428481,
+ 52.179846
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405221,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467933,
+ "toNodeId": 5467934,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.281
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405223,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429171,
+ 52.179872
+ ],
+ [
+ 5.429861,
+ 52.179897
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405223,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467935,
+ "toNodeId": 5467936,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.281
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405224,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429861,
+ 52.179897
+ ],
+ [
+ 5.43036,
+ 52.179916
+ ],
+ [
+ 5.430534,
+ 52.179965
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405224,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467936,
+ "toNodeId": 5467937,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.281
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405225,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430534,
+ 52.179965
+ ],
+ [
+ 5.430536,
+ 52.179966
+ ],
+ [
+ 5.430629,
+ 52.18008
+ ],
+ [
+ 5.430644,
+ 52.180176
+ ],
+ [
+ 5.430639,
+ 52.180237
+ ],
+ [
+ 5.430609,
+ 52.180374
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405225,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467937,
+ "toNodeId": 1121779,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.281
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405226,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430609,
+ 52.180374
+ ],
+ [
+ 5.430639,
+ 52.180237
+ ],
+ [
+ 5.430644,
+ 52.180176
+ ],
+ [
+ 5.430629,
+ 52.18008
+ ],
+ [
+ 5.430536,
+ 52.179966
+ ],
+ [
+ 5.430534,
+ 52.179965
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405226,
+ "linkIdReversed": 0,
+ "fromNodeId": 1121779,
+ "toNodeId": 5467938,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.281
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405227,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430534,
+ 52.179965
+ ],
+ [
+ 5.43036,
+ 52.179916
+ ],
+ [
+ 5.429861,
+ 52.179897
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405227,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467938,
+ "toNodeId": 5467939,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.281
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405231,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427791,
+ 52.17982
+ ],
+ [
+ 5.427101,
+ 52.179794
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405231,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467942,
+ "toNodeId": 5467943,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.281
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405228,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429861,
+ 52.179897
+ ],
+ [
+ 5.429171,
+ 52.179872
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405228,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467939,
+ "toNodeId": 5467940,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.281
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405229,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429171,
+ 52.179872
+ ],
+ [
+ 5.428481,
+ 52.179846
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405229,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467940,
+ "toNodeId": 5467941,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.281
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405234,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430609,
+ 52.180374
+ ],
+ [
+ 5.429931,
+ 52.180485
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405234,
+ "linkIdReversed": 0,
+ "fromNodeId": 1121779,
+ "toNodeId": 1121780,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.993
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405235,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429931,
+ 52.180485
+ ],
+ [
+ 5.430609,
+ 52.180374
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405235,
+ "linkIdReversed": 0,
+ "fromNodeId": 1121780,
+ "toNodeId": 1121779,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.993
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405237,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431004,
+ 52.18128
+ ],
+ [
+ 5.431042,
+ 52.181019
+ ],
+ [
+ 5.431057,
+ 52.180851
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405237,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467945,
+ "toNodeId": 5467946,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.913
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405230,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428481,
+ 52.179846
+ ],
+ [
+ 5.427791,
+ 52.17982
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405230,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467941,
+ "toNodeId": 5467942,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.281
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405232,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427101,
+ 52.179794
+ ],
+ [
+ 5.426481,
+ 52.179771
+ ],
+ [
+ 5.426411,
+ 52.179772
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405232,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467943,
+ "toNodeId": 5467944,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.281
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405240,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429931,
+ 52.180485
+ ],
+ [
+ 5.429378,
+ 52.180563
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405240,
+ "linkIdReversed": 0,
+ "fromNodeId": 1121780,
+ "toNodeId": 5467948,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 38.815
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405241,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429378,
+ 52.180563
+ ],
+ [
+ 5.428825,
+ 52.180642
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405241,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467948,
+ "toNodeId": 5467949,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 38.815
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405233,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426411,
+ 52.179772
+ ],
+ [
+ 5.42572,
+ 52.179779
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405233,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467944,
+ "toNodeId": 1117050,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.281
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405238,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431057,
+ 52.180851
+ ],
+ [
+ 5.43107,
+ 52.18071
+ ],
+ [
+ 5.431116,
+ 52.18045
+ ],
+ [
+ 5.431117,
+ 52.180422
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405238,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467946,
+ "toNodeId": 5467947,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.913
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405239,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431117,
+ 52.180422
+ ],
+ [
+ 5.431123,
+ 52.180313
+ ],
+ [
+ 5.430609,
+ 52.180374
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405239,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467947,
+ "toNodeId": 1121779,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.913
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405242,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428825,
+ 52.180642
+ ],
+ [
+ 5.428272,
+ 52.18072
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405242,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467949,
+ "toNodeId": 5467950,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 38.815
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405246,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428825,
+ 52.180642
+ ],
+ [
+ 5.429378,
+ 52.180563
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405246,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467952,
+ "toNodeId": 5467953,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 38.815
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405243,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428272,
+ 52.18072
+ ],
+ [
+ 5.427719,
+ 52.180798
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405243,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467950,
+ "toNodeId": 1121766,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 38.815
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405244,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427719,
+ 52.180798
+ ],
+ [
+ 5.428272,
+ 52.18072
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405244,
+ "linkIdReversed": 0,
+ "fromNodeId": 1121766,
+ "toNodeId": 5467951,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 38.815
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405245,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428272,
+ 52.18072
+ ],
+ [
+ 5.428825,
+ 52.180642
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405245,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467951,
+ "toNodeId": 5467952,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 38.815
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405247,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429378,
+ 52.180563
+ ],
+ [
+ 5.429931,
+ 52.180485
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405247,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467953,
+ "toNodeId": 1121780,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 38.815
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405252,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429875,
+ 52.180884
+ ],
+ [
+ 5.429819,
+ 52.181284
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405252,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467956,
+ "toNodeId": 5467957,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.599
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405249,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429819,
+ 52.181284
+ ],
+ [
+ 5.429875,
+ 52.180884
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405249,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467954,
+ "toNodeId": 5467955,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.599
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405250,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429875,
+ 52.180884
+ ],
+ [
+ 5.429931,
+ 52.180485
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405250,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467955,
+ "toNodeId": 1121780,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.599
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405251,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429931,
+ 52.180485
+ ],
+ [
+ 5.429875,
+ 52.180884
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405251,
+ "linkIdReversed": 0,
+ "fromNodeId": 1121780,
+ "toNodeId": 5467956,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.599
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405256,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427839,
+ 52.181107
+ ],
+ [
+ 5.427719,
+ 52.180798
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405256,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467959,
+ "toNodeId": 1121766,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 35.349
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405257,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427719,
+ 52.180798
+ ],
+ [
+ 5.427839,
+ 52.181107
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405257,
+ "linkIdReversed": 0,
+ "fromNodeId": 1121766,
+ "toNodeId": 5467960,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 35.349
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6409986,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.433145,
+ 52.172166
+ ],
+ [
+ 5.432642,
+ 52.172405
+ ],
+ [
+ 5.432593,
+ 52.172423
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6409986,
+ "linkIdReversed": 0,
+ "fromNodeId": 5470745,
+ "toNodeId": 5470746,
+ "speedInKilometersPerHour": 70.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.408
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6409987,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432593,
+ 52.172423
+ ],
+ [
+ 5.43231,
+ 52.172531
+ ],
+ [
+ 5.431984,
+ 52.172625
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6409987,
+ "linkIdReversed": 0,
+ "fromNodeId": 5470746,
+ "toNodeId": 5470747,
+ "speedInKilometersPerHour": 70.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.408
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6409988,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431984,
+ 52.172625
+ ],
+ [
+ 5.431937,
+ 52.172638
+ ],
+ [
+ 5.431495,
+ 52.172714
+ ],
+ [
+ 5.431314,
+ 52.172729
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6409988,
+ "linkIdReversed": 0,
+ "fromNodeId": 5470747,
+ "toNodeId": 5470748,
+ "speedInKilometersPerHour": 70.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.408
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6409989,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431314,
+ 52.172729
+ ],
+ [
+ 5.431076,
+ 52.172749
+ ],
+ [
+ 5.430624,
+ 52.172745
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6409989,
+ "linkIdReversed": 0,
+ "fromNodeId": 5470748,
+ "toNodeId": 5470749,
+ "speedInKilometersPerHour": 70.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.408
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6409990,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430624,
+ 52.172745
+ ],
+ [
+ 5.430595,
+ 52.172745
+ ],
+ [
+ 5.430142,
+ 52.172695
+ ],
+ [
+ 5.429948,
+ 52.172655
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6409990,
+ "linkIdReversed": 0,
+ "fromNodeId": 5470749,
+ "toNodeId": 5470750,
+ "speedInKilometersPerHour": 70.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.408
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6409991,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429948,
+ 52.172655
+ ],
+ [
+ 5.429864,
+ 52.172638
+ ],
+ [
+ 5.429593,
+ 52.172562
+ ],
+ [
+ 5.429338,
+ 52.172458
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6409991,
+ "linkIdReversed": 0,
+ "fromNodeId": 5470750,
+ "toNodeId": 5470751,
+ "speedInKilometersPerHour": 70.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.408
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6409992,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429338,
+ 52.172458
+ ],
+ [
+ 5.429275,
+ 52.172432
+ ],
+ [
+ 5.429121,
+ 52.172352
+ ],
+ [
+ 5.428904,
+ 52.172237
+ ],
+ [
+ 5.428808,
+ 52.172184
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6409992,
+ "linkIdReversed": 0,
+ "fromNodeId": 5470751,
+ "toNodeId": 5470752,
+ "speedInKilometersPerHour": 70.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.408
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6410877,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432878,
+ 52.18021
+ ],
+ [
+ 5.433451,
+ 52.17997
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6410877,
+ "linkIdReversed": 0,
+ "fromNodeId": 1122767,
+ "toNodeId": 5471354,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.431
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6410880,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431435,
+ 52.181028
+ ],
+ [
+ 5.43153,
+ 52.180908
+ ],
+ [
+ 5.43167,
+ 52.180786
+ ],
+ [
+ 5.431812,
+ 52.180696
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6410880,
+ "linkIdReversed": 0,
+ "fromNodeId": 5471355,
+ "toNodeId": 5471356,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.451
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6410881,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431812,
+ 52.180696
+ ],
+ [
+ 5.431916,
+ 52.18063
+ ],
+ [
+ 5.432222,
+ 52.180496
+ ],
+ [
+ 5.432336,
+ 52.180446
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6410881,
+ "linkIdReversed": 0,
+ "fromNodeId": 5471356,
+ "toNodeId": 5471357,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.451
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6410882,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432336,
+ 52.180446
+ ],
+ [
+ 5.432878,
+ 52.18021
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6410882,
+ "linkIdReversed": 0,
+ "fromNodeId": 5471357,
+ "toNodeId": 1122767,
+ "speedInKilometersPerHour": 50.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.451
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7223061,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.433661,
+ 52.180611
+ ],
+ [
+ 5.43331,
+ 52.180338
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7223061,
+ "linkIdReversed": 0,
+ "fromNodeId": 5985262,
+ "toNodeId": 5985263,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 38.697
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7223062,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.43331,
+ 52.180338
+ ],
+ [
+ 5.432959,
+ 52.180065
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7223062,
+ "linkIdReversed": 0,
+ "fromNodeId": 5985263,
+ "toNodeId": 596832,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 38.697
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7223065,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.433601,
+ 52.180439
+ ],
+ [
+ 5.433382,
+ 52.180233
+ ],
+ [
+ 5.433212,
+ 52.180084
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7223065,
+ "linkIdReversed": 0,
+ "fromNodeId": 5985265,
+ "toNodeId": 5985266,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.631
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7223066,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.433212,
+ 52.180084
+ ],
+ [
+ 5.432811,
+ 52.179734
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7223066,
+ "linkIdReversed": 0,
+ "fromNodeId": 5985266,
+ "toNodeId": 5985267,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.631
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7223067,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432811,
+ 52.179734
+ ],
+ [
+ 5.43241,
+ 52.179384
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7223067,
+ "linkIdReversed": 0,
+ "fromNodeId": 5985267,
+ "toNodeId": 5985268,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.631
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7223068,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.43241,
+ 52.179384
+ ],
+ [
+ 5.432009,
+ 52.179034
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7223068,
+ "linkIdReversed": 0,
+ "fromNodeId": 5985268,
+ "toNodeId": 5985269,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.631
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7223069,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432009,
+ 52.179034
+ ],
+ [
+ 5.431713,
+ 52.178776
+ ],
+ [
+ 5.431609,
+ 52.178684
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7223069,
+ "linkIdReversed": 0,
+ "fromNodeId": 5985269,
+ "toNodeId": 5985270,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.631
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7223070,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431609,
+ 52.178684
+ ],
+ [
+ 5.43121,
+ 52.178333
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7223070,
+ "linkIdReversed": 0,
+ "fromNodeId": 5985270,
+ "toNodeId": 5985271,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.631
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7223071,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.43121,
+ 52.178333
+ ],
+ [
+ 5.430812,
+ 52.177982
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7223071,
+ "linkIdReversed": 0,
+ "fromNodeId": 5985271,
+ "toNodeId": 5985272,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.631
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7223072,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430812,
+ 52.177982
+ ],
+ [
+ 5.430413,
+ 52.177631
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7223072,
+ "linkIdReversed": 0,
+ "fromNodeId": 5985272,
+ "toNodeId": 5985273,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.631
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7223073,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430413,
+ 52.177631
+ ],
+ [
+ 5.430015,
+ 52.17728
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7223073,
+ "linkIdReversed": 0,
+ "fromNodeId": 5985273,
+ "toNodeId": 597029,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.631
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7930097,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428925,
+ 52.172131
+ ],
+ [
+ 5.428988,
+ 52.172165
+ ],
+ [
+ 5.429345,
+ 52.172329
+ ],
+ [
+ 5.42949,
+ 52.172383
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7930097,
+ "linkIdReversed": 0,
+ "fromNodeId": 6349336,
+ "toNodeId": 6349337,
+ "speedInKilometersPerHour": 70.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.846
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7930098,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42949,
+ 52.172383
+ ],
+ [
+ 5.429684,
+ 52.172455
+ ],
+ [
+ 5.430015,
+ 52.172539
+ ],
+ [
+ 5.430126,
+ 52.172557
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7930098,
+ "linkIdReversed": 0,
+ "fromNodeId": 6349337,
+ "toNodeId": 6349338,
+ "speedInKilometersPerHour": 70.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.846
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7930099,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430126,
+ 52.172557
+ ],
+ [
+ 5.430324,
+ 52.172588
+ ],
+ [
+ 5.430683,
+ 52.172626
+ ],
+ [
+ 5.430814,
+ 52.172629
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7930099,
+ "linkIdReversed": 0,
+ "fromNodeId": 6349338,
+ "toNodeId": 6349339,
+ "speedInKilometersPerHour": 70.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.846
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7930100,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430814,
+ 52.172629
+ ],
+ [
+ 5.431061,
+ 52.172634
+ ],
+ [
+ 5.431426,
+ 52.172611
+ ],
+ [
+ 5.431509,
+ 52.172599
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7930100,
+ "linkIdReversed": 0,
+ "fromNodeId": 6349339,
+ "toNodeId": 6349340,
+ "speedInKilometersPerHour": 70.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.846
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7930101,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431509,
+ 52.172599
+ ],
+ [
+ 5.431897,
+ 52.172543
+ ],
+ [
+ 5.432171,
+ 52.172468
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7930101,
+ "linkIdReversed": 0,
+ "fromNodeId": 6349340,
+ "toNodeId": 6349341,
+ "speedInKilometersPerHour": 70.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.846
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7930102,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432171,
+ 52.172468
+ ],
+ [
+ 5.432286,
+ 52.172436
+ ],
+ [
+ 5.432635,
+ 52.172298
+ ],
+ [
+ 5.432759,
+ 52.172237
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7930102,
+ "linkIdReversed": 0,
+ "fromNodeId": 6349341,
+ "toNodeId": 6349342,
+ "speedInKilometersPerHour": 70.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.846
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 250409010,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 4.947248148629288,
+ 52.53076273190183
+ ],
+ [
+ 4.948557291001228,
+ 52.53291985134356
+ ],
+ [
+ 4.94886664465463,
+ 52.53342503342875
+ ],
+ [
+ 4.948965497946005,
+ 52.53359437077032
+ ],
+ [
+ 4.949374495751862,
+ 52.53426871632042
+ ],
+ [
+ 4.95419827957171,
+ 52.542215076763995
+ ],
+ [
+ 4.955520091139497,
+ 52.544387611068366
+ ]
+ ]
+ },
+ "properties": {
+ "id": 250409010,
+ "linkIdReversed": 0,
+ "fromNodeId": 250409077,
+ "toNodeId": 251412022,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 1616.582539926782
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 251412004,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 4.955520091139497,
+ 52.544387611068366
+ ],
+ [
+ 4.95888698576146,
+ 52.549936451914796
+ ]
+ ]
+ },
+ "properties": {
+ "id": 251412004,
+ "linkIdReversed": 0,
+ "fromNodeId": 251412022,
+ "toNodeId": 251413022,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 658.3041279537974
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 251414001,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 4.958886985761445,
+ 52.54993645191476
+ ],
+ [
+ 4.960383881737848,
+ 52.552396241415174
+ ],
+ [
+ 4.962264585920772,
+ 52.55549453093445
+ ],
+ [
+ 4.968690960327826,
+ 52.56606568694231
+ ],
+ [
+ 4.969200678139358,
+ 52.566909022733824
+ ],
+ [
+ 4.970011453381847,
+ 52.568238188929
+ ],
+ [
+ 4.970427713864023,
+ 52.56891093554989
+ ],
+ [
+ 4.970926957268423,
+ 52.56970692190644
+ ],
+ [
+ 4.971237852366785,
+ 52.570192963737284
+ ],
+ [
+ 4.971603870946863,
+ 52.570758751142854
+ ],
+ [
+ 4.972043170813728,
+ 52.571426037824764
+ ],
+ [
+ 4.972598666760501,
+ 52.57225178844778
+ ],
+ [
+ 4.9732864118048825,
+ 52.57325657423782
+ ],
+ [
+ 4.973629729416568,
+ 52.573753481804225
+ ],
+ [
+ 4.9738622326336674,
+ 52.57408391084387
+ ],
+ [
+ 4.974450198688449,
+ 52.57490817525072
+ ],
+ [
+ 4.974924094770247,
+ 52.575566636374994
+ ],
+ [
+ 4.979711837557625,
+ 52.58221191887893
+ ],
+ [
+ 4.982129717202658,
+ 52.58556236483793
+ ]
+ ]
+ },
+ "properties": {
+ "id": 251414001,
+ "linkIdReversed": 0,
+ "fromNodeId": 251413022,
+ "toNodeId": 255421058,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 4267.378146356175
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 252408066,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 4.965621315705855,
+ 52.5267374843479
+ ],
+ [
+ 4.965625977489429,
+ 52.526877380365455
+ ]
+ ]
+ },
+ "properties": {
+ "id": 252408066,
+ "linkIdReversed": 0,
+ "fromNodeId": 252408136,
+ "toNodeId": 252408137,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 100.0,
+ "distanceInMeters": 15.569320633874792
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 252408103,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 4.964733871443549,
+ 52.525400977491294
+ ],
+ [
+ 4.964807085048099,
+ 52.52552259913386
+ ],
+ [
+ 4.964892202397557,
+ 52.52565610427305
+ ],
+ [
+ 4.964948248427335,
+ 52.525750353587284
+ ],
+ [
+ 4.96503345174784,
+ 52.5258770136202
+ ],
+ [
+ 4.965045403907588,
+ 52.52588881612768
+ ],
+ [
+ 4.965057026988621,
+ 52.52589723018595
+ ],
+ [
+ 4.965098384614229,
+ 52.52591924919565
+ ],
+ [
+ 4.965147516360238,
+ 52.52598323551644
+ ],
+ [
+ 4.965570726490267,
+ 52.5266754029695
+ ],
+ [
+ 4.965621315705855,
+ 52.5267374843479
+ ]
+ ]
+ },
+ "properties": {
+ "id": 252408103,
+ "linkIdReversed": 0,
+ "fromNodeId": 252408156,
+ "toNodeId": 252408136,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 161.01061959248253
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 255421011,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 4.982129717202658,
+ 52.58556236483793
+ ],
+ [
+ 4.985233092988455,
+ 52.58986532206415
+ ],
+ [
+ 4.986462658172078,
+ 52.59156799629122
+ ],
+ [
+ 4.9866057277719955,
+ 52.59176610636921
+ ],
+ [
+ 4.987844156596956,
+ 52.5934808915141
+ ],
+ [
+ 4.98827731428672,
+ 52.5940806267378
+ ],
+ [
+ 4.989217166207092,
+ 52.59538185172558
+ ],
+ [
+ 4.9894886433299055,
+ 52.59575769587263
+ ],
+ [
+ 4.990489148888686,
+ 52.59714277693842
+ ],
+ [
+ 4.990506097929822,
+ 52.59716625958632
+ ]
+ ]
+ },
+ "properties": {
+ "id": 255421011,
+ "linkIdReversed": 0,
+ "fromNodeId": 255421058,
+ "toNodeId": 256424016,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 1410.4341280730462
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 258430006,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.004836248734401,
+ 52.622053334494154
+ ],
+ [
+ 5.0049372963431065,
+ 52.6221275516201
+ ],
+ [
+ 5.005145500038084,
+ 52.62282422460089
+ ]
+ ]
+ },
+ "properties": {
+ "id": 258430006,
+ "linkIdReversed": 0,
+ "fromNodeId": 258430004,
+ "toNodeId": 258430003,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 89.51630306558884
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 258430008,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.007738472821023,
+ 52.62488600838141
+ ],
+ [
+ 5.00778034090383,
+ 52.62519648317199
+ ],
+ [
+ 5.00778324284914,
+ 52.62524106949041
+ ],
+ [
+ 5.007785565023439,
+ 52.62528557015276
+ ],
+ [
+ 5.0077873469636724,
+ 52.62533007092917
+ ],
+ [
+ 5.007788629709101,
+ 52.625374571810966
+ ],
+ [
+ 5.007789413771721,
+ 52.625419072798046
+ ],
+ [
+ 5.007789794544715,
+ 52.62546357387016
+ ],
+ [
+ 5.007789809507478,
+ 52.625508075019404
+ ],
+ [
+ 5.00778950355875,
+ 52.62555257623625
+ ],
+ [
+ 5.00778893649978,
+ 52.62559707750799
+ ],
+ [
+ 5.007788159722373,
+ 52.62564157882372
+ ],
+ [
+ 5.007787215552626,
+ 52.62568608017452
+ ],
+ [
+ 5.007786166836313,
+ 52.625730581546954
+ ],
+ [
+ 5.007785069132843,
+ 52.625775082929266
+ ],
+ [
+ 5.007783958601784,
+ 52.625819602583974
+ ],
+ [
+ 5.00778290651196,
+ 52.62586409957506
+ ],
+ [
+ 5.007781954710555,
+ 52.62590859716905
+ ],
+ [
+ 5.007780974094842,
+ 52.62595309458921
+ ],
+ [
+ 5.007779783018107,
+ 52.62599759074271
+ ],
+ [
+ 5.007778397853438,
+ 52.62604208572808
+ ],
+ [
+ 5.007776853031238,
+ 52.62608657975238
+ ],
+ [
+ 5.007775135545703,
+ 52.626131072737444
+ ],
+ [
+ 5.0077732857787645,
+ 52.62617556492619
+ ],
+ [
+ 5.007771305723533,
+ 52.62622005633058
+ ],
+ [
+ 5.007769220963878,
+ 52.6262644228143
+ ],
+ [
+ 5.007767034991661,
+ 52.62630891951816
+ ],
+ [
+ 5.0077647744435,
+ 52.626353413667445
+ ],
+ [
+ 5.007762447083253,
+ 52.626397905528016
+ ],
+ [
+ 5.007760067233462,
+ 52.62644239559048
+ ],
+ [
+ 5.007757655121218,
+ 52.62648688454757
+ ],
+ [
+ 5.007755240142385,
+ 52.626531176979114
+ ],
+ [
+ 5.007752816794909,
+ 52.62657567099581
+ ],
+ [
+ 5.007750410539753,
+ 52.62662016506657
+ ],
+ [
+ 5.007748740924119,
+ 52.62665155961693
+ ],
+ [
+ 5.0077480480517025,
+ 52.626664661673814
+ ],
+ [
+ 5.007745754263828,
+ 52.62670914480861
+ ],
+ [
+ 5.007743555667626,
+ 52.62675362899403
+ ],
+ [
+ 5.007741469899972,
+ 52.626798114424766
+ ],
+ [
+ 5.007739523206488,
+ 52.62684260139075
+ ],
+ [
+ 5.0077377441962625,
+ 52.62688709020779
+ ],
+ [
+ 5.007736150843389,
+ 52.626931581074366
+ ],
+ [
+ 5.007734769174193,
+ 52.62697607427791
+ ],
+ [
+ 5.007733628306991,
+ 52.62702057013989
+ ],
+ [
+ 5.007732740890864,
+ 52.62706506879998
+ ],
+ [
+ 5.007732542302814,
+ 52.6270757913513
+ ],
+ [
+ 5.007732135579344,
+ 52.62710965207928
+ ],
+ [
+ 5.0077318832332995,
+ 52.627198679660395
+ ],
+ [
+ 5.007732273966275,
+ 52.627243186470466
+ ],
+ [
+ 5.007732608151946,
+ 52.627265384205494
+ ],
+ [
+ 5.00773304320949,
+ 52.62728731941103
+ ],
+ [
+ 5.0077342203246245,
+ 52.62733190311065
+ ],
+ [
+ 5.007735808941999,
+ 52.627376498558895
+ ],
+ [
+ 5.007737846153266,
+ 52.62742110681472
+ ],
+ [
+ 5.0077403375406,
+ 52.627465728037485
+ ],
+ [
+ 5.00774127815575,
+ 52.62748084759359
+ ],
+ [
+ 5.007743185279829,
+ 52.62750890749427
+ ],
+ [
+ 5.007746579489357,
+ 52.627553422357
+ ],
+ [
+ 5.007750383060749,
+ 52.627597912488085
+ ],
+ [
+ 5.00775462937346,
+ 52.62764237587091
+ ],
+ [
+ 5.007759316103537,
+ 52.627686812645955
+ ],
+ [
+ 5.007764442951164,
+ 52.627731222831386
+ ],
+ [
+ 5.007770014682107,
+ 52.62777560613922
+ ],
+ [
+ 5.007776019591303,
+ 52.62781996327677
+ ],
+ [
+ 5.007782465270694,
+ 52.62786429378523
+ ],
+ [
+ 5.007789353233805,
+ 52.627908597573295
+ ],
+ [
+ 5.007796682101024,
+ 52.627952874724244
+ ],
+ [
+ 5.007804446925757,
+ 52.627997125536965
+ ],
+ [
+ 5.007812656004133,
+ 52.62804134951023
+ ],
+ [
+ 5.0078212626785135,
+ 52.6280855494628
+ ],
+ [
+ 5.007830159748771,
+ 52.6281297318712
+ ],
+ [
+ 5.007839069593639,
+ 52.62817391350779
+ ],
+ [
+ 5.007847979518852,
+ 52.628218095139445
+ ],
+ [
+ 5.007856885527637,
+ 52.62826227700767
+ ],
+ [
+ 5.007868851095906,
+ 52.62830627403336
+ ],
+ [
+ 5.007881753025356,
+ 52.62835021448874
+ ],
+ [
+ 5.0079109365034125,
+ 52.62861677090985
+ ]
+ ]
+ },
+ "properties": {
+ "id": 258430008,
+ "linkIdReversed": 0,
+ "fromNodeId": 258430002,
+ "toNodeId": 258431174,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 100.0,
+ "distanceInMeters": 415.9042303735131
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 258430012,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.007554736202064,
+ 52.62482295219738
+ ],
+ [
+ 5.007738472821023,
+ 52.62488600838141
+ ]
+ ]
+ },
+ "properties": {
+ "id": 258430012,
+ "linkIdReversed": 0,
+ "fromNodeId": 258430006,
+ "toNodeId": 258430002,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 14.283447938075719
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 258430013,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.005145500038113,
+ 52.62282422460089
+ ],
+ [
+ 5.0052646019174425,
+ 52.62322209549128
+ ],
+ [
+ 5.005362912525981,
+ 52.62353090868786
+ ],
+ [
+ 5.005469229913485,
+ 52.623842830076256
+ ],
+ [
+ 5.005571454645754,
+ 52.6241200397231
+ ],
+ [
+ 5.005606914541975,
+ 52.62420728124672
+ ],
+ [
+ 5.00564687308648,
+ 52.624288034093496
+ ],
+ [
+ 5.0056756202018,
+ 52.624339246141524
+ ],
+ [
+ 5.0057038920227965,
+ 52.62438089253343
+ ],
+ [
+ 5.0057537765115,
+ 52.6244463199492
+ ],
+ [
+ 5.0057903418054375,
+ 52.624485471132026
+ ],
+ [
+ 5.00582937331322,
+ 52.62452361736198
+ ],
+ [
+ 5.00588062977884,
+ 52.62456589283694
+ ],
+ [
+ 5.005928365041014,
+ 52.62460004340075
+ ],
+ [
+ 5.005993341481756,
+ 52.62464163576058
+ ],
+ [
+ 5.006047970364211,
+ 52.62467242201993
+ ],
+ [
+ 5.006106282329681,
+ 52.62469999187535
+ ],
+ [
+ 5.006187799784303,
+ 52.62473474310245
+ ],
+ [
+ 5.006252135181346,
+ 52.62475779188075
+ ],
+ [
+ 5.006354051503052,
+ 52.624788893960435
+ ],
+ [
+ 5.006423382938233,
+ 52.62480599747332
+ ],
+ [
+ 5.006493492047898,
+ 52.62482010442467
+ ],
+ [
+ 5.006558149749221,
+ 52.62483101602744
+ ],
+ [
+ 5.0066324677115945,
+ 52.62483951041664
+ ],
+ [
+ 5.0067056727879615,
+ 52.624846052784456
+ ],
+ [
+ 5.006840060275464,
+ 52.624852272287846
+ ],
+ [
+ 5.007084433797846,
+ 52.62485236178048
+ ],
+ [
+ 5.007554736202064,
+ 52.62482295219738
+ ]
+ ]
+ },
+ "properties": {
+ "id": 258430013,
+ "linkIdReversed": 0,
+ "fromNodeId": 258430003,
+ "toNodeId": 258430006,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 324.72066115974627
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 258431051,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.00601334381267,
+ 52.63028869479728
+ ],
+ [
+ 5.005943511583534,
+ 52.62963514745679
+ ],
+ [
+ 5.005907755133385,
+ 52.629384530376214
+ ],
+ [
+ 5.005961111560706,
+ 52.629283159296136
+ ]
+ ]
+ },
+ "properties": {
+ "id": 258431051,
+ "linkIdReversed": 0,
+ "fromNodeId": 258431258,
+ "toNodeId": 258431144,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 112.71043442454871
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 258431052,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.004722771483198,
+ 52.62826301609778
+ ],
+ [
+ 5.0046731872522585,
+ 52.62847684669186
+ ],
+ [
+ 5.004563536959099,
+ 52.630159631197664
+ ],
+ [
+ 5.004562162095956,
+ 52.6302882443765
+ ],
+ [
+ 5.004565537715191,
+ 52.630333376054175
+ ],
+ [
+ 5.004572102533059,
+ 52.6303781342428
+ ],
+ [
+ 5.004586436335047,
+ 52.630432941680226
+ ],
+ [
+ 5.004618875717219,
+ 52.630508641347326
+ ],
+ [
+ 5.0046449888851985,
+ 52.6305507087649
+ ],
+ [
+ 5.004676756629147,
+ 52.6305913654121
+ ],
+ [
+ 5.004715224612105,
+ 52.63062977165461
+ ],
+ [
+ 5.004770816976223,
+ 52.63067162919786
+ ],
+ [
+ 5.004822777106413,
+ 52.63070246849006
+ ],
+ [
+ 5.0049015128900765,
+ 52.630738939807365
+ ],
+ [
+ 5.004964803592985,
+ 52.63076126959746
+ ],
+ [
+ 5.0050543097230085,
+ 52.63078503167603
+ ],
+ [
+ 5.005124709415757,
+ 52.630797167651764
+ ],
+ [
+ 5.005233106072736,
+ 52.63080674388559
+ ],
+ [
+ 5.0053637520878,
+ 52.63080534717825
+ ],
+ [
+ 5.005436628880153,
+ 52.63079806792792
+ ],
+ [
+ 5.005562113330659,
+ 52.630774438234596
+ ],
+ [
+ 5.005629212540764,
+ 52.630755322241264
+ ],
+ [
+ 5.0057205636419875,
+ 52.63071978992758
+ ],
+ [
+ 5.005777130424335,
+ 52.63069107235743
+ ],
+ [
+ 5.005854489469978,
+ 52.63063932360807
+ ],
+ [
+ 5.005896155174643,
+ 52.63060197457992
+ ],
+ [
+ 5.0059309664887515,
+ 52.63056234059888
+ ],
+ [
+ 5.005958624457006,
+ 52.63052219746911
+ ],
+ [
+ 5.005980829192441,
+ 52.63047881226587
+ ],
+ [
+ 5.005996647264239,
+ 52.63043490959518
+ ],
+ [
+ 5.006006848085371,
+ 52.63039033465134
+ ],
+ [
+ 5.006012575337939,
+ 52.63034708265107
+ ],
+ [
+ 5.006013343812657,
+ 52.63028869479728
+ ]
+ ]
+ },
+ "properties": {
+ "id": 258431052,
+ "linkIdReversed": 0,
+ "fromNodeId": 258431130,
+ "toNodeId": 258431258,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 396.3212239134507
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 258431059,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.0079109365034125,
+ 52.62861677090985
+ ],
+ [
+ 5.007828182124694,
+ 52.62870417644299
+ ]
+ ]
+ },
+ "properties": {
+ "id": 258431059,
+ "linkIdReversed": 0,
+ "fromNodeId": 258431174,
+ "toNodeId": 258431169,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 11.224291915307928
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 600125200,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 4.950643285539236,
+ 52.536999776019165
+ ],
+ [
+ 4.949797962609762,
+ 52.53553109569923
+ ],
+ [
+ 4.949377601673171,
+ 52.534819544495896
+ ],
+ [
+ 4.9479564594714205,
+ 52.53248656681113
+ ],
+ [
+ 4.947159787506508,
+ 52.53119387587783
+ ]
+ ]
+ },
+ "properties": {
+ "id": 600125200,
+ "linkIdReversed": 0,
+ "fromNodeId": 250410065,
+ "toNodeId": 250410047,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 687.9269951612212
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 600125207,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 4.979816201086557,
+ 52.58281127338077
+ ],
+ [
+ 4.977374312300154,
+ 52.579422172657964
+ ],
+ [
+ 4.975171029867436,
+ 52.57636830879741
+ ]
+ ]
+ },
+ "properties": {
+ "id": 600125207,
+ "linkIdReversed": 0,
+ "fromNodeId": 254421020,
+ "toNodeId": 254420009,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 783.0072720015352
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 600125228,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.007828182124694,
+ 52.62870417644299
+ ],
+ [
+ 5.007625207296558,
+ 52.62870952516662
+ ],
+ [
+ 5.007391804828353,
+ 52.6287011732534
+ ],
+ [
+ 5.007319415002216,
+ 52.628696194641016
+ ],
+ [
+ 5.0073032560888455,
+ 52.62869488761462
+ ],
+ [
+ 5.007247141253953,
+ 52.62869006464877
+ ],
+ [
+ 5.0071752329605586,
+ 52.62868300309632
+ ],
+ [
+ 5.007103747120269,
+ 52.62867493672573
+ ],
+ [
+ 5.0070324527510905,
+ 52.62866608541126
+ ],
+ [
+ 5.006961346911245,
+ 52.628656437592724
+ ],
+ [
+ 5.006890549030928,
+ 52.62864605665079
+ ],
+ [
+ 5.006820038006908,
+ 52.62863499283383
+ ],
+ [
+ 5.006750078878618,
+ 52.628622615178436
+ ],
+ [
+ 5.006681142763392,
+ 52.62860780212886
+ ],
+ [
+ 5.006661081407137,
+ 52.62860339607386
+ ],
+ [
+ 5.00661271853425,
+ 52.628592709778175
+ ],
+ [
+ 5.006543023421484,
+ 52.62857986612831
+ ],
+ [
+ 5.006473328349508,
+ 52.62856702243761
+ ],
+ [
+ 5.006403633318293,
+ 52.62855417870604
+ ],
+ [
+ 5.005497559543811,
+ 52.628387294273125
+ ],
+ [
+ 5.005426370192044,
+ 52.628377568961284
+ ],
+ [
+ 5.005356135509321,
+ 52.62836585182574
+ ],
+ [
+ 5.005285865659978,
+ 52.628354208099296
+ ],
+ [
+ 5.005240659991465,
+ 52.6283471954346
+ ],
+ [
+ 5.005215284575944,
+ 52.62834329473579
+ ],
+ [
+ 5.005144202512842,
+ 52.62833331861639
+ ],
+ [
+ 5.0050730203281315,
+ 52.628323549169465
+ ],
+ [
+ 5.005001102404016,
+ 52.628315298286125
+ ],
+ [
+ 5.004722771483198,
+ 52.628263016097755
+ ]
+ ]
+ },
+ "properties": {
+ "id": 600125228,
+ "linkIdReversed": 0,
+ "fromNodeId": 258431169,
+ "toNodeId": 258431130,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 217.02341798156982
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 600125366,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 4.965625977489429,
+ 52.526877380365455
+ ],
+ [
+ 4.965278602263685,
+ 52.52695168997949
+ ],
+ [
+ 4.965211070545358,
+ 52.526969703940445
+ ],
+ [
+ 4.965142072746538,
+ 52.5269853400715
+ ],
+ [
+ 4.965073005859169,
+ 52.527000864184394
+ ],
+ [
+ 4.96500384052435,
+ 52.52701622865986
+ ],
+ [
+ 4.964934675141481,
+ 52.527031593094875
+ ],
+ [
+ 4.964865509710561,
+ 52.5270469574895
+ ],
+ [
+ 4.964796344231592,
+ 52.52706232184368
+ ],
+ [
+ 4.96472727426949,
+ 52.52707784115952
+ ],
+ [
+ 4.964658216492831,
+ 52.52709338027792
+ ],
+ [
+ 4.964589354056435,
+ 52.527109236269546
+ ],
+ [
+ 4.964520498308545,
+ 52.527125103149736
+ ],
+ [
+ 4.964451642511265,
+ 52.52714096998983
+ ],
+ [
+ 4.964349011181122,
+ 52.52716459058833
+ ],
+ [
+ 4.964313888786264,
+ 52.52717285966204
+ ],
+ [
+ 4.964245225408742,
+ 52.52718903594248
+ ],
+ [
+ 4.964176561980991,
+ 52.52720521218312
+ ],
+ [
+ 4.964107999582587,
+ 52.527221545161154
+ ],
+ [
+ 4.964039487202018,
+ 52.527237955757336
+ ],
+ [
+ 4.9639709747706,
+ 52.52725436631382
+ ],
+ [
+ 4.963902462288336,
+ 52.52727077683067
+ ],
+ [
+ 4.963834002912928,
+ 52.527287269757736
+ ],
+ [
+ 4.9637656294994805,
+ 52.52730389605543
+ ],
+ [
+ 4.963697256034601,
+ 52.52732052231365
+ ],
+ [
+ 4.963628882518327,
+ 52.527337148532354
+ ],
+ [
+ 4.9635605384786174,
+ 52.52735382051115
+ ],
+ [
+ 4.963492225519696,
+ 52.52737054073861
+ ],
+ [
+ 4.9634239746750435,
+ 52.5273873573501
+ ],
+ [
+ 4.963355864226183,
+ 52.52740439176636
+ ],
+ [
+ 4.963287753724848,
+ 52.52742142614342
+ ],
+ [
+ 4.963219680548707,
+ 52.52743851845689
+ ],
+ [
+ 4.963151626796992,
+ 52.527455640941675
+ ],
+ [
+ 4.9630835729925575,
+ 52.527472763387266
+ ],
+ [
+ 4.962961793271493,
+ 52.52750334413576
+ ],
+ [
+ 4.962947414123834,
+ 52.52750692814793
+ ],
+ [
+ 4.962879167746293,
+ 52.52752375137211
+ ],
+ [
+ 4.9628108213523605,
+ 52.52754041976448
+ ],
+ [
+ 4.962742416036142,
+ 52.52755699695722
+ ],
+ [
+ 4.962673951766811,
+ 52.527573482902014
+ ],
+ [
+ 4.962605487446431,
+ 52.52758996880717
+ ],
+ [
+ 4.962536989489783,
+ 52.527606402666386
+ ],
+ [
+ 4.9624684566471,
+ 52.52762278254401
+ ],
+ [
+ 4.962399920283786,
+ 52.52763915700878
+ ],
+ [
+ 4.962331383869717,
+ 52.5276555314339
+ ],
+ [
+ 4.962262740967588,
+ 52.52767174100068
+ ],
+ [
+ 4.962194046831896,
+ 52.52768787126996
+ ],
+ [
+ 4.962116014184371,
+ 52.52770619260153
+ ],
+ [
+ 4.962056491526964,
+ 52.52771986836637
+ ],
+ [
+ 4.9619873437098,
+ 52.52773525724612
+ ],
+ [
+ 4.96191819584451,
+ 52.52775064608545
+ ],
+ [
+ 4.961849047931103,
+ 52.52776603488441
+ ],
+ [
+ 4.961779899969596,
+ 52.52778142364297
+ ],
+ [
+ 4.961710751959958,
+ 52.52779681236114
+ ],
+ [
+ 4.961641647628238,
+ 52.52781227364201
+ ],
+ [
+ 4.961572461782506,
+ 52.527827599615726
+ ],
+ [
+ 4.961503272188605,
+ 52.52784291940508
+ ],
+ [
+ 4.961434082546777,
+ 52.52785823915395
+ ],
+ [
+ 4.961364892857039,
+ 52.527873558862375
+ ],
+ [
+ 4.961295703119355,
+ 52.52788887853036
+ ],
+ [
+ 4.961226513333759,
+ 52.52790419815791
+ ],
+ [
+ 4.9611573308369445,
+ 52.52791952992723
+ ],
+ [
+ 4.961088157324533,
+ 52.52793487665381
+ ],
+ [
+ 4.961018983764124,
+ 52.52795022333993
+ ],
+ [
+ 4.960949810155696,
+ 52.52796556998568
+ ],
+ [
+ 4.96088063649928,
+ 52.52798091659098
+ ],
+ [
+ 4.960811465543666,
+ 52.52799626772014
+ ],
+ [
+ 4.960742302187424,
+ 52.5280116315071
+ ],
+ [
+ 4.960673138783123,
+ 52.52802699525364
+ ],
+ [
+ 4.960603975330802,
+ 52.528042358959766
+ ],
+ [
+ 4.960534811830403,
+ 52.528057722625455
+ ],
+ [
+ 4.960465640532116,
+ 52.52807307338223
+ ],
+ [
+ 4.960396510679752,
+ 52.52808840424295
+ ],
+ [
+ 4.96032733191865,
+ 52.52810374607055
+ ],
+ [
+ 4.9602581531095735,
+ 52.52811908785772
+ ],
+ [
+ 4.96018898747697,
+ 52.52813445234331
+ ],
+ [
+ 4.960119822807633,
+ 52.528149818527496
+ ],
+ [
+ 4.960050658090255,
+ 52.52816518467124
+ ],
+ [
+ 4.959981493324806,
+ 52.528180550774515
+ ],
+ [
+ 4.959912391670771,
+ 52.528196025438625
+ ],
+ [
+ 4.959843340176936,
+ 52.52821158639507
+ ],
+ [
+ 4.959774288634515,
+ 52.528227147311185
+ ],
+ [
+ 4.959705234726543,
+ 52.528242704203045
+ ],
+ [
+ 4.959636180366691,
+ 52.52825826036105
+ ],
+ [
+ 4.959567125958263,
+ 52.52827381647887
+ ],
+ [
+ 4.959498071501263,
+ 52.528289372556344
+ ],
+ [
+ 4.959429016995688,
+ 52.52830492859353
+ ],
+ [
+ 4.959359962441538,
+ 52.528320484590445
+ ],
+ [
+ 4.959290907838831,
+ 52.52833604054704
+ ],
+ [
+ 4.95926529924512,
+ 52.52834180821838
+ ],
+ [
+ 4.959222012319109,
+ 52.52835155826326
+ ],
+ [
+ 4.959152962276922,
+ 52.52836711307819
+ ],
+ [
+ 4.959083912186152,
+ 52.528382667852895
+ ],
+ [
+ 4.959014850431139,
+ 52.528398203743016
+ ],
+ [
+ 4.958945780484633,
+ 52.52841372638239
+ ],
+ [
+ 4.958876710489663,
+ 52.52842924898148
+ ],
+ [
+ 4.958807664697854,
+ 52.52844481088424
+ ],
+ [
+ 4.958738550238706,
+ 52.52846026142469
+ ],
+ [
+ 4.958669406203568,
+ 52.52847566402105
+ ],
+ [
+ 4.958600262120276,
+ 52.528491066577004
+ ],
+ [
+ 4.958531117988811,
+ 52.52850646909258
+ ],
+ [
+ 4.958461973809207,
+ 52.528521871567726
+ ],
+ [
+ 4.95839282958143,
+ 52.528537274002545
+ ],
+ [
+ 4.958323685305515,
+ 52.528552676396934
+ ],
+ [
+ 4.958254540981426,
+ 52.52856807875088
+ ],
+ [
+ 4.9581853937725135,
+ 52.52858347646239
+ ],
+ [
+ 4.958116245510448,
+ 52.52859887250293
+ ],
+ [
+ 4.95804709720023,
+ 52.5286142685031
+ ],
+ [
+ 4.957977948841872,
+ 52.52862966446286
+ ],
+ [
+ 4.957908800435393,
+ 52.52864506038227
+ ],
+ [
+ 4.95783965198076,
+ 52.52866045626121
+ ],
+ [
+ 4.95777050347799,
+ 52.528675852099795
+ ],
+ [
+ 4.957701354927095,
+ 52.52869124789795
+ ],
+ [
+ 4.957434169674751,
+ 52.52876809659646
+ ],
+ [
+ 4.957365036524206,
+ 52.528783517607735
+ ],
+ [
+ 4.957295901402274,
+ 52.528798935458425
+ ],
+ [
+ 4.957226767731772,
+ 52.52881435570177
+ ],
+ [
+ 4.957157633823877,
+ 52.52882977559778
+ ],
+ [
+ 4.957088499867796,
+ 52.528845195453435
+ ],
+ [
+ 4.956950231201817,
+ 52.5288760340552
+ ]
+ ]
+ },
+ "properties": {
+ "id": 600125366,
+ "linkIdReversed": 0,
+ "fromNodeId": 252408137,
+ "toNodeId": 251409055,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 629.4849942568959
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 600125370,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 4.990171110802718,
+ 52.59716105697501
+ ],
+ [
+ 4.9901459958673104,
+ 52.597126271818055
+ ],
+ [
+ 4.989962844639381,
+ 52.59687254278591
+ ],
+ [
+ 4.989906915285963,
+ 52.59679506029714
+ ],
+ [
+ 4.989887063396907,
+ 52.59676755803021
+ ],
+ [
+ 4.9897892286203085,
+ 52.59663202041537
+ ],
+ [
+ 4.988995066690548,
+ 52.59553177565722
+ ],
+ [
+ 4.9887680604261755,
+ 52.59521726641741
+ ],
+ [
+ 4.988728909895107,
+ 52.59516302427506
+ ],
+ [
+ 4.98829829000024,
+ 52.59456640027004
+ ],
+ [
+ 4.987147815015913,
+ 52.592972329617794
+ ],
+ [
+ 4.987039878554437,
+ 52.59282276902204
+ ],
+ [
+ 4.986053328143897,
+ 52.59145571703725
+ ],
+ [
+ 4.983985683575166,
+ 52.58859030234661
+ ],
+ [
+ 4.983370110838827,
+ 52.58773714086303
+ ],
+ [
+ 4.982683776453958,
+ 52.58678586341693
+ ],
+ [
+ 4.982321062671075,
+ 52.58628311433985
+ ],
+ [
+ 4.982290931356266,
+ 52.586241349602375
+ ],
+ [
+ 4.982186716474863,
+ 52.586096897222774
+ ],
+ [
+ 4.981929056120008,
+ 52.58573974914176
+ ],
+ [
+ 4.981915786282504,
+ 52.585721399114966
+ ]
+ ]
+ },
+ "properties": {
+ "id": 600125370,
+ "linkIdReversed": 0,
+ "fromNodeId": 256424015,
+ "toNodeId": 255421059,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 1390.4028399163979
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 600125371,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 4.981915786282504,
+ 52.585721399114966
+ ],
+ [
+ 4.981083753206685,
+ 52.58457080495446
+ ],
+ [
+ 4.979816201086571,
+ 52.582811273380784
+ ]
+ ]
+ },
+ "properties": {
+ "id": 600125371,
+ "linkIdReversed": 0,
+ "fromNodeId": 255421059,
+ "toNodeId": 254421020,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 353.69935050019126
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 600125529,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 4.975171029867421,
+ 52.5763683087974
+ ],
+ [
+ 4.973067815630861,
+ 52.57347809100994
+ ],
+ [
+ 4.971845599488942,
+ 52.57168535629544
+ ],
+ [
+ 4.971351383232337,
+ 52.57091072136972
+ ],
+ [
+ 4.971293146554941,
+ 52.57082963197981
+ ],
+ [
+ 4.9708860048327175,
+ 52.57020808351716
+ ],
+ [
+ 4.9703485082110515,
+ 52.569334432273145
+ ],
+ [
+ 4.970261626452097,
+ 52.56916336898644
+ ],
+ [
+ 4.968329760898569,
+ 52.56602000935463
+ ],
+ [
+ 4.966544099335163,
+ 52.56303890456425
+ ],
+ [
+ 4.964888555642738,
+ 52.56035481403231
+ ],
+ [
+ 4.96310283680431,
+ 52.55742757609356
+ ],
+ [
+ 4.961941660777081,
+ 52.55550912620783
+ ],
+ [
+ 4.961665932040537,
+ 52.55504978544238
+ ],
+ [
+ 4.960084354188542,
+ 52.55240183579034
+ ],
+ [
+ 4.954410640885904,
+ 52.5430973766155
+ ],
+ [
+ 4.953568845568446,
+ 52.54175519066088
+ ],
+ [
+ 4.952089365137705,
+ 52.53931420596574
+ ],
+ [
+ 4.951900767853417,
+ 52.53900794461077
+ ],
+ [
+ 4.950643285539236,
+ 52.536999776019165
+ ]
+ ]
+ },
+ "properties": {
+ "id": 600125529,
+ "linkIdReversed": 0,
+ "fromNodeId": 254420009,
+ "toNodeId": 250410065,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 4686.537594825758
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 600125593,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 4.9467900079047,
+ 52.5297577715489
+ ],
+ [
+ 4.946949121091648,
+ 52.5300568657477
+ ],
+ [
+ 4.94722246599957,
+ 52.53055116380845
+ ],
+ [
+ 4.947248148629272,
+ 52.53076273190183
+ ]
+ ]
+ },
+ "properties": {
+ "id": 600125593,
+ "linkIdReversed": 0,
+ "fromNodeId": 250409126,
+ "toNodeId": 250409077,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 116.63689432990826
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 600126037,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 4.949655788026621,
+ 52.53029440533744
+ ],
+ [
+ 4.949361464195368,
+ 52.529802708389866
+ ],
+ [
+ 4.949166546100645,
+ 52.5295238498283
+ ],
+ [
+ 4.948967123976559,
+ 52.52919036070785
+ ],
+ [
+ 4.948907203924798,
+ 52.52909982804092
+ ],
+ [
+ 4.9488410234931655,
+ 52.52901841148642
+ ],
+ [
+ 4.94878604420286,
+ 52.52896283901991
+ ],
+ [
+ 4.948746744255285,
+ 52.528926139513416
+ ],
+ [
+ 4.948701230938234,
+ 52.528890390374656
+ ],
+ [
+ 4.9485991780225,
+ 52.52882253253366
+ ],
+ [
+ 4.948546034438073,
+ 52.52879138543811
+ ],
+ [
+ 4.948465247609643,
+ 52.52874965956851
+ ],
+ [
+ 4.948405603691872,
+ 52.52872314384556
+ ],
+ [
+ 4.948343191319019,
+ 52.52869925475397
+ ],
+ [
+ 4.948248906487126,
+ 52.52866923432263
+ ],
+ [
+ 4.948181856414012,
+ 52.528651309994736
+ ],
+ [
+ 4.948073781475108,
+ 52.52862871232558
+ ],
+ [
+ 4.948001816348121,
+ 52.528618260692674
+ ],
+ [
+ 4.94790424492874,
+ 52.52860979843142
+ ],
+ [
+ 4.947830495115221,
+ 52.528607067437314
+ ],
+ [
+ 4.947736108610603,
+ 52.528607748900505
+ ],
+ [
+ 4.947662905750433,
+ 52.5286115087139
+ ],
+ [
+ 4.947590194862644,
+ 52.52861810132816
+ ],
+ [
+ 4.947518791131077,
+ 52.528627498307706
+ ],
+ [
+ 4.94743290103366,
+ 52.52864287390663
+ ],
+ [
+ 4.9473646276834415,
+ 52.52865858433987
+ ],
+ [
+ 4.947297574863545,
+ 52.52867721116731
+ ],
+ [
+ 4.947194064880816,
+ 52.528712357338904
+ ],
+ [
+ 4.947134246152327,
+ 52.528737173533244
+ ],
+ [
+ 4.947072151809677,
+ 52.52876719034453
+ ],
+ [
+ 4.947018780772414,
+ 52.528797553130154
+ ],
+ [
+ 4.946968566096695,
+ 52.52883043687319
+ ],
+ [
+ 4.946923394474826,
+ 52.528863875845694
+ ],
+ [
+ 4.9468804835020395,
+ 52.52889995828553
+ ],
+ [
+ 4.946841053605416,
+ 52.52893791940276
+ ],
+ [
+ 4.946804073911729,
+ 52.52897931738264
+ ],
+ [
+ 4.946773012666432,
+ 52.5290197900398
+ ],
+ [
+ 4.946744575873215,
+ 52.52906351686974
+ ],
+ [
+ 4.94672169985094,
+ 52.52910554054749
+ ],
+ [
+ 4.946705556544943,
+ 52.52914139150865
+ ],
+ [
+ 4.946690674166707,
+ 52.52918541487499
+ ],
+ [
+ 4.94667536662874,
+ 52.52926436789995
+ ],
+ [
+ 4.946672660381925,
+ 52.5293094798822
+ ],
+ [
+ 4.946673675391808,
+ 52.52935441424242
+ ],
+ [
+ 4.9466777398206565,
+ 52.52939930509549
+ ],
+ [
+ 4.9466900056791845,
+ 52.52947382990247
+ ],
+ [
+ 4.946699698342063,
+ 52.529518245535684
+ ],
+ [
+ 4.946711919353587,
+ 52.52956256000467
+ ],
+ [
+ 4.946735787250405,
+ 52.52963311409221
+ ],
+ [
+ 4.946752931377185,
+ 52.52967673502239
+ ],
+ [
+ 4.9467900079047,
+ 52.5297577715489
+ ]
+ ]
+ },
+ "properties": {
+ "id": 600126037,
+ "linkIdReversed": 0,
+ "fromNodeId": 250409128,
+ "toNodeId": 250409126,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 413.18063488254063
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 600126141,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 4.956950231160104,
+ 52.528876034098396
+ ],
+ [
+ 4.956812165550626,
+ 52.528906827552206
+ ],
+ [
+ 4.956743181119858,
+ 52.52892221284561
+ ],
+ [
+ 4.956674195333278,
+ 52.528937596206724
+ ],
+ [
+ 4.956605212110846,
+ 52.52895298367129
+ ],
+ [
+ 4.9565362281141425,
+ 52.52896837001452
+ ],
+ [
+ 4.956398261320519,
+ 52.528999140787796
+ ],
+ [
+ 4.956181834396695,
+ 52.52902958898018
+ ],
+ [
+ 4.956112997179685,
+ 52.529045218898894
+ ],
+ [
+ 4.956043849288963,
+ 52.52906033384129
+ ],
+ [
+ 4.95597489654387,
+ 52.529075772188875
+ ],
+ [
+ 4.955905953320936,
+ 52.529091226438744
+ ],
+ [
+ 4.955837010196303,
+ 52.52910668073887
+ ],
+ [
+ 4.955768067166462,
+ 52.52912213544869
+ ],
+ [
+ 4.955699119594089,
+ 52.529137582552636
+ ],
+ [
+ 4.955630088879127,
+ 52.52915289198723
+ ],
+ [
+ 4.955561058117256,
+ 52.52916820129174
+ ],
+ [
+ 4.9554920273076,
+ 52.529183510555974
+ ],
+ [
+ 4.95542299645016,
+ 52.52919881977995
+ ],
+ [
+ 4.955353952640928,
+ 52.52921410734703
+ ],
+ [
+ 4.95528490298103,
+ 52.52922938550584
+ ],
+ [
+ 4.955215853273433,
+ 52.52924466362436
+ ],
+ [
+ 4.955146803518135,
+ 52.52925994170261
+ ],
+ [
+ 4.955077753715135,
+ 52.529275219740555
+ ],
+ [
+ 4.9550087038644355,
+ 52.52929049773824
+ ],
+ [
+ 4.954939654113395,
+ 52.52930577569619
+ ],
+ [
+ 4.954870604168174,
+ 52.52932105352341
+ ],
+ [
+ 4.954801554174371,
+ 52.52933633140028
+ ],
+ [
+ 4.95473250413287,
+ 52.529351609236784
+ ],
+ [
+ 4.954663497548115,
+ 52.52936695900068
+ ],
+ [
+ 4.954594501355421,
+ 52.529382326108006
+ ],
+ [
+ 4.954525507142592,
+ 52.52939769677745
+ ],
+ [
+ 4.954456518539879,
+ 52.52941307650457
+ ],
+ [
+ 4.954387529741829,
+ 52.52942845619088
+ ],
+ [
+ 4.954318541043164,
+ 52.52944383583755
+ ],
+ [
+ 4.954249552296517,
+ 52.52945921544399
+ ],
+ [
+ 4.954180563354539,
+ 52.529474595009695
+ ],
+ [
+ 4.954111574511942,
+ 52.52948997453571
+ ],
+ [
+ 4.954042585474008,
+ 52.52950535402099
+ ],
+ [
+ 4.953973566954579,
+ 52.529520684377445
+ ],
+ [
+ 4.9539052155567775,
+ 52.529537121227605
+ ],
+ [
+ 4.951275373792191,
+ 52.53016256522819
+ ],
+ [
+ 4.951235829063425,
+ 52.53017256162802
+ ],
+ [
+ 4.951169417554139,
+ 52.53019178229593
+ ],
+ [
+ 4.951103353010733,
+ 52.53021149805747
+ ],
+ [
+ 4.951037258247952,
+ 52.530231163971074
+ ],
+ [
+ 4.950970678904472,
+ 52.530250141342094
+ ],
+ [
+ 4.950904018803709,
+ 52.530269008463435
+ ],
+ [
+ 4.950836985178728,
+ 52.53028734248145
+ ],
+ [
+ 4.950769615376031,
+ 52.53030519691774
+ ],
+ [
+ 4.950736485866946,
+ 52.53031396191933
+ ],
+ [
+ 4.950701976907353,
+ 52.530323091939465
+ ],
+ [
+ 4.950634614709915,
+ 52.53034095603357
+ ],
+ [
+ 4.950567267286409,
+ 52.530358840635074
+ ],
+ [
+ 4.950499919954892,
+ 52.53037672528858
+ ],
+ [
+ 4.950432557592307,
+ 52.530394589447326
+ ],
+ [
+ 4.950365458453934,
+ 52.53041281798588
+ ],
+ [
+ 4.950297138828726,
+ 52.530429356143294
+ ],
+ [
+ 4.949972626972173,
+ 52.53053571532709
+ ]
+ ]
+ },
+ "properties": {
+ "id": 600126141,
+ "linkIdReversed": 0,
+ "fromNodeId": 251409055,
+ "toNodeId": 250409130,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 508.727485788318
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 600126143,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 4.949838795167102,
+ 52.53057204359935
+ ],
+ [
+ 4.949655788026621,
+ 52.53029440533744
+ ]
+ ]
+ },
+ "properties": {
+ "id": 600126143,
+ "linkIdReversed": 0,
+ "fromNodeId": 250409131,
+ "toNodeId": 250409128,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 33.29524761882824
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 600126144,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 4.949972626972173,
+ 52.53053571532709
+ ],
+ [
+ 4.949909192856507,
+ 52.53055274641777
+ ],
+ [
+ 4.949838795167102,
+ 52.53057204359935
+ ]
+ ]
+ },
+ "properties": {
+ "id": 600126144,
+ "linkIdReversed": 0,
+ "fromNodeId": 250409130,
+ "toNodeId": 250409131,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 9.940629878531333
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 600455879,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 4.990506097929822,
+ 52.59716625958632
+ ],
+ [
+ 4.990594671875662,
+ 52.59728897624692
+ ],
+ [
+ 4.990626339416316,
+ 52.59733285082141
+ ],
+ [
+ 4.99067502592492,
+ 52.597400304135746
+ ],
+ [
+ 4.9908458691710695,
+ 52.59763699957224
+ ],
+ [
+ 4.99140553267203,
+ 52.59841236791395
+ ],
+ [
+ 4.991668157488042,
+ 52.59877620295359
+ ],
+ [
+ 4.992224779287744,
+ 52.59954731363604
+ ],
+ [
+ 4.992709008895388,
+ 52.60021811213389
+ ],
+ [
+ 4.992822690232393,
+ 52.600375590540345
+ ],
+ [
+ 4.993077219732089,
+ 52.60072817602161
+ ],
+ [
+ 4.993272481709995,
+ 52.600998657271305
+ ],
+ [
+ 4.9936434746494,
+ 52.601512554891904
+ ],
+ [
+ 4.99365462995902,
+ 52.60152800704024
+ ],
+ [
+ 4.9939384166219165,
+ 52.60192109792651
+ ],
+ [
+ 4.994328244387675,
+ 52.6024610602241
+ ],
+ [
+ 4.9944577619718125,
+ 52.60264045587812
+ ],
+ [
+ 4.994971534624732,
+ 52.60335206940896
+ ],
+ [
+ 4.995115486016336,
+ 52.603551448497875
+ ],
+ [
+ 4.995658595160646,
+ 52.60430366028938
+ ],
+ [
+ 4.995774269940593,
+ 52.604463867424165
+ ],
+ [
+ 4.996259061758745,
+ 52.60513528002634
+ ],
+ [
+ 4.996446505422742,
+ 52.605394874069994
+ ],
+ [
+ 4.99661539773003,
+ 52.60562877320625
+ ],
+ [
+ 4.996789215347784,
+ 52.60586960920997
+ ],
+ [
+ 4.99703594668041,
+ 52.60621146729848
+ ],
+ [
+ 4.997433574926619,
+ 52.60676238780747
+ ],
+ [
+ 4.997631519645929,
+ 52.607036637788156
+ ],
+ [
+ 4.997915537102804,
+ 52.607430134011445
+ ],
+ [
+ 4.998163115742023,
+ 52.60777313922208
+ ],
+ [
+ 4.998613801299787,
+ 52.60839752181081
+ ],
+ [
+ 4.998683374360806,
+ 52.608493907088324
+ ],
+ [
+ 4.999183946999505,
+ 52.60918737726732
+ ],
+ [
+ 4.999380176228366,
+ 52.60945921742078
+ ],
+ [
+ 4.999680426317695,
+ 52.60987515284176
+ ],
+ [
+ 4.99993557476304,
+ 52.610228602466485
+ ],
+ [
+ 5.000227451362375,
+ 52.61063292258224
+ ],
+ [
+ 5.00046002101285,
+ 52.61095508250063
+ ],
+ [
+ 5.000534379489359,
+ 52.61105808407805
+ ],
+ [
+ 5.000599891960123,
+ 52.61114954839421
+ ],
+ [
+ 5.000680486051946,
+ 52.61126206834347
+ ],
+ [
+ 5.000770432763695,
+ 52.611387644924264
+ ],
+ [
+ 5.0010046884258195,
+ 52.6117177027094
+ ],
+ [
+ 5.001102541930556,
+ 52.6118588115437
+ ],
+ [
+ 5.001144706367137,
+ 52.61191961408949
+ ],
+ [
+ 5.001170786151719,
+ 52.61195799728021
+ ],
+ [
+ 5.001370496922896,
+ 52.61225192185639
+ ],
+ [
+ 5.001480496724055,
+ 52.61241875099385
+ ],
+ [
+ 5.001580732916328,
+ 52.61257545314448
+ ],
+ [
+ 5.001596113654704,
+ 52.61259949816721
+ ],
+ [
+ 5.001694777788407,
+ 52.61275374116533
+ ],
+ [
+ 5.001876030965471,
+ 52.61304992329332
+ ],
+ [
+ 5.00191357189961,
+ 52.61311393236941
+ ],
+ [
+ 5.001989708506146,
+ 52.613243748009694
+ ],
+ [
+ 5.00207460093447,
+ 52.61338849170827
+ ],
+ [
+ 5.002197365476501,
+ 52.61360723175695
+ ],
+ [
+ 5.002306146507699,
+ 52.61380105456968
+ ],
+ [
+ 5.002326047945942,
+ 52.61383835151214
+ ],
+ [
+ 5.00253204617649,
+ 52.61422440573436
+ ],
+ [
+ 5.002543895228817,
+ 52.61424789196564
+ ],
+ [
+ 5.002605978254725,
+ 52.61437094710769
+ ],
+ [
+ 5.002705255704448,
+ 52.614567724213416
+ ],
+ [
+ 5.002789560257883,
+ 52.614739986136264
+ ],
+ [
+ 5.002796124647798,
+ 52.61475394161122
+ ],
+ [
+ 5.002883042592708,
+ 52.614938725015456
+ ],
+ [
+ 5.0029534639182485,
+ 52.61508843634039
+ ],
+ [
+ 5.003031842065212,
+ 52.61526173040865
+ ],
+ [
+ 5.003067516022821,
+ 52.6153434390263
+ ]
+ ]
+ },
+ "properties": {
+ "id": 600455879,
+ "linkIdReversed": 0,
+ "fromNodeId": 256424016,
+ "toNodeId": 600126063,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 2195.7890965586575
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 600455880,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.003067516022821,
+ 52.6153434390263
+ ],
+ [
+ 5.003187357373059,
+ 52.615617924334906
+ ],
+ [
+ 5.003191340233758,
+ 52.61562743403115
+ ],
+ [
+ 5.003260177608632,
+ 52.61579179612222
+ ],
+ [
+ 5.003315948836793,
+ 52.61592966359425
+ ],
+ [
+ 5.003330779353858,
+ 52.61596632484454
+ ],
+ [
+ 5.003465958280536,
+ 52.61631627758508
+ ],
+ [
+ 5.003576729511582,
+ 52.61662088302354
+ ],
+ [
+ 5.003638086481854,
+ 52.61679672077824
+ ],
+ [
+ 5.003663416332683,
+ 52.61687138950285
+ ],
+ [
+ 5.0036978032180315,
+ 52.61697275631152
+ ],
+ [
+ 5.003799128675387,
+ 52.617285711547375
+ ],
+ [
+ 5.003852586908382,
+ 52.61746248621094
+ ],
+ [
+ 5.003955141329473,
+ 52.61781653993818
+ ],
+ [
+ 5.004005834412134,
+ 52.618004784806864
+ ],
+ [
+ 5.004035397722938,
+ 52.61811456490902
+ ],
+ [
+ 5.004144014522507,
+ 52.618552389310246
+ ],
+ [
+ 5.004223982958791,
+ 52.618908616717775
+ ],
+ [
+ 5.00429959824652,
+ 52.619265158948224
+ ],
+ [
+ 5.004406332155823,
+ 52.61980045523348
+ ],
+ [
+ 5.004440523228871,
+ 52.6199789873762
+ ],
+ [
+ 5.004447449352115,
+ 52.620017444605416
+ ],
+ [
+ 5.004514571793226,
+ 52.62039014152976
+ ],
+ [
+ 5.004569243091575,
+ 52.62069369920597
+ ],
+ [
+ 5.004718371396004,
+ 52.62145311517144
+ ],
+ [
+ 5.004788494333092,
+ 52.62181019755693
+ ],
+ [
+ 5.004793057674963,
+ 52.621833434861585
+ ],
+ [
+ 5.004818119791729,
+ 52.62196105540855
+ ],
+ [
+ 5.004835194982357,
+ 52.62204800513818
+ ],
+ [
+ 5.004836248734401,
+ 52.622053334494154
+ ]
+ ]
+ },
+ "properties": {
+ "id": 600455880,
+ "linkIdReversed": 0,
+ "fromNodeId": 600126063,
+ "toNodeId": 258430004,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 757.0340664976563
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 600455881,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.005961111560706,
+ 52.629283159296136
+ ],
+ [
+ 5.005959418413479,
+ 52.62927463990271
+ ],
+ [
+ 5.005912827301744,
+ 52.629035895032324
+ ],
+ [
+ 5.005861222776356,
+ 52.628771457435676
+ ],
+ [
+ 5.0057994837021225,
+ 52.628455082786445
+ ],
+ [
+ 5.005756216330363,
+ 52.628233361749906
+ ],
+ [
+ 5.005578277597897,
+ 52.62732150044236
+ ],
+ [
+ 5.005569683073932,
+ 52.62727745644205
+ ],
+ [
+ 5.005458913550683,
+ 52.626713337576795
+ ],
+ [
+ 5.005080778066274,
+ 52.624787488587195
+ ],
+ [
+ 5.005011797261541,
+ 52.62443614977977
+ ],
+ [
+ 5.004661055320319,
+ 52.62264963627575
+ ],
+ [
+ 5.004508756997835,
+ 52.62187385552638
+ ],
+ [
+ 5.0042602894375445,
+ 52.620608145584285
+ ],
+ [
+ 5.004101776032497,
+ 52.6198006299958
+ ],
+ [
+ 5.004098493437278,
+ 52.61978409194286
+ ],
+ [
+ 5.004007777974713,
+ 52.619327054257454
+ ],
+ [
+ 5.003934162563497,
+ 52.618970374494126
+ ],
+ [
+ 5.003877470436514,
+ 52.6187129485191
+ ],
+ [
+ 5.003855695773883,
+ 52.618614074444174
+ ],
+ [
+ 5.003813545275727,
+ 52.6184361517919
+ ],
+ [
+ 5.003751291901783,
+ 52.618185873341034
+ ],
+ [
+ 5.003704365966554,
+ 52.61800839357263
+ ],
+ [
+ 5.003655381558661,
+ 52.61783113630898
+ ],
+ [
+ 5.003634875223837,
+ 52.617761249865204
+ ],
+ [
+ 5.003551544865156,
+ 52.61747725343063
+ ],
+ [
+ 5.003496571431027,
+ 52.61730064090049
+ ],
+ [
+ 5.00340887160903,
+ 52.617032177214895
+ ],
+ [
+ 5.003395157503272,
+ 52.61699220080846
+ ],
+ [
+ 5.003288130099084,
+ 52.61668021483381
+ ],
+ [
+ 5.003225266828653,
+ 52.61650457962837
+ ],
+ [
+ 5.003101348070092,
+ 52.61617458845676
+ ],
+ [
+ 5.003032410280574,
+ 52.61599979986112
+ ],
+ [
+ 5.002974237874545,
+ 52.61585943783645
+ ],
+ [
+ 5.002887951007876,
+ 52.61565123746163
+ ],
+ [
+ 5.002849430231485,
+ 52.615563658609865
+ ],
+ [
+ 5.002738053790397,
+ 52.61531043700897
+ ]
+ ]
+ },
+ "properties": {
+ "id": 600455881,
+ "linkIdReversed": 0,
+ "fromNodeId": 258431144,
+ "toNodeId": 600126064,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 1571.2635534767821
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 600455882,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.002738053790397,
+ 52.61531043700897
+ ],
+ [
+ 5.002705381056388,
+ 52.61523615259178
+ ],
+ [
+ 5.002681682367432,
+ 52.615185007787616
+ ],
+ [
+ 5.002545064398186,
+ 52.61489016625977
+ ],
+ [
+ 5.00243684406561,
+ 52.61466551963353
+ ],
+ [
+ 5.002263321758506,
+ 52.61432186273568
+ ],
+ [
+ 5.002257005925656,
+ 52.61430986930464
+ ],
+ [
+ 5.002083037344727,
+ 52.61397951015024
+ ],
+ [
+ 5.001908266147303,
+ 52.61366143330402
+ ],
+ [
+ 5.001812156573193,
+ 52.613491738709044
+ ],
+ [
+ 5.001805065095785,
+ 52.61347956038673
+ ],
+ [
+ 5.001614833961356,
+ 52.61315286924101
+ ],
+ [
+ 5.001413990572722,
+ 52.6128232196115
+ ],
+ [
+ 5.001200884491992,
+ 52.61248795774284
+ ],
+ [
+ 5.0010171780177926,
+ 52.61220933738901
+ ],
+ [
+ 5.000904398189238,
+ 52.61204326627999
+ ],
+ [
+ 5.0008725454351985,
+ 52.61199750377156
+ ],
+ [
+ 5.000674010589852,
+ 52.61171226826155
+ ],
+ [
+ 5.000204123295343,
+ 52.61105261553053
+ ],
+ [
+ 4.999709412093817,
+ 52.61036963759879
+ ],
+ [
+ 4.999535264179374,
+ 52.61012921053717
+ ],
+ [
+ 4.998481331897635,
+ 52.60866805224369
+ ],
+ [
+ 4.998348157976457,
+ 52.608483414135
+ ],
+ [
+ 4.997175398649526,
+ 52.606859944915456
+ ],
+ [
+ 4.996399922881949,
+ 52.60578636931482
+ ],
+ [
+ 4.994511243864562,
+ 52.60317142424529
+ ],
+ [
+ 4.993284564178085,
+ 52.60147285832841
+ ],
+ [
+ 4.992729650818409,
+ 52.6007044304499
+ ],
+ [
+ 4.991418940500473,
+ 52.59888927969283
+ ],
+ [
+ 4.990638469740637,
+ 52.597808358629706
+ ],
+ [
+ 4.99041496762034,
+ 52.59749880634271
+ ],
+ [
+ 4.990326739176512,
+ 52.59737660774224
+ ],
+ [
+ 4.990191417908757,
+ 52.59718918325609
+ ],
+ [
+ 4.990171110802718,
+ 52.59716105697501
+ ]
+ ]
+ },
+ "properties": {
+ "id": 600455882,
+ "linkIdReversed": 0,
+ "fromNodeId": 600126064,
+ "toNodeId": 256424015,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 2193.0027368110273
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 600767674,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 4.963846076183175,
+ 52.524027310735164
+ ],
+ [
+ 4.963848628766102,
+ 52.52403005910684
+ ],
+ [
+ 4.963880704273839,
+ 52.524076600841674
+ ],
+ [
+ 4.964152954972651,
+ 52.524521348186816
+ ],
+ [
+ 4.964180485653301,
+ 52.52455383394437
+ ],
+ [
+ 4.964228220017123,
+ 52.52459220380828
+ ],
+ [
+ 4.9642472249693865,
+ 52.52461052991432
+ ],
+ [
+ 4.964266384905864,
+ 52.52463404182772
+ ],
+ [
+ 4.96429312861453,
+ 52.5246728935122
+ ],
+ [
+ 4.964330230502828,
+ 52.52473236055339
+ ],
+ [
+ 4.964407536072666,
+ 52.524868027018
+ ],
+ [
+ 4.964609740253771,
+ 52.52519477047254
+ ],
+ [
+ 4.964733871443549,
+ 52.525400977491294
+ ]
+ ]
+ },
+ "properties": {
+ "id": 600767674,
+ "linkIdReversed": 0,
+ "fromNodeId": 600145067,
+ "toNodeId": 252408156,
+ "speedInKilometersPerHour": 100.0,
+ "reverseSpeedInKilometersPerHour": 100.0,
+ "distanceInMeters": 164.60704221829818
+ }
+ }
+ ]
+}
diff --git a/map-matcher-library/src/test/resources/test-data/network_bidirectional.geojson b/map-matcher-library/src/test/resources/test-data/network_bidirectional.geojson
new file mode 100644
index 00000000..72013f98
--- /dev/null
+++ b/map-matcher-library/src/test/resources/test-data/network_bidirectional.geojson
@@ -0,0 +1,9917 @@
+{
+ "type": "FeatureCollection",
+ "features": [
+ {
+ "type": "Feature",
+ "id": 3666076,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431601,
+ 52.178947
+ ],
+ [
+ 5.43111,
+ 52.178622
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666076,
+ "linkIdReversed": 0,
+ "fromNodeId": 596829,
+ "toNodeId": 3873575,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.372
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666077,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.43111,
+ 52.178622
+ ],
+ [
+ 5.431077,
+ 52.1786
+ ],
+ [
+ 5.430663,
+ 52.178413
+ ],
+ [
+ 5.430526,
+ 52.178363
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666077,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873575,
+ "toNodeId": 3873576,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.372
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666078,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430526,
+ 52.178363
+ ],
+ [
+ 5.430206,
+ 52.178246
+ ],
+ [
+ 5.429884,
+ 52.178165
+ ],
+ [
+ 5.429882,
+ 52.178165
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666078,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873576,
+ "toNodeId": 3873577,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.372
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666079,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429882,
+ 52.178165
+ ],
+ [
+ 5.429507,
+ 52.178104
+ ],
+ [
+ 5.42918,
+ 52.178064
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666079,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873577,
+ "toNodeId": 3873578,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.372
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666080,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42918,
+ 52.178064
+ ],
+ [
+ 5.429103,
+ 52.178055
+ ],
+ [
+ 5.428641,
+ 52.178005
+ ],
+ [
+ 5.428467,
+ 52.177998
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666080,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873578,
+ "toNodeId": 3873579,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.372
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666081,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428467,
+ 52.177998
+ ],
+ [
+ 5.427836,
+ 52.177971
+ ],
+ [
+ 5.427747,
+ 52.17797
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666081,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873579,
+ "toNodeId": 3873580,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.372
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666082,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427747,
+ 52.17797
+ ],
+ [
+ 5.427079,
+ 52.177963
+ ],
+ [
+ 5.427025,
+ 52.177964
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666082,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873580,
+ "toNodeId": 3873581,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.372
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666083,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427025,
+ 52.177964
+ ],
+ [
+ 5.426695,
+ 52.177971
+ ],
+ [
+ 5.426323,
+ 52.178013
+ ],
+ [
+ 5.42631,
+ 52.178015
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666083,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873581,
+ "toNodeId": 3873582,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.372
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666084,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42631,
+ 52.178015
+ ],
+ [
+ 5.42593,
+ 52.178082
+ ],
+ [
+ 5.425628,
+ 52.178159
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666084,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873582,
+ "toNodeId": 3873583,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.372
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666085,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425628,
+ 52.178159
+ ],
+ [
+ 5.425557,
+ 52.178177
+ ],
+ [
+ 5.425227,
+ 52.178303
+ ],
+ [
+ 5.425037,
+ 52.178409
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666085,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873583,
+ "toNodeId": 3873584,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.372
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666086,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425037,
+ 52.178409
+ ],
+ [
+ 5.424503,
+ 52.178707
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666086,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873584,
+ "toNodeId": 596830,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.372
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666087,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431601,
+ 52.178947
+ ],
+ [
+ 5.431217,
+ 52.178606
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666087,
+ "linkIdReversed": 0,
+ "fromNodeId": 596829,
+ "toNodeId": 3873585,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.171
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666088,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431217,
+ 52.178606
+ ],
+ [
+ 5.430834,
+ 52.178264
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666088,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873585,
+ "toNodeId": 3873586,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.171
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666089,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430834,
+ 52.178264
+ ],
+ [
+ 5.43045,
+ 52.177923
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666089,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873586,
+ "toNodeId": 3873587,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.171
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666090,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.43045,
+ 52.177923
+ ],
+ [
+ 5.430067,
+ 52.177581
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666090,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873587,
+ "toNodeId": 3873588,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.171
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666091,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430067,
+ 52.177581
+ ],
+ [
+ 5.429754,
+ 52.177303
+ ],
+ [
+ 5.429681,
+ 52.177241
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666091,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873588,
+ "toNodeId": 3873589,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.171
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666092,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429681,
+ 52.177241
+ ],
+ [
+ 5.429287,
+ 52.176904
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666092,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873589,
+ "toNodeId": 3873590,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.171
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666093,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429287,
+ 52.176904
+ ],
+ [
+ 5.428893,
+ 52.176567
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666093,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873590,
+ "toNodeId": 596831,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.171
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666094,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432959,
+ 52.180065
+ ],
+ [
+ 5.432619,
+ 52.179786
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666094,
+ "linkIdReversed": 0,
+ "fromNodeId": 596832,
+ "toNodeId": 3873591,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 38.814
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666095,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432619,
+ 52.179786
+ ],
+ [
+ 5.43228,
+ 52.179506
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666095,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873591,
+ "toNodeId": 3873592,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 38.814
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666096,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.43228,
+ 52.179506
+ ],
+ [
+ 5.43194,
+ 52.179227
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666096,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873592,
+ "toNodeId": 3873593,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 38.814
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666097,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.43194,
+ 52.179227
+ ],
+ [
+ 5.431601,
+ 52.178947
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666097,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873593,
+ "toNodeId": 596829,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 38.814
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666098,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427439,
+ 52.176617
+ ],
+ [
+ 5.427006,
+ 52.176908
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666098,
+ "linkIdReversed": 0,
+ "fromNodeId": 596833,
+ "toNodeId": 3873594,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 43.905
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666099,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427006,
+ 52.176908
+ ],
+ [
+ 5.426791,
+ 52.177052
+ ],
+ [
+ 5.426578,
+ 52.177202
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666099,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873594,
+ "toNodeId": 3873595,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 43.905
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666100,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426578,
+ 52.177202
+ ],
+ [
+ 5.426155,
+ 52.177499
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666100,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873595,
+ "toNodeId": 3873596,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 43.905
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666101,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426155,
+ 52.177499
+ ],
+ [
+ 5.425733,
+ 52.177796
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666101,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873596,
+ "toNodeId": 3873597,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 43.905
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666102,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425733,
+ 52.177796
+ ],
+ [
+ 5.425619,
+ 52.177876
+ ],
+ [
+ 5.42532,
+ 52.178098
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666102,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873597,
+ "toNodeId": 3873598,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 43.905
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666103,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42532,
+ 52.178098
+ ],
+ [
+ 5.424912,
+ 52.178403
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666103,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873598,
+ "toNodeId": 3873599,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 43.905
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666104,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424912,
+ 52.178403
+ ],
+ [
+ 5.424503,
+ 52.178707
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666104,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873599,
+ "toNodeId": 596830,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 43.905
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666105,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424503,
+ 52.178707
+ ],
+ [
+ 5.424101,
+ 52.178989
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666105,
+ "linkIdReversed": 0,
+ "fromNodeId": 596830,
+ "toNodeId": 3873600,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 41.702
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666106,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424101,
+ 52.178989
+ ],
+ [
+ 5.4237,
+ 52.179271
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666106,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873600,
+ "toNodeId": 3873601,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 41.702
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666107,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.4237,
+ 52.179271
+ ],
+ [
+ 5.423427,
+ 52.179462
+ ],
+ [
+ 5.423301,
+ 52.179555
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666107,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873601,
+ "toNodeId": 3873602,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 41.702
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666108,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.423301,
+ 52.179555
+ ],
+ [
+ 5.422911,
+ 52.179842
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666108,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873602,
+ "toNodeId": 3873603,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 41.702
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666109,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.422911,
+ 52.179842
+ ],
+ [
+ 5.42252,
+ 52.18013
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666109,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873603,
+ "toNodeId": 596834,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 41.702
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666110,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427436,
+ 52.175301
+ ],
+ [
+ 5.427038,
+ 52.174931
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666110,
+ "linkIdReversed": 0,
+ "fromNodeId": 596835,
+ "toNodeId": 3873604,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.328
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666111,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427038,
+ 52.174931
+ ],
+ [
+ 5.426641,
+ 52.174561
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666111,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873604,
+ "toNodeId": 3873605,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.328
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666112,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426641,
+ 52.174561
+ ],
+ [
+ 5.426505,
+ 52.174435
+ ],
+ [
+ 5.426269,
+ 52.174182
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666112,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873605,
+ "toNodeId": 3873606,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.328
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666113,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426269,
+ 52.174182
+ ],
+ [
+ 5.42591,
+ 52.173797
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666113,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873606,
+ "toNodeId": 3873607,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.328
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666114,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42591,
+ 52.173797
+ ],
+ [
+ 5.425682,
+ 52.173553
+ ],
+ [
+ 5.425613,
+ 52.173397
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666114,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873607,
+ "toNodeId": 596836,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.328
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666115,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427436,
+ 52.175301
+ ],
+ [
+ 5.427168,
+ 52.175137
+ ],
+ [
+ 5.426982,
+ 52.17506
+ ],
+ [
+ 5.426875,
+ 52.175031
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666115,
+ "linkIdReversed": 0,
+ "fromNodeId": 596835,
+ "toNodeId": 3873608,
+ "speedInKilometersPerHour": 79.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.247
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666116,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426875,
+ 52.175031
+ ],
+ [
+ 5.426734,
+ 52.174992
+ ],
+ [
+ 5.426459,
+ 52.174976
+ ],
+ [
+ 5.426199,
+ 52.174995
+ ],
+ [
+ 5.426173,
+ 52.175001
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666116,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873608,
+ "toNodeId": 3873609,
+ "speedInKilometersPerHour": 79.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.247
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666117,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426173,
+ 52.175001
+ ],
+ [
+ 5.425914,
+ 52.17506
+ ],
+ [
+ 5.425746,
+ 52.17514
+ ],
+ [
+ 5.425612,
+ 52.175228
+ ],
+ [
+ 5.425594,
+ 52.175247
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666117,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873609,
+ "toNodeId": 3873610,
+ "speedInKilometersPerHour": 79.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.247
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666118,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425594,
+ 52.175247
+ ],
+ [
+ 5.425488,
+ 52.175358
+ ],
+ [
+ 5.425406,
+ 52.175503
+ ],
+ [
+ 5.425382,
+ 52.175662
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666118,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873610,
+ "toNodeId": 3873611,
+ "speedInKilometersPerHour": 79.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.247
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666119,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425382,
+ 52.175662
+ ],
+ [
+ 5.425381,
+ 52.175671
+ ],
+ [
+ 5.425436,
+ 52.175835
+ ],
+ [
+ 5.425518,
+ 52.175953
+ ],
+ [
+ 5.425622,
+ 52.176044
+ ],
+ [
+ 5.425653,
+ 52.176063
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666119,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873611,
+ "toNodeId": 3873612,
+ "speedInKilometersPerHour": 79.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.247
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666120,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425653,
+ 52.176063
+ ],
+ [
+ 5.425793,
+ 52.176147
+ ],
+ [
+ 5.426001,
+ 52.176224
+ ],
+ [
+ 5.426264,
+ 52.17627
+ ],
+ [
+ 5.426272,
+ 52.176271
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666120,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873612,
+ "toNodeId": 3873613,
+ "speedInKilometersPerHour": 79.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.247
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666121,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426272,
+ 52.176271
+ ],
+ [
+ 5.426511,
+ 52.176289
+ ],
+ [
+ 5.426772,
+ 52.176262
+ ],
+ [
+ 5.426965,
+ 52.176204
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666121,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873613,
+ "toNodeId": 3873614,
+ "speedInKilometersPerHour": 79.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.247
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666122,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426965,
+ 52.176204
+ ],
+ [
+ 5.427002,
+ 52.176193
+ ],
+ [
+ 5.427353,
+ 52.176022
+ ],
+ [
+ 5.427542,
+ 52.175941
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666122,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873614,
+ "toNodeId": 596837,
+ "speedInKilometersPerHour": 79.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.247
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666123,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427756,
+ 52.175579
+ ],
+ [
+ 5.427436,
+ 52.175301
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666123,
+ "linkIdReversed": 0,
+ "fromNodeId": 596838,
+ "toNodeId": 596835,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 37.896
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666124,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427942,
+ 52.175461
+ ],
+ [
+ 5.427554,
+ 52.175117
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666124,
+ "linkIdReversed": 0,
+ "fromNodeId": 596839,
+ "toNodeId": 3873615,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.586
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666125,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427554,
+ 52.175117
+ ],
+ [
+ 5.427166,
+ 52.174773
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666125,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873615,
+ "toNodeId": 3873616,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.586
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666126,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427166,
+ 52.174773
+ ],
+ [
+ 5.426777,
+ 52.174429
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666126,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873616,
+ "toNodeId": 3873617,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.586
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666127,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426777,
+ 52.174429
+ ],
+ [
+ 5.426389,
+ 52.174085
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666127,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873617,
+ "toNodeId": 3873618,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.586
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666128,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426389,
+ 52.174085
+ ],
+ [
+ 5.426001,
+ 52.173741
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666128,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873618,
+ "toNodeId": 3873619,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.586
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666129,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426001,
+ 52.173741
+ ],
+ [
+ 5.425613,
+ 52.173397
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666129,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873619,
+ "toNodeId": 596836,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.586
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666130,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425613,
+ 52.173397
+ ],
+ [
+ 5.425311,
+ 52.173067
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666130,
+ "linkIdReversed": 0,
+ "fromNodeId": 596836,
+ "toNodeId": 3873620,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 42.122
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666131,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425311,
+ 52.173067
+ ],
+ [
+ 5.425306,
+ 52.173061
+ ],
+ [
+ 5.425025,
+ 52.172732
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666131,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873620,
+ "toNodeId": 3873621,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 42.122
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666132,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425025,
+ 52.172732
+ ],
+ [
+ 5.42488,
+ 52.172562
+ ],
+ [
+ 5.424755,
+ 52.172392
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666132,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873621,
+ "toNodeId": 3873622,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 42.122
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666204,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42861,
+ 52.176056
+ ],
+ [
+ 5.428276,
+ 52.175759
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666204,
+ "linkIdReversed": 0,
+ "fromNodeId": 596855,
+ "toNodeId": 3873665,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 40.223
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666205,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428276,
+ 52.175759
+ ],
+ [
+ 5.427942,
+ 52.175461
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666205,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873665,
+ "toNodeId": 596839,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 40.223
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666210,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424717,
+ 52.172107
+ ],
+ [
+ 5.425023,
+ 52.172495
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666210,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873669,
+ "toNodeId": 3873670,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.912
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666211,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425023,
+ 52.172495
+ ],
+ [
+ 5.425043,
+ 52.17252
+ ],
+ [
+ 5.425335,
+ 52.17288
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666211,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873670,
+ "toNodeId": 3873671,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.912
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666212,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425335,
+ 52.17288
+ ],
+ [
+ 5.425417,
+ 52.172981
+ ],
+ [
+ 5.425689,
+ 52.173251
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666212,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873671,
+ "toNodeId": 3873672,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.912
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666213,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425689,
+ 52.173251
+ ],
+ [
+ 5.426053,
+ 52.173611
+ ],
+ [
+ 5.426059,
+ 52.173617
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666213,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873672,
+ "toNodeId": 3873673,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.912
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666214,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426059,
+ 52.173617
+ ],
+ [
+ 5.426461,
+ 52.173969
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666214,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873673,
+ "toNodeId": 3873674,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.912
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666215,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426461,
+ 52.173969
+ ],
+ [
+ 5.426862,
+ 52.174322
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666215,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873674,
+ "toNodeId": 3873675,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.912
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666216,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426862,
+ 52.174322
+ ],
+ [
+ 5.427263,
+ 52.174675
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666216,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873675,
+ "toNodeId": 3873676,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.912
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666217,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427263,
+ 52.174675
+ ],
+ [
+ 5.427665,
+ 52.175028
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666217,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873676,
+ "toNodeId": 3873677,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.912
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666218,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427665,
+ 52.175028
+ ],
+ [
+ 5.428066,
+ 52.175381
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666218,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873677,
+ "toNodeId": 596857,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.912
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666220,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428066,
+ 52.175381
+ ],
+ [
+ 5.428403,
+ 52.175677
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666220,
+ "linkIdReversed": 0,
+ "fromNodeId": 596857,
+ "toNodeId": 3873678,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 40.157
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666221,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428403,
+ 52.175677
+ ],
+ [
+ 5.42874,
+ 52.175972
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666221,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873678,
+ "toNodeId": 596859,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 40.157
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666222,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42496,
+ 52.172169
+ ],
+ [
+ 5.425194,
+ 52.172501
+ ],
+ [
+ 5.42524,
+ 52.172555
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666222,
+ "linkIdReversed": 0,
+ "fromNodeId": 596860,
+ "toNodeId": 3873679,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.076
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666223,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42524,
+ 52.172555
+ ],
+ [
+ 5.425388,
+ 52.172729
+ ],
+ [
+ 5.425577,
+ 52.172924
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666223,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873679,
+ "toNodeId": 596861,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.076
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666224,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42496,
+ 52.172169
+ ],
+ [
+ 5.425298,
+ 52.172462
+ ],
+ [
+ 5.425348,
+ 52.172509
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666224,
+ "linkIdReversed": 0,
+ "fromNodeId": 596860,
+ "toNodeId": 3873680,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.237
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666225,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425348,
+ 52.172509
+ ],
+ [
+ 5.425448,
+ 52.172604
+ ],
+ [
+ 5.42564,
+ 52.17276
+ ],
+ [
+ 5.42576,
+ 52.172837
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666225,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873680,
+ "toNodeId": 3873681,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.237
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666226,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42576,
+ 52.172837
+ ],
+ [
+ 5.425812,
+ 52.172871
+ ],
+ [
+ 5.425988,
+ 52.172958
+ ],
+ [
+ 5.426297,
+ 52.173088
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666226,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873681,
+ "toNodeId": 3873682,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.237
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666227,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426297,
+ 52.173088
+ ],
+ [
+ 5.426332,
+ 52.173103
+ ],
+ [
+ 5.426621,
+ 52.173206
+ ],
+ [
+ 5.426899,
+ 52.173274
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666227,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873682,
+ "toNodeId": 3873683,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.237
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666228,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426899,
+ 52.173274
+ ],
+ [
+ 5.426995,
+ 52.173298
+ ],
+ [
+ 5.427433,
+ 52.173359
+ ],
+ [
+ 5.427556,
+ 52.173366
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666228,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873683,
+ "toNodeId": 3873684,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.237
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666229,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427556,
+ 52.173366
+ ],
+ [
+ 5.427933,
+ 52.173389
+ ],
+ [
+ 5.42823,
+ 52.173395
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666229,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873684,
+ "toNodeId": 3873685,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.237
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666230,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42823,
+ 52.173395
+ ],
+ [
+ 5.428576,
+ 52.173401
+ ],
+ [
+ 5.428905,
+ 52.173399
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666230,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873685,
+ "toNodeId": 3873686,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.237
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666231,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428905,
+ 52.173399
+ ],
+ [
+ 5.429581,
+ 52.173394
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666231,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873686,
+ "toNodeId": 3873687,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.237
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666232,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429581,
+ 52.173394
+ ],
+ [
+ 5.430187,
+ 52.173389
+ ],
+ [
+ 5.430257,
+ 52.173387
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666232,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873687,
+ "toNodeId": 3873688,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.237
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666233,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430257,
+ 52.173387
+ ],
+ [
+ 5.430814,
+ 52.17337
+ ],
+ [
+ 5.430931,
+ 52.173363
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666233,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873688,
+ "toNodeId": 3873689,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.237
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666234,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430931,
+ 52.173363
+ ],
+ [
+ 5.431254,
+ 52.173344
+ ],
+ [
+ 5.4316,
+ 52.173307
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666234,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873689,
+ "toNodeId": 3873690,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.237
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666235,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.4316,
+ 52.173307
+ ],
+ [
+ 5.431607,
+ 52.173306
+ ],
+ [
+ 5.431988,
+ 52.173225
+ ],
+ [
+ 5.432235,
+ 52.173164
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666235,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873690,
+ "toNodeId": 3873691,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.237
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666236,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432235,
+ 52.173164
+ ],
+ [
+ 5.432294,
+ 52.173149
+ ],
+ [
+ 5.432825,
+ 52.172962
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666236,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873691,
+ "toNodeId": 596862,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.237
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666240,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425577,
+ 52.172924
+ ],
+ [
+ 5.425919,
+ 52.173229
+ ],
+ [
+ 5.425982,
+ 52.173288
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666240,
+ "linkIdReversed": 0,
+ "fromNodeId": 596861,
+ "toNodeId": 3873694,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.058
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666241,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425982,
+ 52.173288
+ ],
+ [
+ 5.426368,
+ 52.173653
+ ],
+ [
+ 5.426373,
+ 52.173657
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666241,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873694,
+ "toNodeId": 3873695,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.058
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666242,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426373,
+ 52.173657
+ ],
+ [
+ 5.426785,
+ 52.174018
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666242,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873695,
+ "toNodeId": 3873696,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.058
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666243,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426785,
+ 52.174018
+ ],
+ [
+ 5.427197,
+ 52.174379
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666243,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873696,
+ "toNodeId": 3873697,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.058
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666244,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427197,
+ 52.174379
+ ],
+ [
+ 5.427609,
+ 52.17474
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666244,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873697,
+ "toNodeId": 596864,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.058
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666245,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432825,
+ 52.172962
+ ],
+ [
+ 5.433299,
+ 52.172748
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666245,
+ "linkIdReversed": 0,
+ "fromNodeId": 596862,
+ "toNodeId": 3873698,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 40.191
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666256,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.433595,
+ 52.173101
+ ],
+ [
+ 5.433133,
+ 52.173317
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666256,
+ "linkIdReversed": 0,
+ "fromNodeId": 3873704,
+ "toNodeId": 596870,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 39.714
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666943,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428893,
+ 52.176567
+ ],
+ [
+ 5.42866,
+ 52.176369
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666943,
+ "linkIdReversed": 0,
+ "fromNodeId": 596831,
+ "toNodeId": 3874089,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 27.238
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666944,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42866,
+ 52.176369
+ ],
+ [
+ 5.428427,
+ 52.17617
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666944,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874089,
+ "toNodeId": 597005,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 27.238
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666945,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427439,
+ 52.176617
+ ],
+ [
+ 5.427327,
+ 52.176769
+ ],
+ [
+ 5.42723,
+ 52.176865
+ ],
+ [
+ 5.427172,
+ 52.176952
+ ],
+ [
+ 5.427161,
+ 52.176984
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666945,
+ "linkIdReversed": 0,
+ "fromNodeId": 596833,
+ "toNodeId": 3874090,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.233
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666946,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427161,
+ 52.176984
+ ],
+ [
+ 5.427141,
+ 52.17704
+ ],
+ [
+ 5.427121,
+ 52.177132
+ ],
+ [
+ 5.427129,
+ 52.177223
+ ],
+ [
+ 5.42715,
+ 52.177307
+ ],
+ [
+ 5.427181,
+ 52.177376
+ ],
+ [
+ 5.427187,
+ 52.177384
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666946,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874090,
+ "toNodeId": 3874091,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.233
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666947,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427187,
+ 52.177384
+ ],
+ [
+ 5.427232,
+ 52.177437
+ ],
+ [
+ 5.427304,
+ 52.177521
+ ],
+ [
+ 5.427391,
+ 52.177582
+ ],
+ [
+ 5.427467,
+ 52.177624
+ ],
+ [
+ 5.427556,
+ 52.17767
+ ],
+ [
+ 5.427604,
+ 52.177691
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666947,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874091,
+ "toNodeId": 3874092,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.233
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666948,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427604,
+ 52.177691
+ ],
+ [
+ 5.427657,
+ 52.177715
+ ],
+ [
+ 5.427782,
+ 52.177753
+ ],
+ [
+ 5.428007,
+ 52.177795
+ ],
+ [
+ 5.428181,
+ 52.177799
+ ],
+ [
+ 5.428227,
+ 52.177798
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666948,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874092,
+ "toNodeId": 3874093,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.233
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666949,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428227,
+ 52.177798
+ ],
+ [
+ 5.428348,
+ 52.177795
+ ],
+ [
+ 5.428487,
+ 52.177773
+ ],
+ [
+ 5.428694,
+ 52.177719
+ ],
+ [
+ 5.428826,
+ 52.177673
+ ],
+ [
+ 5.428841,
+ 52.177664
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666949,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874093,
+ "toNodeId": 3874094,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.233
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666950,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428841,
+ 52.177664
+ ],
+ [
+ 5.428947,
+ 52.177605
+ ],
+ [
+ 5.429062,
+ 52.177505
+ ],
+ [
+ 5.429166,
+ 52.177399
+ ],
+ [
+ 5.429198,
+ 52.17733
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666950,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874094,
+ "toNodeId": 3874095,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.233
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666951,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429198,
+ 52.17733
+ ],
+ [
+ 5.429225,
+ 52.177269
+ ],
+ [
+ 5.42924,
+ 52.177147
+ ],
+ [
+ 5.429227,
+ 52.177032
+ ],
+ [
+ 5.429199,
+ 52.176933
+ ],
+ [
+ 5.429195,
+ 52.176928
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666951,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874095,
+ "toNodeId": 3874096,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.233
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666952,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429195,
+ 52.176928
+ ],
+ [
+ 5.429106,
+ 52.1768
+ ],
+ [
+ 5.428893,
+ 52.176567
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666952,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874096,
+ "toNodeId": 596831,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.233
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666953,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428427,
+ 52.17617
+ ],
+ [
+ 5.428091,
+ 52.175875
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666953,
+ "linkIdReversed": 0,
+ "fromNodeId": 597005,
+ "toNodeId": 3874097,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 40.098
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666954,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428091,
+ 52.175875
+ ],
+ [
+ 5.427756,
+ 52.175579
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666954,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874097,
+ "toNodeId": 596838,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 40.098
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666955,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429194,
+ 52.175465
+ ],
+ [
+ 5.428755,
+ 52.175753
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666955,
+ "linkIdReversed": 0,
+ "fromNodeId": 597006,
+ "toNodeId": 3874098,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 43.907
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666956,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428755,
+ 52.175753
+ ],
+ [
+ 5.428317,
+ 52.176041
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666956,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874098,
+ "toNodeId": 3874099,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 43.907
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666957,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428317,
+ 52.176041
+ ],
+ [
+ 5.427878,
+ 52.176329
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666957,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874099,
+ "toNodeId": 3874100,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 43.907
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666958,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427878,
+ 52.176329
+ ],
+ [
+ 5.427439,
+ 52.176617
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666958,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874100,
+ "toNodeId": 596833,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 43.907
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666959,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429265,
+ 52.176201
+ ],
+ [
+ 5.429654,
+ 52.176545
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666959,
+ "linkIdReversed": 0,
+ "fromNodeId": 597007,
+ "toNodeId": 3874101,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.609
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666960,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429654,
+ 52.176545
+ ],
+ [
+ 5.430043,
+ 52.176889
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666960,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874101,
+ "toNodeId": 3874102,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.609
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666961,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430043,
+ 52.176889
+ ],
+ [
+ 5.430279,
+ 52.177097
+ ],
+ [
+ 5.430433,
+ 52.177232
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666961,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874102,
+ "toNodeId": 3874103,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.609
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666962,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430433,
+ 52.177232
+ ],
+ [
+ 5.430824,
+ 52.177575
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666962,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874103,
+ "toNodeId": 3874104,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.609
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666963,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430824,
+ 52.177575
+ ],
+ [
+ 5.431216,
+ 52.177918
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666963,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874104,
+ "toNodeId": 3874105,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.609
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666964,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431216,
+ 52.177918
+ ],
+ [
+ 5.431607,
+ 52.178261
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666964,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874105,
+ "toNodeId": 3874106,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.609
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666965,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431607,
+ 52.178261
+ ],
+ [
+ 5.431998,
+ 52.178604
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666965,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874106,
+ "toNodeId": 597008,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.609
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666966,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429265,
+ 52.176201
+ ],
+ [
+ 5.429613,
+ 52.176346
+ ],
+ [
+ 5.429734,
+ 52.176395
+ ],
+ [
+ 5.429861,
+ 52.176427
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666966,
+ "linkIdReversed": 0,
+ "fromNodeId": 597007,
+ "toNodeId": 3874107,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.088
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666967,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429861,
+ 52.176427
+ ],
+ [
+ 5.4299,
+ 52.176437
+ ],
+ [
+ 5.430044,
+ 52.176464
+ ],
+ [
+ 5.430235,
+ 52.176476
+ ],
+ [
+ 5.430438,
+ 52.176464
+ ],
+ [
+ 5.430548,
+ 52.176444
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666967,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874107,
+ "toNodeId": 3874108,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.088
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666968,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430548,
+ 52.176444
+ ],
+ [
+ 5.430564,
+ 52.176441
+ ],
+ [
+ 5.430718,
+ 52.176399
+ ],
+ [
+ 5.430852,
+ 52.17635
+ ],
+ [
+ 5.430956,
+ 52.176308
+ ],
+ [
+ 5.431067,
+ 52.176231
+ ],
+ [
+ 5.431104,
+ 52.176194
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666968,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874108,
+ "toNodeId": 3874109,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.088
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666969,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431104,
+ 52.176194
+ ],
+ [
+ 5.431154,
+ 52.176144
+ ],
+ [
+ 5.431248,
+ 52.176025
+ ],
+ [
+ 5.431298,
+ 52.175888
+ ],
+ [
+ 5.431298,
+ 52.175788
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666969,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874109,
+ "toNodeId": 3874110,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.088
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666970,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431298,
+ 52.175788
+ ],
+ [
+ 5.431298,
+ 52.175716
+ ],
+ [
+ 5.431243,
+ 52.175579
+ ],
+ [
+ 5.431151,
+ 52.175453
+ ],
+ [
+ 5.431058,
+ 52.175395
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666970,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874110,
+ "toNodeId": 3874111,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.088
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666971,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431058,
+ 52.175395
+ ],
+ [
+ 5.430968,
+ 52.175339
+ ],
+ [
+ 5.430759,
+ 52.175243
+ ],
+ [
+ 5.430482,
+ 52.175175
+ ],
+ [
+ 5.430466,
+ 52.175174
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666971,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874111,
+ "toNodeId": 3874112,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.088
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666972,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430466,
+ 52.175174
+ ],
+ [
+ 5.430201,
+ 52.175163
+ ],
+ [
+ 5.429923,
+ 52.17519
+ ],
+ [
+ 5.42978,
+ 52.175228
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666972,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874112,
+ "toNodeId": 3874113,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.088
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666973,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42978,
+ 52.175228
+ ],
+ [
+ 5.429733,
+ 52.17524
+ ],
+ [
+ 5.429437,
+ 52.175358
+ ],
+ [
+ 5.429194,
+ 52.175465
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666973,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874113,
+ "toNodeId": 597006,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.088
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666974,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428897,
+ 52.175877
+ ],
+ [
+ 5.429265,
+ 52.176201
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666974,
+ "linkIdReversed": 0,
+ "fromNodeId": 597009,
+ "toNodeId": 597007,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 43.971
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666975,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.433133,
+ 52.173317
+ ],
+ [
+ 5.43269,
+ 52.173648
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666975,
+ "linkIdReversed": 0,
+ "fromNodeId": 596870,
+ "toNodeId": 3874114,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.707
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666976,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.43269,
+ 52.173648
+ ],
+ [
+ 5.432576,
+ 52.173733
+ ],
+ [
+ 5.432343,
+ 52.173916
+ ],
+ [
+ 5.432279,
+ 52.173993
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666976,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874114,
+ "toNodeId": 3874115,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.707
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666977,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432279,
+ 52.173993
+ ],
+ [
+ 5.432025,
+ 52.174301
+ ],
+ [
+ 5.431992,
+ 52.174382
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666977,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874115,
+ "toNodeId": 3874116,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.707
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666978,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431992,
+ 52.174382
+ ],
+ [
+ 5.431855,
+ 52.174713
+ ],
+ [
+ 5.431839,
+ 52.174799
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666978,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874116,
+ "toNodeId": 3874117,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.707
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666979,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431839,
+ 52.174799
+ ],
+ [
+ 5.431774,
+ 52.17514
+ ],
+ [
+ 5.431755,
+ 52.175225
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666979,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874117,
+ "toNodeId": 3874118,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.707
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666980,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431755,
+ 52.175225
+ ],
+ [
+ 5.431699,
+ 52.175468
+ ],
+ [
+ 5.431674,
+ 52.175651
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666980,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874118,
+ "toNodeId": 3874119,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.707
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666981,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431674,
+ 52.175651
+ ],
+ [
+ 5.431614,
+ 52.176078
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666981,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874119,
+ "toNodeId": 3874120,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.707
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666982,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431614,
+ 52.176078
+ ],
+ [
+ 5.431576,
+ 52.17635
+ ],
+ [
+ 5.431564,
+ 52.176505
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666982,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874120,
+ "toNodeId": 3874121,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.707
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666983,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431564,
+ 52.176505
+ ],
+ [
+ 5.431532,
+ 52.176934
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666983,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874121,
+ "toNodeId": 3874122,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.707
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666984,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431532,
+ 52.176934
+ ],
+ [
+ 5.431525,
+ 52.177029
+ ],
+ [
+ 5.431526,
+ 52.177353
+ ],
+ [
+ 5.431527,
+ 52.177362
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666984,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874122,
+ "toNodeId": 3874123,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.707
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666985,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431527,
+ 52.177362
+ ],
+ [
+ 5.431572,
+ 52.177769
+ ],
+ [
+ 5.431579,
+ 52.17779
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666985,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874123,
+ "toNodeId": 3874124,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.707
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666986,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431579,
+ 52.17779
+ ],
+ [
+ 5.431678,
+ 52.178078
+ ],
+ [
+ 5.431741,
+ 52.178206
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666986,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874124,
+ "toNodeId": 3874125,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.707
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666987,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431741,
+ 52.178206
+ ],
+ [
+ 5.431812,
+ 52.178352
+ ],
+ [
+ 5.431998,
+ 52.178604
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666987,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874125,
+ "toNodeId": 597008,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.707
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666988,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431998,
+ 52.178604
+ ],
+ [
+ 5.432367,
+ 52.178929
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666988,
+ "linkIdReversed": 0,
+ "fromNodeId": 597008,
+ "toNodeId": 3874126,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.067
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666989,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432367,
+ 52.178929
+ ],
+ [
+ 5.432737,
+ 52.179253
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666989,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874126,
+ "toNodeId": 3874127,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.067
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666990,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432737,
+ 52.179253
+ ],
+ [
+ 5.43284,
+ 52.179344
+ ],
+ [
+ 5.433105,
+ 52.179578
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666990,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874127,
+ "toNodeId": 3874128,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.067
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666991,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.433105,
+ 52.179578
+ ],
+ [
+ 5.433461,
+ 52.179893
+ ],
+ [
+ 5.433472,
+ 52.179903
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666991,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874128,
+ "toNodeId": 3874129,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.067
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666996,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.433133,
+ 52.173317
+ ],
+ [
+ 5.43262,
+ 52.173571
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666996,
+ "linkIdReversed": 0,
+ "fromNodeId": 596870,
+ "toNodeId": 3874133,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.066
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666997,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.43262,
+ 52.173571
+ ],
+ [
+ 5.432107,
+ 52.173825
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666997,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874133,
+ "toNodeId": 3874134,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.066
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666998,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432107,
+ 52.173825
+ ],
+ [
+ 5.431993,
+ 52.173882
+ ],
+ [
+ 5.431605,
+ 52.174087
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666998,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874134,
+ "toNodeId": 3874135,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.066
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3666999,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431605,
+ 52.174087
+ ],
+ [
+ 5.431105,
+ 52.174351
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3666999,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874135,
+ "toNodeId": 3874136,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.066
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667000,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431105,
+ 52.174351
+ ],
+ [
+ 5.43086,
+ 52.17448
+ ],
+ [
+ 5.430611,
+ 52.174619
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667000,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874136,
+ "toNodeId": 3874137,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.066
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667001,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430611,
+ 52.174619
+ ],
+ [
+ 5.430122,
+ 52.17489
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667001,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874137,
+ "toNodeId": 3874138,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.066
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667002,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430122,
+ 52.17489
+ ],
+ [
+ 5.42998,
+ 52.174969
+ ],
+ [
+ 5.429654,
+ 52.175175
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667002,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874138,
+ "toNodeId": 3874139,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.066
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667003,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429654,
+ 52.175175
+ ],
+ [
+ 5.429194,
+ 52.175465
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667003,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874139,
+ "toNodeId": 597006,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.066
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667004,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.423609,
+ 52.17878
+ ],
+ [
+ 5.423953,
+ 52.178555
+ ],
+ [
+ 5.424063,
+ 52.178474
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667004,
+ "linkIdReversed": 0,
+ "fromNodeId": 597011,
+ "toNodeId": 3874140,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.115
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667005,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424063,
+ 52.178474
+ ],
+ [
+ 5.424496,
+ 52.178156
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667005,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874140,
+ "toNodeId": 3874141,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.115
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667006,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424496,
+ 52.178156
+ ],
+ [
+ 5.424671,
+ 52.178028
+ ],
+ [
+ 5.424924,
+ 52.177836
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667006,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874141,
+ "toNodeId": 3874142,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.115
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667007,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424924,
+ 52.177836
+ ],
+ [
+ 5.425349,
+ 52.177514
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667007,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874142,
+ "toNodeId": 3874143,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.115
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667008,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425349,
+ 52.177514
+ ],
+ [
+ 5.425446,
+ 52.177441
+ ],
+ [
+ 5.42578,
+ 52.177195
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667008,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874143,
+ "toNodeId": 3874144,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.115
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667009,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42578,
+ 52.177195
+ ],
+ [
+ 5.426212,
+ 52.176877
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667009,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874144,
+ "toNodeId": 3874145,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.115
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667010,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426212,
+ 52.176877
+ ],
+ [
+ 5.426514,
+ 52.176655
+ ],
+ [
+ 5.426648,
+ 52.176562
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667010,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874145,
+ "toNodeId": 3874146,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.115
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667011,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426648,
+ 52.176562
+ ],
+ [
+ 5.427095,
+ 52.176251
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667011,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874146,
+ "toNodeId": 3874147,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.115
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667012,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427095,
+ 52.176251
+ ],
+ [
+ 5.427542,
+ 52.175941
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667012,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874147,
+ "toNodeId": 596837,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.115
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667013,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.423609,
+ 52.17878
+ ],
+ [
+ 5.423952,
+ 52.178426
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667013,
+ "linkIdReversed": 0,
+ "fromNodeId": 597011,
+ "toNodeId": 3874148,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.877
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667014,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.423952,
+ 52.178426
+ ],
+ [
+ 5.42422,
+ 52.17815
+ ],
+ [
+ 5.424268,
+ 52.178064
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667014,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874148,
+ "toNodeId": 3874149,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.877
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667015,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424268,
+ 52.178064
+ ],
+ [
+ 5.42441,
+ 52.177811
+ ],
+ [
+ 5.424465,
+ 52.17767
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667015,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874149,
+ "toNodeId": 3874150,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.877
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667016,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424465,
+ 52.17767
+ ],
+ [
+ 5.42462,
+ 52.177269
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667016,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874150,
+ "toNodeId": 597012,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.877
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667020,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.421906,
+ 52.179994
+ ],
+ [
+ 5.422327,
+ 52.179688
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667020,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874153,
+ "toNodeId": 3874154,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.597
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667021,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.422327,
+ 52.179688
+ ],
+ [
+ 5.422725,
+ 52.179398
+ ],
+ [
+ 5.422748,
+ 52.179382
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667021,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874154,
+ "toNodeId": 3874155,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.597
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667022,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.422748,
+ 52.179382
+ ],
+ [
+ 5.423178,
+ 52.179081
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667022,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874155,
+ "toNodeId": 3874156,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.597
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667023,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.423178,
+ 52.179081
+ ],
+ [
+ 5.423609,
+ 52.17878
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667023,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874156,
+ "toNodeId": 597011,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.597
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667024,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427542,
+ 52.175941
+ ],
+ [
+ 5.427981,
+ 52.175668
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667024,
+ "linkIdReversed": 0,
+ "fromNodeId": 596837,
+ "toNodeId": 3874157,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 42.732
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667025,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427981,
+ 52.175668
+ ],
+ [
+ 5.428419,
+ 52.175394
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667025,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874157,
+ "toNodeId": 3874158,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 42.732
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667026,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428419,
+ 52.175394
+ ],
+ [
+ 5.428858,
+ 52.175121
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667026,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874158,
+ "toNodeId": 3874159,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 42.732
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667027,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428858,
+ 52.175121
+ ],
+ [
+ 5.429296,
+ 52.174847
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667027,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874159,
+ "toNodeId": 597014,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 42.732
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667034,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.421688,
+ 52.180337
+ ],
+ [
+ 5.42216,
+ 52.179998
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667034,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874165,
+ "toNodeId": 3874166,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667035,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42216,
+ 52.179998
+ ],
+ [
+ 5.422633,
+ 52.17966
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667035,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874166,
+ "toNodeId": 3874167,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667036,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.422633,
+ 52.17966
+ ],
+ [
+ 5.423105,
+ 52.179322
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667036,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874167,
+ "toNodeId": 3874168,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667037,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.423105,
+ 52.179322
+ ],
+ [
+ 5.423266,
+ 52.179207
+ ],
+ [
+ 5.423577,
+ 52.178984
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667037,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874168,
+ "toNodeId": 3874169,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667038,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.423577,
+ 52.178984
+ ],
+ [
+ 5.424049,
+ 52.178645
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667038,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874169,
+ "toNodeId": 3874170,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667039,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424049,
+ 52.178645
+ ],
+ [
+ 5.424521,
+ 52.178307
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667039,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874170,
+ "toNodeId": 3874171,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667040,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424521,
+ 52.178307
+ ],
+ [
+ 5.424993,
+ 52.177968
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667040,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874171,
+ "toNodeId": 3874172,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667041,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424993,
+ 52.177968
+ ],
+ [
+ 5.425465,
+ 52.17763
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667041,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874172,
+ "toNodeId": 3874173,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667042,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425465,
+ 52.17763
+ ],
+ [
+ 5.425936,
+ 52.177291
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667042,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874173,
+ "toNodeId": 3874174,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667043,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425936,
+ 52.177291
+ ],
+ [
+ 5.426408,
+ 52.176953
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667043,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874174,
+ "toNodeId": 3874175,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667044,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426408,
+ 52.176953
+ ],
+ [
+ 5.426759,
+ 52.176701
+ ],
+ [
+ 5.426884,
+ 52.176616
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667044,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874175,
+ "toNodeId": 3874176,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667045,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426884,
+ 52.176616
+ ],
+ [
+ 5.427371,
+ 52.176286
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667045,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874176,
+ "toNodeId": 3874177,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667046,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427371,
+ 52.176286
+ ],
+ [
+ 5.42784,
+ 52.175968
+ ],
+ [
+ 5.427859,
+ 52.175956
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667046,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874177,
+ "toNodeId": 3874178,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667047,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427859,
+ 52.175956
+ ],
+ [
+ 5.428362,
+ 52.175635
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667047,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874178,
+ "toNodeId": 3874179,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667048,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428362,
+ 52.175635
+ ],
+ [
+ 5.42879,
+ 52.175362
+ ],
+ [
+ 5.428867,
+ 52.175315
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667048,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874179,
+ "toNodeId": 3874180,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667049,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428867,
+ 52.175315
+ ],
+ [
+ 5.429382,
+ 52.175002
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667049,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874180,
+ "toNodeId": 3874181,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667050,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429382,
+ 52.175002
+ ],
+ [
+ 5.429625,
+ 52.174854
+ ],
+ [
+ 5.429909,
+ 52.174696
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667050,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874181,
+ "toNodeId": 3874182,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667051,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429909,
+ 52.174696
+ ],
+ [
+ 5.430446,
+ 52.174396
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667051,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874182,
+ "toNodeId": 3874183,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667052,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430446,
+ 52.174396
+ ],
+ [
+ 5.430895,
+ 52.174145
+ ],
+ [
+ 5.430984,
+ 52.174097
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667052,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874183,
+ "toNodeId": 3874184,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667053,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430984,
+ 52.174097
+ ],
+ [
+ 5.431528,
+ 52.173803
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667053,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874184,
+ "toNodeId": 3874185,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667054,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431528,
+ 52.173803
+ ],
+ [
+ 5.432072,
+ 52.173508
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667054,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874185,
+ "toNodeId": 597016,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.601
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667060,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432072,
+ 52.173508
+ ],
+ [
+ 5.432588,
+ 52.173256
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667060,
+ "linkIdReversed": 0,
+ "fromNodeId": 597016,
+ "toNodeId": 3874189,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.102
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667061,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432588,
+ 52.173256
+ ],
+ [
+ 5.432932,
+ 52.173088
+ ],
+ [
+ 5.433107,
+ 52.173006
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667061,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874189,
+ "toNodeId": 3874190,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.102
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667062,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.433107,
+ 52.173006
+ ],
+ [
+ 5.433631,
+ 52.17276
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667062,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874190,
+ "toNodeId": 3874191,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.102
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667067,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431265,
+ 52.173805
+ ],
+ [
+ 5.431642,
+ 52.173628
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667067,
+ "linkIdReversed": 0,
+ "fromNodeId": 597020,
+ "toNodeId": 3874195,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 32.463
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667068,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431642,
+ 52.173628
+ ],
+ [
+ 5.431703,
+ 52.173599
+ ],
+ [
+ 5.432072,
+ 52.173508
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667068,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874195,
+ "toNodeId": 597016,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 32.463
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667070,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42874,
+ 52.175972
+ ],
+ [
+ 5.429147,
+ 52.176331
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667070,
+ "linkIdReversed": 0,
+ "fromNodeId": 596859,
+ "toNodeId": 3874196,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.725
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667071,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429147,
+ 52.176331
+ ],
+ [
+ 5.429554,
+ 52.176691
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667071,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874196,
+ "toNodeId": 3874197,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.725
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667072,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429554,
+ 52.176691
+ ],
+ [
+ 5.429961,
+ 52.17705
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667072,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874197,
+ "toNodeId": 3874198,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.725
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667073,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429961,
+ 52.17705
+ ],
+ [
+ 5.430139,
+ 52.177208
+ ],
+ [
+ 5.43037,
+ 52.177409
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667073,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874198,
+ "toNodeId": 3874199,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.725
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667074,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.43037,
+ 52.177409
+ ],
+ [
+ 5.430781,
+ 52.177766
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667074,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874199,
+ "toNodeId": 3874200,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.725
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667075,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430781,
+ 52.177766
+ ],
+ [
+ 5.431193,
+ 52.178124
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667075,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874200,
+ "toNodeId": 3874201,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.725
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667076,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431193,
+ 52.178124
+ ],
+ [
+ 5.431604,
+ 52.178481
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667076,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874201,
+ "toNodeId": 3874202,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.725
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667077,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431604,
+ 52.178481
+ ],
+ [
+ 5.432016,
+ 52.178839
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667077,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874202,
+ "toNodeId": 3874203,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.725
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667078,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432016,
+ 52.178839
+ ],
+ [
+ 5.432427,
+ 52.179196
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667078,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874203,
+ "toNodeId": 3874204,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.725
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667079,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432427,
+ 52.179196
+ ],
+ [
+ 5.432838,
+ 52.179553
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667079,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874204,
+ "toNodeId": 3874205,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.725
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667080,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432838,
+ 52.179553
+ ],
+ [
+ 5.43325,
+ 52.179911
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667080,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874205,
+ "toNodeId": 3874206,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.725
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667081,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.43325,
+ 52.179911
+ ],
+ [
+ 5.433661,
+ 52.180268
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667081,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874206,
+ "toNodeId": 3874207,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.725
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667119,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429296,
+ 52.174847
+ ],
+ [
+ 5.429416,
+ 52.174686
+ ],
+ [
+ 5.429527,
+ 52.174538
+ ],
+ [
+ 5.429559,
+ 52.174446
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667119,
+ "linkIdReversed": 0,
+ "fromNodeId": 597014,
+ "toNodeId": 3874238,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.283
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667120,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429559,
+ 52.174446
+ ],
+ [
+ 5.429575,
+ 52.1744
+ ],
+ [
+ 5.429591,
+ 52.174274
+ ],
+ [
+ 5.42958,
+ 52.174206
+ ],
+ [
+ 5.42955,
+ 52.174141
+ ],
+ [
+ 5.429506,
+ 52.174053
+ ],
+ [
+ 5.429482,
+ 52.174024
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667120,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874238,
+ "toNodeId": 3874239,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.283
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667121,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429482,
+ 52.174024
+ ],
+ [
+ 5.429452,
+ 52.173988
+ ],
+ [
+ 5.429347,
+ 52.173901
+ ],
+ [
+ 5.429214,
+ 52.173817
+ ],
+ [
+ 5.429055,
+ 52.173752
+ ],
+ [
+ 5.42898,
+ 52.173731
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667121,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874239,
+ "toNodeId": 3874240,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.283
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667122,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42898,
+ 52.173731
+ ],
+ [
+ 5.428873,
+ 52.173702
+ ],
+ [
+ 5.428669,
+ 52.173676
+ ],
+ [
+ 5.428507,
+ 52.173672
+ ],
+ [
+ 5.428346,
+ 52.173679
+ ],
+ [
+ 5.428292,
+ 52.173688
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667122,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874240,
+ "toNodeId": 3874241,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.283
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667123,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428292,
+ 52.173688
+ ],
+ [
+ 5.42819,
+ 52.173706
+ ],
+ [
+ 5.428039,
+ 52.17374
+ ],
+ [
+ 5.427924,
+ 52.173794
+ ],
+ [
+ 5.427783,
+ 52.173866
+ ],
+ [
+ 5.42771,
+ 52.173918
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667123,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874241,
+ "toNodeId": 3874242,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.283
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667124,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42771,
+ 52.173918
+ ],
+ [
+ 5.427675,
+ 52.173943
+ ],
+ [
+ 5.427555,
+ 52.174061
+ ],
+ [
+ 5.427491,
+ 52.174183
+ ],
+ [
+ 5.427475,
+ 52.174274
+ ],
+ [
+ 5.427475,
+ 52.174316
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667124,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874242,
+ "toNodeId": 3874243,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.283
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667125,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427475,
+ 52.174316
+ ],
+ [
+ 5.427474,
+ 52.17437
+ ],
+ [
+ 5.427494,
+ 52.174442
+ ],
+ [
+ 5.427509,
+ 52.174507
+ ],
+ [
+ 5.427609,
+ 52.17474
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667125,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874243,
+ "toNodeId": 596864,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 48.283
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667126,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429296,
+ 52.174847
+ ],
+ [
+ 5.429658,
+ 52.174641
+ ],
+ [
+ 5.429779,
+ 52.17458
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667126,
+ "linkIdReversed": 0,
+ "fromNodeId": 597014,
+ "toNodeId": 3874244,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.443
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667127,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429779,
+ 52.17458
+ ],
+ [
+ 5.430281,
+ 52.174327
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667127,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874244,
+ "toNodeId": 3874245,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.443
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667128,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430281,
+ 52.174327
+ ],
+ [
+ 5.430482,
+ 52.174225
+ ],
+ [
+ 5.430775,
+ 52.174068
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667128,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874245,
+ "toNodeId": 3874246,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.443
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667129,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430775,
+ 52.174068
+ ],
+ [
+ 5.431265,
+ 52.173805
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667129,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874246,
+ "toNodeId": 597020,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.443
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667130,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430015,
+ 52.17728
+ ],
+ [
+ 5.429664,
+ 52.176974
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667130,
+ "linkIdReversed": 0,
+ "fromNodeId": 597029,
+ "toNodeId": 3874247,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 41.673
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667131,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429664,
+ 52.176974
+ ],
+ [
+ 5.429312,
+ 52.176668
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667131,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874247,
+ "toNodeId": 3874248,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 41.673
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667132,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429312,
+ 52.176668
+ ],
+ [
+ 5.428961,
+ 52.176362
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667132,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874248,
+ "toNodeId": 3874249,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 41.673
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667133,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428961,
+ 52.176362
+ ],
+ [
+ 5.42861,
+ 52.176056
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667133,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874249,
+ "toNodeId": 596855,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 41.673
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667134,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427609,
+ 52.17474
+ ],
+ [
+ 5.427911,
+ 52.175013
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667134,
+ "linkIdReversed": 0,
+ "fromNodeId": 596864,
+ "toNodeId": 3874250,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 36.71
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667135,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427911,
+ 52.175013
+ ],
+ [
+ 5.428214,
+ 52.175285
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667135,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874250,
+ "toNodeId": 597030,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 36.71
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667136,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428214,
+ 52.175285
+ ],
+ [
+ 5.428555,
+ 52.175581
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667136,
+ "linkIdReversed": 0,
+ "fromNodeId": 597030,
+ "toNodeId": 3874251,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 40.38
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3667137,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428555,
+ 52.175581
+ ],
+ [
+ 5.428897,
+ 52.175877
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3667137,
+ "linkIdReversed": 0,
+ "fromNodeId": 3874251,
+ "toNodeId": 597009,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 40.38
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669263,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.433525,
+ 52.172981
+ ],
+ [
+ 5.433012,
+ 52.173222
+ ],
+ [
+ 5.43295,
+ 52.173251
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669263,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875465,
+ "toNodeId": 3875466,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669264,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.43295,
+ 52.173251
+ ],
+ [
+ 5.432378,
+ 52.173524
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669264,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875466,
+ "toNodeId": 3875467,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669265,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432378,
+ 52.173524
+ ],
+ [
+ 5.431947,
+ 52.173729
+ ],
+ [
+ 5.431813,
+ 52.173802
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669265,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875467,
+ "toNodeId": 3875468,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669266,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431813,
+ 52.173802
+ ],
+ [
+ 5.43127,
+ 52.174096
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669266,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875468,
+ "toNodeId": 3875469,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669267,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.43127,
+ 52.174096
+ ],
+ [
+ 5.430961,
+ 52.174263
+ ],
+ [
+ 5.43073,
+ 52.174391
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669267,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875469,
+ "toNodeId": 3875470,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669268,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.43073,
+ 52.174391
+ ],
+ [
+ 5.430192,
+ 52.174689
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669268,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875470,
+ "toNodeId": 3875471,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669269,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430192,
+ 52.174689
+ ],
+ [
+ 5.429709,
+ 52.174957
+ ],
+ [
+ 5.429657,
+ 52.174988
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669269,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875471,
+ "toNodeId": 3875472,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669270,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429657,
+ 52.174988
+ ],
+ [
+ 5.429139,
+ 52.175299
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669270,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875472,
+ "toNodeId": 3875473,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669271,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429139,
+ 52.175299
+ ],
+ [
+ 5.42885,
+ 52.175472
+ ],
+ [
+ 5.428626,
+ 52.175613
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669271,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875473,
+ "toNodeId": 3875474,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669272,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428626,
+ 52.175613
+ ],
+ [
+ 5.428121,
+ 52.175932
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669272,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875474,
+ "toNodeId": 3875475,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669273,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428121,
+ 52.175932
+ ],
+ [
+ 5.427924,
+ 52.176056
+ ],
+ [
+ 5.427628,
+ 52.176257
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669273,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875475,
+ "toNodeId": 3875476,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669274,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427628,
+ 52.176257
+ ],
+ [
+ 5.427143,
+ 52.176587
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669274,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875476,
+ "toNodeId": 3875477,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669275,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427143,
+ 52.176587
+ ],
+ [
+ 5.426919,
+ 52.176739
+ ],
+ [
+ 5.426665,
+ 52.176921
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669275,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875477,
+ "toNodeId": 3875478,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669276,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426665,
+ 52.176921
+ ],
+ [
+ 5.426194,
+ 52.177259
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669276,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875478,
+ "toNodeId": 3875479,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669277,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426194,
+ 52.177259
+ ],
+ [
+ 5.425723,
+ 52.177597
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669277,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875479,
+ "toNodeId": 3875480,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669278,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425723,
+ 52.177597
+ ],
+ [
+ 5.425252,
+ 52.177934
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669278,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875480,
+ "toNodeId": 3875481,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669279,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425252,
+ 52.177934
+ ],
+ [
+ 5.424781,
+ 52.178272
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669279,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875481,
+ "toNodeId": 3875482,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669280,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424781,
+ 52.178272
+ ],
+ [
+ 5.42431,
+ 52.17861
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669280,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875482,
+ "toNodeId": 3875483,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669281,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42431,
+ 52.17861
+ ],
+ [
+ 5.423839,
+ 52.178948
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669281,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875483,
+ "toNodeId": 3875484,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669282,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.423839,
+ 52.178948
+ ],
+ [
+ 5.423381,
+ 52.179276
+ ],
+ [
+ 5.423368,
+ 52.179285
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669282,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875484,
+ "toNodeId": 3875485,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669283,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.423368,
+ 52.179285
+ ],
+ [
+ 5.422898,
+ 52.179624
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669283,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875485,
+ "toNodeId": 3875486,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669284,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.422898,
+ 52.179624
+ ],
+ [
+ 5.422429,
+ 52.179962
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669284,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875486,
+ "toNodeId": 3875487,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3669285,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.422429,
+ 52.179962
+ ],
+ [
+ 5.421959,
+ 52.180301
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3669285,
+ "linkIdReversed": 0,
+ "fromNodeId": 3875487,
+ "toNodeId": 3875488,
+ "speedInKilometersPerHour": 115.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 49.501
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3675765,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42481,
+ 52.172878
+ ],
+ [
+ 5.424593,
+ 52.1726
+ ],
+ [
+ 5.424523,
+ 52.172503
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3675765,
+ "linkIdReversed": 0,
+ "fromNodeId": 599091,
+ "toNodeId": 3878366,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.103
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3675766,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424523,
+ 52.172503
+ ],
+ [
+ 5.424343,
+ 52.172253
+ ],
+ [
+ 5.424255,
+ 52.172123
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3675766,
+ "linkIdReversed": 0,
+ "fromNodeId": 3878366,
+ "toNodeId": 3878367,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 46.103
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3675771,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425338,
+ 52.174526
+ ],
+ [
+ 5.425378,
+ 52.174103
+ ],
+ [
+ 5.425378,
+ 52.174098
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3675771,
+ "linkIdReversed": 0,
+ "fromNodeId": 599093,
+ "toNodeId": 3878371,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.679
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3675772,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425378,
+ 52.174098
+ ],
+ [
+ 5.425385,
+ 52.173904
+ ],
+ [
+ 5.425326,
+ 52.173679
+ ],
+ [
+ 5.425323,
+ 52.173673
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3675772,
+ "linkIdReversed": 0,
+ "fromNodeId": 3878371,
+ "toNodeId": 3878372,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.679
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3675773,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425323,
+ 52.173673
+ ],
+ [
+ 5.425224,
+ 52.173466
+ ],
+ [
+ 5.425101,
+ 52.173267
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3675773,
+ "linkIdReversed": 0,
+ "fromNodeId": 3878372,
+ "toNodeId": 3878373,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.679
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3675774,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425101,
+ 52.173267
+ ],
+ [
+ 5.425051,
+ 52.173187
+ ],
+ [
+ 5.42481,
+ 52.172878
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3675774,
+ "linkIdReversed": 0,
+ "fromNodeId": 3878373,
+ "toNodeId": 599091,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.679
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3684607,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42206,
+ 52.175152
+ ],
+ [
+ 5.422059,
+ 52.175592
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3684607,
+ "linkIdReversed": 3684616,
+ "fromNodeId": 601546,
+ "toNodeId": 3882053,
+ "speedInKilometersPerHour": 45.0,
+ "reverseSpeedInKilometersPerHour": 45.0,
+ "distanceInMeters": 48.952
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3684608,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.422059,
+ 52.175592
+ ],
+ [
+ 5.422059,
+ 52.175766
+ ],
+ [
+ 5.42206,
+ 52.176032
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3684608,
+ "linkIdReversed": 3684615,
+ "fromNodeId": 3882053,
+ "toNodeId": 3882054,
+ "speedInKilometersPerHour": 45.0,
+ "reverseSpeedInKilometersPerHour": 45.0,
+ "distanceInMeters": 48.952
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3684609,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42206,
+ 52.176032
+ ],
+ [
+ 5.422062,
+ 52.176373
+ ],
+ [
+ 5.422056,
+ 52.176472
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3684609,
+ "linkIdReversed": 3684614,
+ "fromNodeId": 3882054,
+ "toNodeId": 3882055,
+ "speedInKilometersPerHour": 45.0,
+ "reverseSpeedInKilometersPerHour": 45.0,
+ "distanceInMeters": 48.952
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3684909,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.421854,
+ 52.173817
+ ],
+ [
+ 5.421967,
+ 52.173874
+ ],
+ [
+ 5.422039,
+ 52.173943
+ ],
+ [
+ 5.422042,
+ 52.174116
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3684909,
+ "linkIdReversed": 3684916,
+ "fromNodeId": 601607,
+ "toNodeId": 3882193,
+ "speedInKilometersPerHour": 45.0,
+ "reverseSpeedInKilometersPerHour": 45.0,
+ "distanceInMeters": 38.414
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3684910,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.422042,
+ 52.174116
+ ],
+ [
+ 5.422045,
+ 52.174305
+ ],
+ [
+ 5.422048,
+ 52.174462
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3684910,
+ "linkIdReversed": 3684915,
+ "fromNodeId": 3882193,
+ "toNodeId": 3882194,
+ "speedInKilometersPerHour": 45.0,
+ "reverseSpeedInKilometersPerHour": 45.0,
+ "distanceInMeters": 38.414
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3684911,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.422048,
+ 52.174462
+ ],
+ [
+ 5.422054,
+ 52.174807
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3684911,
+ "linkIdReversed": 3684914,
+ "fromNodeId": 3882194,
+ "toNodeId": 3882195,
+ "speedInKilometersPerHour": 45.0,
+ "reverseSpeedInKilometersPerHour": 45.0,
+ "distanceInMeters": 38.414
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3684912,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.422054,
+ 52.174807
+ ],
+ [
+ 5.42206,
+ 52.175152
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3684912,
+ "linkIdReversed": 3684913,
+ "fromNodeId": 3882195,
+ "toNodeId": 601546,
+ "speedInKilometersPerHour": 45.0,
+ "reverseSpeedInKilometersPerHour": 45.0,
+ "distanceInMeters": 38.414
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3684922,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.421854,
+ 52.173817
+ ],
+ [
+ 5.421867,
+ 52.173466
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3684922,
+ "linkIdReversed": 3684921,
+ "fromNodeId": 601607,
+ "toNodeId": 601609,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 30.0,
+ "distanceInMeters": 39.066
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3685165,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.421873,
+ 52.172724
+ ],
+ [
+ 5.42187,
+ 52.173095
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3685165,
+ "linkIdReversed": 3685168,
+ "fromNodeId": 3882328,
+ "toNodeId": 3882329,
+ "speedInKilometersPerHour": 14.0,
+ "reverseSpeedInKilometersPerHour": 14.0,
+ "distanceInMeters": 41.26
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3685166,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42187,
+ 52.173095
+ ],
+ [
+ 5.421867,
+ 52.173466
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3685166,
+ "linkIdReversed": 3685167,
+ "fromNodeId": 3882329,
+ "toNodeId": 601609,
+ "speedInKilometersPerHour": 14.0,
+ "reverseSpeedInKilometersPerHour": 14.0,
+ "distanceInMeters": 41.26
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3686216,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42252,
+ 52.18013
+ ],
+ [
+ 5.42204,
+ 52.180435
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3686216,
+ "linkIdReversed": 0,
+ "fromNodeId": 596834,
+ "toNodeId": 3882835,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.267
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3686217,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42204,
+ 52.180435
+ ],
+ [
+ 5.42156,
+ 52.180741
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3686217,
+ "linkIdReversed": 0,
+ "fromNodeId": 3882835,
+ "toNodeId": 3882836,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.267
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3686220,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42462,
+ 52.177269
+ ],
+ [
+ 5.424733,
+ 52.176878
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3686220,
+ "linkIdReversed": 0,
+ "fromNodeId": 597012,
+ "toNodeId": 3882838,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.171
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3686221,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424733,
+ 52.176878
+ ],
+ [
+ 5.424845,
+ 52.176487
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3686221,
+ "linkIdReversed": 0,
+ "fromNodeId": 3882838,
+ "toNodeId": 3882839,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.171
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3686222,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424845,
+ 52.176487
+ ],
+ [
+ 5.42489,
+ 52.176331
+ ],
+ [
+ 5.424929,
+ 52.176094
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3686222,
+ "linkIdReversed": 0,
+ "fromNodeId": 3882839,
+ "toNodeId": 3882840,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.171
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3686223,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424929,
+ 52.176094
+ ],
+ [
+ 5.42493,
+ 52.17609
+ ],
+ [
+ 5.425031,
+ 52.175702
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3686223,
+ "linkIdReversed": 0,
+ "fromNodeId": 3882840,
+ "toNodeId": 3882841,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.171
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3686224,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425031,
+ 52.175702
+ ],
+ [
+ 5.425134,
+ 52.17531
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3686224,
+ "linkIdReversed": 0,
+ "fromNodeId": 3882841,
+ "toNodeId": 3882842,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.171
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3686225,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425134,
+ 52.17531
+ ],
+ [
+ 5.425236,
+ 52.174918
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3686225,
+ "linkIdReversed": 0,
+ "fromNodeId": 3882842,
+ "toNodeId": 3882843,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.171
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3686226,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425236,
+ 52.174918
+ ],
+ [
+ 5.425338,
+ 52.174526
+ ]
+ ]
+ },
+ "properties": {
+ "id": 3686226,
+ "linkIdReversed": 0,
+ "fromNodeId": 3882843,
+ "toNodeId": 599093,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 44.171
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6369279,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.423044,
+ 52.181034
+ ],
+ [
+ 5.423499,
+ 52.180712
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6369279,
+ "linkIdReversed": 6369288,
+ "fromNodeId": 5442740,
+ "toNodeId": 5442741,
+ "speedInKilometersPerHour": 45.0,
+ "reverseSpeedInKilometersPerHour": 45.0,
+ "distanceInMeters": 47.43
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6369280,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.423499,
+ 52.180712
+ ],
+ [
+ 5.423955,
+ 52.180391
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6369280,
+ "linkIdReversed": 6369287,
+ "fromNodeId": 5442741,
+ "toNodeId": 5442742,
+ "speedInKilometersPerHour": 45.0,
+ "reverseSpeedInKilometersPerHour": 45.0,
+ "distanceInMeters": 47.43
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6369281,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.423955,
+ 52.180391
+ ],
+ [
+ 5.424184,
+ 52.180229
+ ],
+ [
+ 5.424419,
+ 52.180107
+ ],
+ [
+ 5.424449,
+ 52.180094
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6369281,
+ "linkIdReversed": 6369286,
+ "fromNodeId": 5442742,
+ "toNodeId": 5442743,
+ "speedInKilometersPerHour": 45.0,
+ "reverseSpeedInKilometersPerHour": 45.0,
+ "distanceInMeters": 47.43
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6369282,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424449,
+ 52.180094
+ ],
+ [
+ 5.424675,
+ 52.179996
+ ],
+ [
+ 5.424941,
+ 52.179909
+ ],
+ [
+ 5.42505,
+ 52.179885
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6369282,
+ "linkIdReversed": 6369285,
+ "fromNodeId": 5442743,
+ "toNodeId": 5442744,
+ "speedInKilometersPerHour": 45.0,
+ "reverseSpeedInKilometersPerHour": 45.0,
+ "distanceInMeters": 47.43
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6369283,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42505,
+ 52.179885
+ ],
+ [
+ 5.425237,
+ 52.179844
+ ],
+ [
+ 5.42572,
+ 52.179779
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6369283,
+ "linkIdReversed": 6369284,
+ "fromNodeId": 5442744,
+ "toNodeId": 1117050,
+ "speedInKilometersPerHour": 45.0,
+ "reverseSpeedInKilometersPerHour": 45.0,
+ "distanceInMeters": 47.43
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405115,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432927,
+ 52.180256
+ ],
+ [
+ 5.432499,
+ 52.180435
+ ],
+ [
+ 5.432473,
+ 52.180446
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405115,
+ "linkIdReversed": 0,
+ "fromNodeId": 1121748,
+ "toNodeId": 5467882,
+ "speedInKilometersPerHour": 45.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 37.625
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405116,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432473,
+ 52.180446
+ ],
+ [
+ 5.432129,
+ 52.180595
+ ],
+ [
+ 5.432028,
+ 52.180645
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405116,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467882,
+ "toNodeId": 5467883,
+ "speedInKilometersPerHour": 45.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 37.625
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405117,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432028,
+ 52.180645
+ ],
+ [
+ 5.431884,
+ 52.180717
+ ],
+ [
+ 5.431712,
+ 52.18084
+ ],
+ [
+ 5.431663,
+ 52.180894
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405117,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467883,
+ "toNodeId": 5467884,
+ "speedInKilometersPerHour": 45.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 37.625
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405118,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431663,
+ 52.180894
+ ],
+ [
+ 5.431594,
+ 52.180969
+ ],
+ [
+ 5.431524,
+ 52.18108
+ ],
+ [
+ 5.431477,
+ 52.18121
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405118,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467884,
+ "toNodeId": 1121749,
+ "speedInKilometersPerHour": 45.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 37.625
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405120,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.4335,
+ 52.180016
+ ],
+ [
+ 5.432927,
+ 52.180256
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405120,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467885,
+ "toNodeId": 1121748,
+ "speedInKilometersPerHour": 45.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.431
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405165,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.424756,
+ 52.181271
+ ],
+ [
+ 5.425247,
+ 52.181191
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405165,
+ "linkIdReversed": 6405170,
+ "fromNodeId": 1117049,
+ "toNodeId": 5467903,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 30.0,
+ "distanceInMeters": 34.732
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405166,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425247,
+ 52.181191
+ ],
+ [
+ 5.425737,
+ 52.18111
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405166,
+ "linkIdReversed": 6405169,
+ "fromNodeId": 5467903,
+ "toNodeId": 5467904,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 30.0,
+ "distanceInMeters": 34.732
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405167,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425737,
+ 52.18111
+ ],
+ [
+ 5.426228,
+ 52.18103
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405167,
+ "linkIdReversed": 6405168,
+ "fromNodeId": 5467904,
+ "toNodeId": 1121765,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 30.0,
+ "distanceInMeters": 34.732
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405178,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426228,
+ 52.18103
+ ],
+ [
+ 5.426726,
+ 52.180954
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405178,
+ "linkIdReversed": 6405177,
+ "fromNodeId": 1121765,
+ "toNodeId": 5467911,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 30.0,
+ "distanceInMeters": 35.069
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405179,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426726,
+ 52.180954
+ ],
+ [
+ 5.427223,
+ 52.180878
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405179,
+ "linkIdReversed": 6405176,
+ "fromNodeId": 5467911,
+ "toNodeId": 5467912,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 30.0,
+ "distanceInMeters": 35.069
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405180,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427223,
+ 52.180878
+ ],
+ [
+ 5.42747,
+ 52.18084
+ ],
+ [
+ 5.427719,
+ 52.180798
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405180,
+ "linkIdReversed": 6405175,
+ "fromNodeId": 5467912,
+ "toNodeId": 1121766,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 30.0,
+ "distanceInMeters": 35.069
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405182,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426228,
+ 52.18103
+ ],
+ [
+ 5.426316,
+ 52.181244
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405182,
+ "linkIdReversed": 6405181,
+ "fromNodeId": 1121765,
+ "toNodeId": 1121767,
+ "speedInKilometersPerHour": 45.0,
+ "reverseSpeedInKilometersPerHour": 45.0,
+ "distanceInMeters": 24.561
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405186,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42572,
+ 52.179779
+ ],
+ [
+ 5.425889,
+ 52.180196
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405186,
+ "linkIdReversed": 6405185,
+ "fromNodeId": 1117050,
+ "toNodeId": 5467915,
+ "speedInKilometersPerHour": 45.0,
+ "reverseSpeedInKilometersPerHour": 45.0,
+ "distanceInMeters": 47.824
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405187,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.425889,
+ 52.180196
+ ],
+ [
+ 5.426059,
+ 52.180613
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405187,
+ "linkIdReversed": 6405184,
+ "fromNodeId": 5467915,
+ "toNodeId": 5467916,
+ "speedInKilometersPerHour": 45.0,
+ "reverseSpeedInKilometersPerHour": 45.0,
+ "distanceInMeters": 47.824
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405188,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426059,
+ 52.180613
+ ],
+ [
+ 5.426228,
+ 52.18103
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405188,
+ "linkIdReversed": 6405183,
+ "fromNodeId": 5467916,
+ "toNodeId": 1121765,
+ "speedInKilometersPerHour": 45.0,
+ "reverseSpeedInKilometersPerHour": 45.0,
+ "distanceInMeters": 47.824
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405218,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42572,
+ 52.179779
+ ],
+ [
+ 5.426411,
+ 52.179772
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405218,
+ "linkIdReversed": 6405233,
+ "fromNodeId": 1117050,
+ "toNodeId": 5467931,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 30.0,
+ "distanceInMeters": 47.281
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405219,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.426411,
+ 52.179772
+ ],
+ [
+ 5.426481,
+ 52.179771
+ ],
+ [
+ 5.427101,
+ 52.179794
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405219,
+ "linkIdReversed": 6405232,
+ "fromNodeId": 5467931,
+ "toNodeId": 5467932,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 30.0,
+ "distanceInMeters": 47.281
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405220,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427101,
+ 52.179794
+ ],
+ [
+ 5.427791,
+ 52.17982
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405220,
+ "linkIdReversed": 6405231,
+ "fromNodeId": 5467932,
+ "toNodeId": 5467933,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 30.0,
+ "distanceInMeters": 47.281
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405221,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427791,
+ 52.17982
+ ],
+ [
+ 5.428481,
+ 52.179846
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405221,
+ "linkIdReversed": 6405230,
+ "fromNodeId": 5467933,
+ "toNodeId": 5467934,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 30.0,
+ "distanceInMeters": 47.281
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405222,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428481,
+ 52.179846
+ ],
+ [
+ 5.429171,
+ 52.179872
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405222,
+ "linkIdReversed": 6405229,
+ "fromNodeId": 5467934,
+ "toNodeId": 5467935,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 30.0,
+ "distanceInMeters": 47.281
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405223,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429171,
+ 52.179872
+ ],
+ [
+ 5.429861,
+ 52.179897
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405223,
+ "linkIdReversed": 6405228,
+ "fromNodeId": 5467935,
+ "toNodeId": 5467936,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 30.0,
+ "distanceInMeters": 47.281
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405224,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429861,
+ 52.179897
+ ],
+ [
+ 5.43036,
+ 52.179916
+ ],
+ [
+ 5.430534,
+ 52.179965
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405224,
+ "linkIdReversed": 6405227,
+ "fromNodeId": 5467936,
+ "toNodeId": 5467937,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 30.0,
+ "distanceInMeters": 47.281
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405225,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430534,
+ 52.179965
+ ],
+ [
+ 5.430536,
+ 52.179966
+ ],
+ [
+ 5.430629,
+ 52.18008
+ ],
+ [
+ 5.430644,
+ 52.180176
+ ],
+ [
+ 5.430639,
+ 52.180237
+ ],
+ [
+ 5.430609,
+ 52.180374
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405225,
+ "linkIdReversed": 6405226,
+ "fromNodeId": 5467937,
+ "toNodeId": 1121779,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 30.0,
+ "distanceInMeters": 47.281
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405235,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429931,
+ 52.180485
+ ],
+ [
+ 5.430609,
+ 52.180374
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405235,
+ "linkIdReversed": 6405234,
+ "fromNodeId": 1121780,
+ "toNodeId": 1121779,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 30.0,
+ "distanceInMeters": 47.993
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405237,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431004,
+ 52.18128
+ ],
+ [
+ 5.431042,
+ 52.181019
+ ],
+ [
+ 5.431057,
+ 52.180851
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405237,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467945,
+ "toNodeId": 5467946,
+ "speedInKilometersPerHour": 24.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.913
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405238,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431057,
+ 52.180851
+ ],
+ [
+ 5.43107,
+ 52.18071
+ ],
+ [
+ 5.431116,
+ 52.18045
+ ],
+ [
+ 5.431117,
+ 52.180422
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405238,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467946,
+ "toNodeId": 5467947,
+ "speedInKilometersPerHour": 24.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.913
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405239,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431117,
+ 52.180422
+ ],
+ [
+ 5.431123,
+ 52.180313
+ ],
+ [
+ 5.430609,
+ 52.180374
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405239,
+ "linkIdReversed": 0,
+ "fromNodeId": 5467947,
+ "toNodeId": 1121779,
+ "speedInKilometersPerHour": 24.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.913
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405244,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427719,
+ 52.180798
+ ],
+ [
+ 5.428272,
+ 52.18072
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405244,
+ "linkIdReversed": 6405243,
+ "fromNodeId": 1121766,
+ "toNodeId": 5467951,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 30.0,
+ "distanceInMeters": 38.815
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405245,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428272,
+ 52.18072
+ ],
+ [
+ 5.428825,
+ 52.180642
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405245,
+ "linkIdReversed": 6405242,
+ "fromNodeId": 5467951,
+ "toNodeId": 5467952,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 30.0,
+ "distanceInMeters": 38.815
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405246,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428825,
+ 52.180642
+ ],
+ [
+ 5.429378,
+ 52.180563
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405246,
+ "linkIdReversed": 6405241,
+ "fromNodeId": 5467952,
+ "toNodeId": 5467953,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 30.0,
+ "distanceInMeters": 38.815
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405247,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429378,
+ 52.180563
+ ],
+ [
+ 5.429931,
+ 52.180485
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405247,
+ "linkIdReversed": 6405240,
+ "fromNodeId": 5467953,
+ "toNodeId": 1121780,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 30.0,
+ "distanceInMeters": 38.815
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405249,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429819,
+ 52.181284
+ ],
+ [
+ 5.429875,
+ 52.180884
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405249,
+ "linkIdReversed": 6405252,
+ "fromNodeId": 5467954,
+ "toNodeId": 5467955,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 30.0,
+ "distanceInMeters": 44.599
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405250,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429875,
+ 52.180884
+ ],
+ [
+ 5.429931,
+ 52.180485
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405250,
+ "linkIdReversed": 6405251,
+ "fromNodeId": 5467955,
+ "toNodeId": 1121780,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 30.0,
+ "distanceInMeters": 44.599
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6405257,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.427719,
+ 52.180798
+ ],
+ [
+ 5.427839,
+ 52.181107
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6405257,
+ "linkIdReversed": 6405256,
+ "fromNodeId": 1121766,
+ "toNodeId": 5467960,
+ "speedInKilometersPerHour": 30.0,
+ "reverseSpeedInKilometersPerHour": 30.0,
+ "distanceInMeters": 35.349
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6409986,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.433145,
+ 52.172166
+ ],
+ [
+ 5.432642,
+ 52.172405
+ ],
+ [
+ 5.432593,
+ 52.172423
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6409986,
+ "linkIdReversed": 0,
+ "fromNodeId": 5470745,
+ "toNodeId": 5470746,
+ "speedInKilometersPerHour": 65.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.408
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6409987,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432593,
+ 52.172423
+ ],
+ [
+ 5.43231,
+ 52.172531
+ ],
+ [
+ 5.431984,
+ 52.172625
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6409987,
+ "linkIdReversed": 0,
+ "fromNodeId": 5470746,
+ "toNodeId": 5470747,
+ "speedInKilometersPerHour": 65.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.408
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6409988,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431984,
+ 52.172625
+ ],
+ [
+ 5.431937,
+ 52.172638
+ ],
+ [
+ 5.431495,
+ 52.172714
+ ],
+ [
+ 5.431314,
+ 52.172729
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6409988,
+ "linkIdReversed": 0,
+ "fromNodeId": 5470747,
+ "toNodeId": 5470748,
+ "speedInKilometersPerHour": 65.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.408
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6409989,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431314,
+ 52.172729
+ ],
+ [
+ 5.431076,
+ 52.172749
+ ],
+ [
+ 5.430624,
+ 52.172745
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6409989,
+ "linkIdReversed": 0,
+ "fromNodeId": 5470748,
+ "toNodeId": 5470749,
+ "speedInKilometersPerHour": 65.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.408
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6409990,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430624,
+ 52.172745
+ ],
+ [
+ 5.430595,
+ 52.172745
+ ],
+ [
+ 5.430142,
+ 52.172695
+ ],
+ [
+ 5.429948,
+ 52.172655
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6409990,
+ "linkIdReversed": 0,
+ "fromNodeId": 5470749,
+ "toNodeId": 5470750,
+ "speedInKilometersPerHour": 65.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.408
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6409991,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429948,
+ 52.172655
+ ],
+ [
+ 5.429864,
+ 52.172638
+ ],
+ [
+ 5.429593,
+ 52.172562
+ ],
+ [
+ 5.429338,
+ 52.172458
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6409991,
+ "linkIdReversed": 0,
+ "fromNodeId": 5470750,
+ "toNodeId": 5470751,
+ "speedInKilometersPerHour": 65.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.408
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6409992,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.429338,
+ 52.172458
+ ],
+ [
+ 5.429275,
+ 52.172432
+ ],
+ [
+ 5.429121,
+ 52.172352
+ ],
+ [
+ 5.428904,
+ 52.172237
+ ],
+ [
+ 5.428808,
+ 52.172184
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6409992,
+ "linkIdReversed": 0,
+ "fromNodeId": 5470751,
+ "toNodeId": 5470752,
+ "speedInKilometersPerHour": 65.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.408
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6410877,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432878,
+ 52.18021
+ ],
+ [
+ 5.433451,
+ 52.17997
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6410877,
+ "linkIdReversed": 0,
+ "fromNodeId": 1122767,
+ "toNodeId": 5471354,
+ "speedInKilometersPerHour": 45.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.431
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6410880,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431435,
+ 52.181028
+ ],
+ [
+ 5.43153,
+ 52.180908
+ ],
+ [
+ 5.43167,
+ 52.180786
+ ],
+ [
+ 5.431812,
+ 52.180696
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6410880,
+ "linkIdReversed": 0,
+ "fromNodeId": 5471355,
+ "toNodeId": 5471356,
+ "speedInKilometersPerHour": 45.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.451
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6410881,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431812,
+ 52.180696
+ ],
+ [
+ 5.431916,
+ 52.18063
+ ],
+ [
+ 5.432222,
+ 52.180496
+ ],
+ [
+ 5.432336,
+ 52.180446
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6410881,
+ "linkIdReversed": 0,
+ "fromNodeId": 5471356,
+ "toNodeId": 5471357,
+ "speedInKilometersPerHour": 45.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.451
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 6410882,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432336,
+ 52.180446
+ ],
+ [
+ 5.432878,
+ 52.18021
+ ]
+ ]
+ },
+ "properties": {
+ "id": 6410882,
+ "linkIdReversed": 0,
+ "fromNodeId": 5471357,
+ "toNodeId": 1122767,
+ "speedInKilometersPerHour": 45.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 45.451
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7223061,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.433661,
+ 52.180611
+ ],
+ [
+ 5.43331,
+ 52.180338
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7223061,
+ "linkIdReversed": 0,
+ "fromNodeId": 5985262,
+ "toNodeId": 5985263,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 38.697
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7223062,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.43331,
+ 52.180338
+ ],
+ [
+ 5.432959,
+ 52.180065
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7223062,
+ "linkIdReversed": 0,
+ "fromNodeId": 5985263,
+ "toNodeId": 596832,
+ "speedInKilometersPerHour": 80.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 38.697
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7223065,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.433601,
+ 52.180439
+ ],
+ [
+ 5.433382,
+ 52.180233
+ ],
+ [
+ 5.433212,
+ 52.180084
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7223065,
+ "linkIdReversed": 0,
+ "fromNodeId": 5985265,
+ "toNodeId": 5985266,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.631
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7223066,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.433212,
+ 52.180084
+ ],
+ [
+ 5.432811,
+ 52.179734
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7223066,
+ "linkIdReversed": 0,
+ "fromNodeId": 5985266,
+ "toNodeId": 5985267,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.631
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7223067,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432811,
+ 52.179734
+ ],
+ [
+ 5.43241,
+ 52.179384
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7223067,
+ "linkIdReversed": 0,
+ "fromNodeId": 5985267,
+ "toNodeId": 5985268,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.631
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7223068,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.43241,
+ 52.179384
+ ],
+ [
+ 5.432009,
+ 52.179034
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7223068,
+ "linkIdReversed": 0,
+ "fromNodeId": 5985268,
+ "toNodeId": 5985269,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.631
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7223069,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432009,
+ 52.179034
+ ],
+ [
+ 5.431713,
+ 52.178776
+ ],
+ [
+ 5.431609,
+ 52.178684
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7223069,
+ "linkIdReversed": 0,
+ "fromNodeId": 5985269,
+ "toNodeId": 5985270,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.631
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7223070,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431609,
+ 52.178684
+ ],
+ [
+ 5.43121,
+ 52.178333
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7223070,
+ "linkIdReversed": 0,
+ "fromNodeId": 5985270,
+ "toNodeId": 5985271,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.631
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7223071,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.43121,
+ 52.178333
+ ],
+ [
+ 5.430812,
+ 52.177982
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7223071,
+ "linkIdReversed": 0,
+ "fromNodeId": 5985271,
+ "toNodeId": 5985272,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.631
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7223072,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430812,
+ 52.177982
+ ],
+ [
+ 5.430413,
+ 52.177631
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7223072,
+ "linkIdReversed": 0,
+ "fromNodeId": 5985272,
+ "toNodeId": 5985273,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.631
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7223073,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430413,
+ 52.177631
+ ],
+ [
+ 5.430015,
+ 52.17728
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7223073,
+ "linkIdReversed": 0,
+ "fromNodeId": 5985273,
+ "toNodeId": 597029,
+ "speedInKilometersPerHour": 95.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.631
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7930097,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.428925,
+ 52.172131
+ ],
+ [
+ 5.428988,
+ 52.172165
+ ],
+ [
+ 5.429345,
+ 52.172329
+ ],
+ [
+ 5.42949,
+ 52.172383
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7930097,
+ "linkIdReversed": 0,
+ "fromNodeId": 6349336,
+ "toNodeId": 6349337,
+ "speedInKilometersPerHour": 65.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.846
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7930098,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.42949,
+ 52.172383
+ ],
+ [
+ 5.429684,
+ 52.172455
+ ],
+ [
+ 5.430015,
+ 52.172539
+ ],
+ [
+ 5.430126,
+ 52.172557
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7930098,
+ "linkIdReversed": 0,
+ "fromNodeId": 6349337,
+ "toNodeId": 6349338,
+ "speedInKilometersPerHour": 65.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.846
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7930099,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430126,
+ 52.172557
+ ],
+ [
+ 5.430324,
+ 52.172588
+ ],
+ [
+ 5.430683,
+ 52.172626
+ ],
+ [
+ 5.430814,
+ 52.172629
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7930099,
+ "linkIdReversed": 0,
+ "fromNodeId": 6349338,
+ "toNodeId": 6349339,
+ "speedInKilometersPerHour": 65.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.846
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7930100,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.430814,
+ 52.172629
+ ],
+ [
+ 5.431061,
+ 52.172634
+ ],
+ [
+ 5.431426,
+ 52.172611
+ ],
+ [
+ 5.431509,
+ 52.172599
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7930100,
+ "linkIdReversed": 0,
+ "fromNodeId": 6349339,
+ "toNodeId": 6349340,
+ "speedInKilometersPerHour": 65.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.846
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7930101,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.431509,
+ 52.172599
+ ],
+ [
+ 5.431897,
+ 52.172543
+ ],
+ [
+ 5.432171,
+ 52.172468
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7930101,
+ "linkIdReversed": 0,
+ "fromNodeId": 6349340,
+ "toNodeId": 6349341,
+ "speedInKilometersPerHour": 65.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.846
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 7930102,
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.432171,
+ 52.172468
+ ],
+ [
+ 5.432286,
+ 52.172436
+ ],
+ [
+ 5.432635,
+ 52.172298
+ ],
+ [
+ 5.432759,
+ 52.172237
+ ]
+ ]
+ },
+ "properties": {
+ "id": 7930102,
+ "linkIdReversed": 0,
+ "fromNodeId": 6349341,
+ "toNodeId": 6349342,
+ "speedInKilometersPerHour": 65.0,
+ "reverseSpeedInKilometersPerHour": 0.0,
+ "distanceInMeters": 47.846
+ }
+ }
+ ]
+}
diff --git a/pom.xml b/pom.xml
index 74277f8f..6970321d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,13 +7,13 @@
org.springframework.boot
spring-boot-starter-parent
- 3.3.0
+ 3.3.4
nu.ndw.nls
routing-map-matcher-parent
- 10.0.3-SNAPSHOT
+ 13.0.2-SNAPSHOT
routing map matcher parent
Routing Map Matcher modules containing the core library and spring boot starter modules
pom
@@ -27,20 +27,20 @@
21
UTF-8
false
- 8.0
+ 9.1
3.1.12
1.19.0
- 33.2.0-jre
+ 33.3.1-jre
3.0
0.8.12
30.2
0.18.1
- 2.16.1
+ 2.17.0
3.9.1.2184
nls-routing-map-matcher
- 3.0.0
- 5.5.0
+ 3.1.0
+ 5.6.2
@@ -84,7 +84,7 @@
graphhopper-core
${graphhopper.version}
-
+
org.codehaus.janino
janino