public void apply(GeometryFilter filter) { lineString.apply(filter); }
public void apply(CoordinateFilter filter) { lineString.apply(filter); }
public void apply(CoordinateSequenceFilter filter) { lineString.apply(filter); }
public void apply(GeometryComponentFilter filter) { lineString.apply(filter); }
/** * Extract the linestring "roof". * * @param lineString * @param height * @return */ public static Geometry extractRoof(LineString lineString, double height) { LineString result = (LineString) lineString.clone(); result.apply(new TranslateCoordinateSequenceFilter(height)); return result; }
/** * Extract the linestring "roof". * * @param lineString * @param height * @return */ public static Geometry extractRoof(LineString lineString, double height) { LineString result = (LineString) lineString.clone(); result.apply(new TranslateCoordinateSequenceFilter(height)); return result; }
/** * Interpolate a linestring according start and end coordinates z value. If * the z is NaN return the input linestring * * @param lineString * @param startz * @param endz * @return linestring */ public static LineString linearZInterpolation(LineString lineString, double startz, double endz) { if (Double.isNaN(startz) || Double.isNaN(endz)) { return lineString; } else { double length = lineString.getLength(); lineString.apply(new LinearZInterpolationFilter(startz, endz, length)); return lineString; } }
/** * Interpolate a linestring according the start and the end coordinates z * value. If the start or the end z is NaN return the input linestring * * @param lineString * @return */ private static LineString linearZInterpolation(LineString lineString) { double startz = lineString.getStartPoint().getCoordinate().z; double endz = lineString.getEndPoint().getCoordinate().z; if (Double.isNaN(startz) || Double.isNaN(endz)) { return lineString; } else { double length = lineString.getLength(); lineString.apply(new LinearZInterpolationFilter(startz, endz, length)); return lineString; } }
/** * Interpolate a linestring according the start and the end coordinates z * value. If the start or the end z is NaN return the input linestring * * @param lineString * @return */ private static LineString linearZInterpolation(LineString lineString) { double startz = lineString.getStartPoint().getCoordinate().z; double endz = lineString.getEndPoint().getCoordinate().z; if (Double.isNaN(startz) || Double.isNaN(endz)) { return lineString; } else { double length = lineString.getLength(); lineString.apply(new LinearZInterpolationFilter(startz, endz, length)); return lineString; } }
private void addSimpleGeometry(Geometry geom, PointHandler pointHandler, LineStringHandler lineStringHandler) throws IllegalArgumentException { if(geom instanceof Point) { geom.apply(pointHandler); } else if(geom instanceof LineString) { lineStringHandler.reset(); geom.apply(lineStringHandler); } else if(geom instanceof Polygon) { Polygon polygon = (Polygon) geom; lineStringHandler.reset(); polygon.getExteriorRing().apply(lineStringHandler); for(int idHole = 0; idHole < polygon.getNumInteriorRing(); idHole++) { lineStringHandler.reset(); polygon.getInteriorRingN(idHole).apply(lineStringHandler); } } }
private void addSimpleGeometry(Geometry geom, PointHandler pointHandler, LineStringHandler lineStringHandler) throws IllegalArgumentException { if(geom instanceof Point) { geom.apply(pointHandler); } else if(geom instanceof LineString) { lineStringHandler.reset(); geom.apply(lineStringHandler); } else if(geom instanceof Polygon) { Polygon polygon = (Polygon) geom; lineStringHandler.reset(); polygon.getExteriorRing().apply(lineStringHandler); for(int idHole = 0; idHole < polygon.getNumInteriorRing(); idHole++) { lineStringHandler.reset(); polygon.getInteriorRingN(idHole).apply(lineStringHandler); } } }
private static MultiLineString mergeTrianglesEdges(GeometryCollection polygons) { GeometryFactory factory = polygons.getFactory(); Set<LineSegment> segments = new HashSet<LineSegment>(polygons.getNumGeometries()); SegmentMerge segmentMerge = new SegmentMerge(segments); for(int idGeom = 0; idGeom < polygons.getNumGeometries(); idGeom++) { Geometry polygonGeom = polygons.getGeometryN(idGeom); if(polygonGeom instanceof Polygon) { Polygon polygon = (Polygon)polygonGeom; segmentMerge.reset(); polygon.getExteriorRing().apply(segmentMerge); } } // Convert segments into multilinestring LineString[] lineStrings = new LineString[segments.size()]; int idLine = 0; for(LineSegment lineSegment : segments) { lineStrings[idLine++] = factory.createLineString(new Coordinate[] {lineSegment.p0, lineSegment.p1}); } segments.clear(); return factory.createMultiLineString(lineStrings); }
private static MultiLineString mergeTrianglesEdges(GeometryCollection polygons) { GeometryFactory factory = polygons.getFactory(); Set<LineSegment> segments = new HashSet<LineSegment>(polygons.getNumGeometries()); SegmentMerge segmentMerge = new SegmentMerge(segments); for(int idGeom = 0; idGeom < polygons.getNumGeometries(); idGeom++) { Geometry polygonGeom = polygons.getGeometryN(idGeom); if(polygonGeom instanceof Polygon) { Polygon polygon = (Polygon)polygonGeom; segmentMerge.reset(); polygon.getExteriorRing().apply(segmentMerge); } } // Convert segments into multilinestring LineString[] lineStrings = new LineString[segments.size()]; int idLine = 0; for(LineSegment lineSegment : segments) { lineStrings[idLine++] = factory.createLineString(new Coordinate[] {lineSegment.p0, lineSegment.p1}); } segments.clear(); return factory.createMultiLineString(lineStrings); }
/** * 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 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(); } }
/** * 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(); } }
public static MultiLineString linearZInterpolation(MultiLineString multiLineString) { int nbGeom = multiLineString.getNumGeometries(); LineString[] lines = new LineString[nbGeom]; for (int i = 0; i < nbGeom; i++) { LineString subGeom = (LineString) multiLineString.getGeometryN(i); double startz = subGeom.getStartPoint().getCoordinates()[0].z; double endz = subGeom.getEndPoint().getCoordinates()[0].z; double length = subGeom.getLength(); subGeom.apply(new LinearZInterpolationFilter(startz, endz, length)); lines[i] = subGeom; } return FACTORY.createMultiLineString(lines); }
/** * Interpolate each linestring of the multilinestring. * * @param multiLineString * @return */ private static MultiLineString linearZInterpolation(MultiLineString multiLineString) { int nbGeom = multiLineString.getNumGeometries(); LineString[] lines = new LineString[nbGeom]; for (int i = 0; i < nbGeom; i++) { LineString subGeom = (LineString) multiLineString.getGeometryN(i); double startz = subGeom.getStartPoint().getCoordinates()[0].z; double endz = subGeom.getEndPoint().getCoordinates()[0].z; double length = subGeom.getLength(); subGeom.apply(new LinearZInterpolationFilter(startz, endz, length)); lines[i] = subGeom; } return FACTORY.createMultiLineString(lines); }
/** * Interpolate each linestring of the multilinestring. * * @param multiLineString * @return */ private static MultiLineString linearZInterpolation(MultiLineString multiLineString) { int nbGeom = multiLineString.getNumGeometries(); LineString[] lines = new LineString[nbGeom]; for (int i = 0; i < nbGeom; i++) { LineString subGeom = (LineString) multiLineString.getGeometryN(i); double startz = subGeom.getStartPoint().getCoordinates()[0].z; double endz = subGeom.getEndPoint().getCoordinates()[0].z; double length = subGeom.getLength(); subGeom.apply(new LinearZInterpolationFilter(startz, endz, length)); lines[i] = subGeom; } return FACTORY.createMultiLineString(lines); }