/** * Compute the offset curve for a polygon, a point or a collection of geometries * @param list * @param geometry * @param offset * @param bufferParameters */ public static void geometryOffSetCurve(ArrayList<LineString> list, Geometry geometry, double offset, BufferParameters bufferParameters) { final List curves = new OffsetCurveSetBuilder(geometry, offset, new OffsetCurveBuilder(geometry.getFactory().getPrecisionModel(), bufferParameters)).getCurves(); final Iterator<SegmentString> iterator = curves.iterator(); while (iterator.hasNext()) { list.add(geometry.getFactory().createLineString(iterator.next().getCoordinates())); } }
/** * Compute the offset curve for a linestring * * @param list * @param lineString * @param offset * @param bufferParameters */ public static void lineStringOffSetCurve(ArrayList<LineString> list, LineString lineString, double offset, BufferParameters bufferParameters) { list.add(lineString.getFactory().createLineString(new OffsetCurveBuilder(lineString.getPrecisionModel(), bufferParameters).getOffsetCurve(lineString.getCoordinates(), offset))); }
private static Geometry buildCurveSet(Geometry g, double dist, BufferParameters bufParams) { // --- now construct curve OffsetCurveBuilder ocb = new OffsetCurveBuilder( g.getFactory().getPrecisionModel(), bufParams); OffsetCurveSetBuilder ocsb = new OffsetCurveSetBuilder(g, dist, ocb); List curves = ocsb.getCurves(); List lines = new ArrayList(); for (Iterator i = curves.iterator(); i.hasNext(); ) { SegmentString ss = (SegmentString) i.next(); Coordinate[] pts = ss.getCoordinates(); lines.add(g.getFactory().createLineString(pts)); } Geometry curve = g.getFactory().buildGeometry(lines); return curve; }
public static Geometry offsetCurve(Geometry geom, double distance) { BufferParameters bufParams = new BufferParameters(); OffsetCurveBuilder ocb = new OffsetCurveBuilder( geom.getFactory().getPrecisionModel(), bufParams ); Coordinate[] pts = ocb.getOffsetCurve(geom.getCoordinates(), distance); Geometry curve = geom.getFactory().createLineString(pts); return curve; }
public static Geometry singleSidedBufferCurve(Geometry geom, double distance) { BufferParameters bufParam = new BufferParameters(); bufParam.setSingleSided(true); OffsetCurveBuilder ocb = new OffsetCurveBuilder( geom.getFactory().getPrecisionModel(), bufParam ); Coordinate[] pts = ocb.getLineCurve(geom.getCoordinates(), distance); Geometry curve = geom.getFactory().createLineString(pts); return curve; }
OffsetCurveBuilder curveBuilder = new OffsetCurveBuilder(precisionModel, bufParams);
public static Geometry bufferOffsetCurve(Geometry g, double distance) { OffsetCurveBuilder ocb = new OffsetCurveBuilder( g.getFactory().getPrecisionModel(), new BufferParameters()); Coordinate[] pts = g.getCoordinates(); Coordinate[] curvePts = null; if (g instanceof Polygonal) { curvePts = ocb.getRingCurve(pts, 1, distance); } else { curvePts = ocb.getLineCurve(pts, distance); } Geometry curve = g.getFactory().createLineString(curvePts); return curve; }