@Override public void setNode(int nodeId, double lat, double lon, double ele) { set(nodeId, lat, lon, ele); }
@Override public void setNode(int nodeId, double lat, double lon) { set(nodeId, lat, lon, Double.NaN); }
/** * compress list: move points into EMPTY slots */ void compressNew(PointList points, int removed) { int freeIndex = -1; for (int currentIndex = 0; currentIndex < points.getSize(); currentIndex++) { if (Double.isNaN(points.getLatitude(currentIndex))) { if (freeIndex < 0) freeIndex = currentIndex; continue; } else if (freeIndex < 0) { continue; } points.set(freeIndex, points.getLatitude(currentIndex), points.getLongitude(currentIndex), points.getElevation(currentIndex)); points.set(currentIndex, Double.NaN, Double.NaN, Double.NaN); // find next free index int max = currentIndex; int searchIndex = freeIndex + 1; freeIndex = currentIndex; for (; searchIndex < max; searchIndex++) { if (Double.isNaN(points.getLatitude(searchIndex))) { freeIndex = searchIndex; break; } } } points.trimToSize(points.getSize() - removed); }
if (maxDist < normedMaxDist) { for (int i = fromIndex + 1; i < lastIndex; i++) { points.set(i, Double.NaN, Double.NaN, Double.NaN); counter++;
private void interpolateElevationsOfPillarNodes() { final EdgeIterator edge = storage.getAllEdges(); final NodeAccess nodeAccess = storage.getNodeAccess(); while (edge.next()) { if (isInterpolatableEdge(edge)) { int firstNodeId = edge.getBaseNode(); int secondNodeId = edge.getAdjNode(); double lat0 = nodeAccess.getLat(firstNodeId); double lon0 = nodeAccess.getLon(firstNodeId); double ele0 = nodeAccess.getEle(firstNodeId); double lat1 = nodeAccess.getLat(secondNodeId); double lon1 = nodeAccess.getLon(secondNodeId); double ele1 = nodeAccess.getEle(secondNodeId); final PointList pointList = edge.fetchWayGeometry(0); final int count = pointList.size(); for (int index = 0; index < count; index++) { double lat = pointList.getLat(index); double lon = pointList.getLon(index); double ele = elevationInterpolator.calculateElevationBasedOnTwoPoints(lat, lon, lat0, lon0, ele0, lat1, lon1, ele1); pointList.set(index, lat, lon, ele); } edge.setWayGeometry(pointList); } } } }
@Override public void setNode( int nodeId, double lat, double lon ) { set(nodeId, lat, lon, Double.NaN); }
@Override public void setNode( int nodeId, double lat, double lon, double ele ) { set(nodeId, lat, lon, ele); }
@Override public void setNode(int nodeId, double lat, double lon, double ele) { set(nodeId, lat, lon, ele); }
@Override public void setNode(int nodeId, double lat, double lon) { set(nodeId, lat, lon, Double.NaN); }
@Override public void setNode(int nodeId, double lat, double lon, double ele) { set(nodeId, lat, lon, ele); }
@Override public void setNode(int nodeId, double lat, double lon) { set(nodeId, lat, lon, Double.NaN); }
/** * compress list: move points into EMPTY slots */ void compressNew(PointList points, int removed) { int freeIndex = -1; for (int currentIndex = 0; currentIndex < points.getSize(); currentIndex++) { if (Double.isNaN(points.getLatitude(currentIndex))) { if (freeIndex < 0) freeIndex = currentIndex; continue; } else if (freeIndex < 0) { continue; } points.set(freeIndex, points.getLatitude(currentIndex), points.getLongitude(currentIndex), points.getElevation(currentIndex)); points.set(currentIndex, Double.NaN, Double.NaN, Double.NaN); // find next free index int max = currentIndex; int searchIndex = freeIndex + 1; freeIndex = currentIndex; for (; searchIndex < max; searchIndex++) { if (Double.isNaN(points.getLatitude(searchIndex))) { freeIndex = searchIndex; break; } } } points.trimToSize(points.getSize() - removed); }
/** * compress list: move points into EMPTY slots */ void compressNew(PointList points, int removed) { int freeIndex = -1; for (int currentIndex = 0; currentIndex < points.getSize(); currentIndex++) { if (Double.isNaN(points.getLatitude(currentIndex))) { if (freeIndex < 0) freeIndex = currentIndex; continue; } else if (freeIndex < 0) { continue; } points.set(freeIndex, points.getLatitude(currentIndex), points.getLongitude(currentIndex), points.getElevation(currentIndex)); points.set(currentIndex, Double.NaN, Double.NaN, Double.NaN); // find next free index int max = currentIndex; int searchIndex = freeIndex + 1; freeIndex = currentIndex; for (; searchIndex < max; searchIndex++) { if (Double.isNaN(points.getLatitude(searchIndex))) { freeIndex = searchIndex; break; } } } points.trimToSize(points.getSize() - removed); }
if (maxDist < normedMaxDist) { for (int i = fromIndex + 1; i < lastIndex; i++) { points.set(i, Double.NaN, Double.NaN, Double.NaN); counter++;
if (maxDist < normedMaxDist) { for (int i = fromIndex + 1; i < lastIndex; i++) { points.set(i, Double.NaN, Double.NaN, Double.NaN); counter++;
points.set(i, Double.NaN, Double.NaN, Double.NaN); counter++;
private void interpolateElevationsOfPillarNodes() { final EdgeIterator edge = storage.getAllEdges(); final NodeAccess nodeAccess = storage.getNodeAccess(); while (edge.next()) { if (isInterpolatableEdge(edge)) { int firstNodeId = edge.getBaseNode(); int secondNodeId = edge.getAdjNode(); double lat0 = nodeAccess.getLat(firstNodeId); double lon0 = nodeAccess.getLon(firstNodeId); double ele0 = nodeAccess.getEle(firstNodeId); double lat1 = nodeAccess.getLat(secondNodeId); double lon1 = nodeAccess.getLon(secondNodeId); double ele1 = nodeAccess.getEle(secondNodeId); final PointList pointList = edge.fetchWayGeometry(0); final int count = pointList.size(); for (int index = 0; index < count; index++) { double lat = pointList.getLat(index); double lon = pointList.getLon(index); double ele = elevationInterpolator.calculateElevationBasedOnTwoPoints(lat, lon, lat0, lon0, ele0, lat1, lon1, ele1); pointList.set(index, lat, lon, ele); } edge.setWayGeometry(pointList); } } } }
private void interpolateElevationsOfPillarNodes() { final EdgeIterator edge = storage.getAllEdges(); final NodeAccess nodeAccess = storage.getNodeAccess(); while (edge.next()) { if (isInterpolatableEdge(edge)) { int firstNodeId = edge.getBaseNode(); int secondNodeId = edge.getAdjNode(); double lat0 = nodeAccess.getLat(firstNodeId); double lon0 = nodeAccess.getLon(firstNodeId); double ele0 = nodeAccess.getEle(firstNodeId); double lat1 = nodeAccess.getLat(secondNodeId); double lon1 = nodeAccess.getLon(secondNodeId); double ele1 = nodeAccess.getEle(secondNodeId); final PointList pointList = edge.fetchWayGeometry(0); final int count = pointList.size(); for (int index = 0; index < count; index++) { double lat = pointList.getLat(index); double lon = pointList.getLon(index); double ele = elevationInterpolator.calculateElevationBasedOnTwoPoints(lat, lon, lat0, lon0, ele0, lat1, lon1, ele1); pointList.set(index, lat, lon, ele); } edge.setWayGeometry(pointList); } } } }