final int numGeometries = collection.getNumGeometries(); for (int i = 0; i < numGeometries; i++) { decimate(collection.getGeometryN(i)); return; decimate(line, seq); } else if (geom instanceof Polygon) { Polygon line = (Polygon) geom; decimate(line.getExteriorRing()); final int numRings = line.getNumInteriorRing(); for (int i = 0; i < numRings; i++) { decimate(line.getInteriorRingN(i));
/** * Decimate a geometry (reducing the number of vertices) for incoming buffering * * @param geometry * @return */ public static Geometry decimate(Geometry geometry) { Coordinate[] coordinates = geometry.getCoordinates(); if (coordinates.length <= Utils.COORDS_DECIMATION_THRESHOLD) { return geometry; } Geometry g2 = LiteCoordinateSequence.cloneGeometry(geometry, 2); Decimator decimator = new Decimator( DEFAULT_LINESTRING_DECIMATION_SPAN, DEFAULT_LINESTRING_DECIMATION_SPAN); decimator.decimate(g2); g2.geometryChanged(); return g2; }
&& generalize && geometry != null) { new Decimator(mathTransform.inverse()).decimate(this.geometry); this.geometry.geometryChanged();
new Decimator(mathTransform.inverse()).decimate(this.geometry); if (geometry != null) transformGeometry(geometry);
/** http://jira.codehaus.org/browse/GEOT-2937 */ @Test public void testDecimatePseudoRing() { // a long rectangle made of 3 coordinates LineString g = gf.createLineString(csf.create(new double[] {0, 0, 0, 10, 0, 0})); assertTrue(g.isValid()); Decimator d = new Decimator(4, 4); d.decimate(g); g.geometryChanged(); assertTrue(g.isValid()); assertEquals(3, g.getCoordinateSequence().size()); }
final int numGeometries = collection.getNumGeometries(); for (int i = 0; i < numGeometries; i++) { decimate(collection.getGeometryN(i)); return; decimate(line, seq); } else if (geom instanceof Polygon) { Polygon line = (Polygon) geom; decimate(line.getExteriorRing()); final int numRings = line.getNumInteriorRing(); for (int i = 0; i < numRings; i++) { decimate(line.getInteriorRingN(i));
new Decimator(mathTransform.inverse()).decimate(this.geometry); this.geometry.geometryChanged();
@Test public void testNoDecimation() { // acute triangle LinearRing g = gf.createLinearRing(csf.create(new double[] {0, 0, 0, 10, 2, 10, 2, 0, 0, 0})); LinearRing original = (LinearRing) g.copy(); assertTrue(g.isValid()); Decimator d = new Decimator(-1, -1); d.decimate(g); g.geometryChanged(); assertTrue(g.isValid()); assertTrue(original.equalsExact(g)); }
final int numGeometries = collection.getNumGeometries(); for (int i = 0; i < numGeometries; i++) { decimate(collection.getGeometryN(i)); return; decimate(line, seq); } else if (geom instanceof Polygon) { Polygon line = (Polygon) geom; decimate(line.getExteriorRing()); final int numRings = line.getNumInteriorRing(); for (int i = 0; i < numRings; i++) { decimate(line.getInteriorRingN(i));
/** http://jira.codehaus.org/browse/GEOT-1923 */ @Test public void testDecimateRingEnvelope() { // acute triangle LinearRing g = gf.createLinearRing(csf.create(new double[] {0, 0, 0, 10, 2, 10, 2, 0, 0, 0})); assertTrue(g.isValid()); Decimator d = new Decimator(20, 20); d.decimate(g); g.geometryChanged(); assertTrue(g.isValid()); assertEquals(4, g.getCoordinateSequence().size()); }
/** http://jira.codehaus.org/browse/GEOT-1923 */ @Test public void testDecimateRing() { // a long rectangle made of 5 coordinates LinearRing g = gf.createLinearRing(csf.create(new double[] {0, 0, 0, 10, 2, 10, 2, 0, 0, 0})); assertTrue(g.isValid()); Decimator d = new Decimator(4, 4); d.decimate(g); g.geometryChanged(); assertTrue(g.isValid()); assertEquals(4, g.getCoordinateSequence().size()); }
d.decimate(line); line.geometryChanged(); clip = EnhancedPrecisionOp.intersection(line, bbox);
d.decimate(poly); poly.geometryChanged(); clip = EnhancedPrecisionOp.intersection(poly, bbox);