public Geometry reverse() { return lineString.reverse(); }
/** * Returns a line string cursor based on the opposite walking direction. * * @return */ public LineStringCursor reverse() { return new LineStringCursor((LineString) lineString.reverse()); }
public Geometry reverse() { // reverse the component, and reverse each component internal elements List<LineString> reversedComponents = new ArrayList<>(components.size()); for (LineString ls : components) { LineString reversed = (LineString) ls.reverse(); reversedComponents.add(0, reversed); } return new CompoundCurve(reversedComponents, getFactory(), tolerance); }
List<?> toList(Polygon p) { BasicDBList l = new BasicDBList(); if (!CGAlgorithms.isCCW(p.getExteriorRing().getCoordinates())) { l.add(toList(p.getExteriorRing().reverse().getCoordinates())); } else { l.add(toList(p.getExteriorRing().getCoordinateSequence())); } for (int i = 0; i < p.getNumInteriorRing(); i++) { l.add(toList(p.getInteriorRingN(i).getCoordinateSequence())); } return l; } }
private Geometry reverse(Geometry linear) { if (linear instanceof LineString) return ((LineString) linear).reverse(); if (linear instanceof MultiLineString) return ((MultiLineString) linear).reverse(); Assert.shouldNeverReachHere("non-linear geometry encountered"); return null; } /**
ls = (LineString) ls.reverse(); cs = ls.getCoordinateSequence(); flipped = true;
List<Integer> commands(Polygon polygon) { List<Integer> commands = new ArrayList<Integer>(); // According to the vector tile specification, the exterior ring of a polygon // must be in clockwise order, while the interior ring in counter-clockwise order. // In the tile coordinate system, Y axis is positive down. // // However, in geographic coordinate system, Y axis is positive up. // Therefore, we must reverse the coordinates. // So, the code below will make sure that exterior ring is in counter-clockwise order // and interior ring in clockwise order. LineString exteriorRing = polygon.getExteriorRing(); if (!Orientation.isCCW(exteriorRing.getCoordinates())) { exteriorRing = (LineString) exteriorRing.reverse(); } commands.addAll(commands(exteriorRing.getCoordinates(), true)); for (int i = 0; i < polygon.getNumInteriorRing(); i++) { LineString interiorRing = polygon.getInteriorRingN(i); if (Orientation.isCCW(interiorRing.getCoordinates())) { interiorRing = (LineString) interiorRing.reverse(); } commands.addAll(commands(interiorRing.getCoordinates(), true)); } return commands; }
for (LineString line : lineStringList) { if (!lineStringSet.contains(line) && !lineStringSet.contains(line.reverse())) { lineStringSet.add(line);
/** * Reverse the LineString to be oriented counter-clockwise. * @param lineString * @return */ private static LineString getCounterClockWise(final LineString lineString) { final Coordinate c0 = lineString.getCoordinateN(0); final Coordinate c1 = lineString.getCoordinateN(1); final Coordinate c2 = lineString.getCoordinateN(2); lineString.apply(new UpdateZCoordinateSequenceFilter(0, 3)); if (CGAlgorithms.computeOrientation(c0, c1, c2) == CGAlgorithms.COUNTERCLOCKWISE) { return lineString; } else { return (LineString) lineString.reverse(); } }
/** * Reverse the LineString to be oriented clockwise. * All NaN z values are replaced by a zero value. * @param lineString * @return */ private static LineString getClockWise(final LineString lineString) { final Coordinate c0 = lineString.getCoordinateN(0); final Coordinate c1 = lineString.getCoordinateN(1); final Coordinate c2 = lineString.getCoordinateN(2); lineString.apply(new UpdateZCoordinateSequenceFilter(0, 3)); if (CGAlgorithms.computeOrientation(c0, c1, c2) == CGAlgorithms.CLOCKWISE) { return lineString; } else { return (LineString) lineString.reverse(); } }
private static Geometry create_J(Geometry g) { GeometryFactory gf = FunctionsUtil.getFactoryOrDefault(g); Coordinate[] jTop = new Coordinate[] { new Coordinate(0,HEIGHT), new Coordinate(J_WIDTH,HEIGHT), new Coordinate(J_WIDTH,J_RADIUS) }; Coordinate[] jBottom = new Coordinate[] { new Coordinate(J_WIDTH - J_RADIUS,0), new Coordinate(0,0) }; GeometricShapeFactory gsf = new GeometricShapeFactory(gf); gsf.setBase(new Coordinate(J_WIDTH - 2 * J_RADIUS, 0)); gsf.setSize(2 * J_RADIUS); gsf.setNumPoints(10); LineString jArc = gsf.createArc(1.5 * Math.PI, 0.5 * Math.PI); CoordinateList coordList = new CoordinateList(); coordList.add(jTop, false); coordList.add(jArc.reverse().getCoordinates(), false, 1, jArc.getNumPoints() - 1); coordList.add(jBottom, false); return gf.createLineString(coordList.toCoordinateArray()); }
gsf2.setSize(2 * S_RADIUS); gsf2.setNumPoints(10); LineString arcBottom = (LineString) gsf2.createArc(1.5 * Math.PI, Math.PI).reverse();