private static int getDimensionCount(Geometry geometry) { ZVisitor finder = new ZVisitor(); geometry.apply(finder); return finder.isFoundZ() ? 3 : 2; }
private void collectLines(Geometry geometry, final List<LineString> lines) { geometry.apply( new GeometryComponentFilter() { @Override public void filter(Geometry geom) { if (geom instanceof LineString && !geom.isEmpty()) { lines.add((LineString) geom); } } }); } };
private static void shiftGeomByX(Geometry geom, final int xShift) { if (xShift == 0) return; geom.apply(new CoordinateSequenceFilter() { @Override public void filter(CoordinateSequence seq, int i) { seq.setOrdinate(i, CoordinateSequence.X, seq.getX(i) + xShift ); } @Override public boolean isDone() { return false; } @Override public boolean isGeometryChanged() { return true; } }); }
public void apply(CoordinateFilter filter) { geometry.apply(filter); }
public void apply(CoordinateSequenceFilter filter) { geometry.apply(filter); }
public void apply(GeometryComponentFilter filter) { geometry.apply(filter); }
public void apply(GeometryFilter filter) { geometry.apply(filter); }
} else { final List<Polygon> accum = new ArrayList<Polygon>(); intersection.apply( new GeometryComponentFilter() { public void filter(Geometry geom) {
public LinearElevationInterpolator(Geometry original, CoordinateReferenceSystem crs) { originalLines = new ArrayList<LineString>(); original.apply( new GeometryComponentFilter() { @Override public void filter(Geometry geom) { if (geom instanceof LineString) { originalLines.add((LineString) geom); } } }); }
private List<LinearRing> getRings(Geometry bounds) { final ArrayList<LinearRing> rings = new ArrayList<LinearRing>(); bounds.apply( new GeometryComponentFilter() { @Override public void filter(Geometry geom) { if (geom instanceof LinearRing && !geom.isEmpty()) { rings.add((LinearRing) geom); } } }); return rings; }
@Override public void encodeGeometryValue(Geometry value, int dimension, int srid, StringBuffer sql) throws IOException { if (value == null) { sql.append("NULL"); return; } GeometryDimensionFinder finder = new GeometryDimensionFinder(); value.apply(finder); WKTWriter writer = new WKTWriter(finder.hasZ() ? 3 : 2); String wkt = writer.write(value); sql.append("geometry::STGeomFromText('").append(wkt).append("',").append(srid).append(")"); }
private static Polygon toPolygonInternal(Shape shape) { Geometry geomROI = null; if (shape != null) { geomROI = ShapeReader.read(shape, 0, new GeometryFactory()); geomROI.apply(Y_INVERSION); } return (Polygon) geomROI; } }
public static CoordinateSequence find(Geometry g) { CoordinateSequenceFinder finder = new CoordinateSequenceFinder(); g.apply(finder); return finder.getSeq(); }
public static List<CoordinateSequence> find(Geometry g) { CoordinateSequenceCollector finder = new CoordinateSequenceCollector(); g.apply(finder); return finder.getSequences(); }
/** * returns the coordinate dimension for a geometry * * @param Geometry g * @return if there is one z value != NaN, then 3 else 2 */ public static final int guessCoordinateDimension(Geometry g) { DimensionCoordFilter filter = new DimensionCoordFilter(); g.apply(filter); return filter.getDimension(); }
/** * Looks up the geometry dimension by trying a number of heuristics. Returns 2 if all attempts * at guessing the dimension failed. */ protected int getGeometryDimension(Geometry g, AttributeDescriptor descriptor) throws IOException { int dimension = getDescriptorDimension(descriptor); if (g == null || dimension > 0) { return dimension; } // check for dimension in the geometry coordinate sequences CoordinateSequenceDimensionExtractor dex = new CoordinateSequenceDimensionExtractor(); g.apply(dex); return dex.getDimension(); }
public Object evaluate(Object feature, Class context) { Geometry g = getExpression(0).evaluate(feature, Geometry.class); if (g == null) return null; MultiPointExtractor filter = new MultiPointExtractor(); g.apply(filter); return filter.getMultiPoint(); }
public static CoordinateSequence find(Geometry g) { CoordinateSequenceFinder finder = new CoordinateSequenceFinder(); g.apply(finder); return finder.getSeq(); }
public static boolean check(Geometry g, Class coordSeqClass, int dimension) { CoordinateSequenceSchemaChecker checkCS = new CoordinateSequenceSchemaChecker(coordSeqClass, dimension); g.apply(checkCS); return checkCS.isSame(); }
public Object evaluate(Object feature) { Geometry geom = getExpression(0).evaluate(feature, Geometry.class); Double offsetX = getExpression(1).evaluate(feature, Double.class); if (offsetX == null) offsetX = 0d; Double offsetY = getExpression(2).evaluate(feature, Double.class); if (offsetY == null) offsetY = 0d; if (geom != null) { Geometry offseted = geom.copy(); offseted.apply(new OffsetOrdinateFilter(offsetX, offsetY)); return offseted; } else { return null; } }