/** * Accepts the <code>GeometryVisitor</code>, and * will pass it to it's constituent <code>Geometries</code>. * * @param visitor */ @Override public void accept(GeometryVisitor<P> visitor) { visitor.visit(this); for (G part : this) { part.accept(visitor); } }
protected <P extends Position> void writeGeometry(Geometry<P> geom, ByteBuffer output) { geom.accept(newWkbVisitor(output, geom)); }
/** * @inheritDoc */ @Override public <P extends C2D & Measured> double measureAt(final Geometry<P> geometry, final P pos, double tolerance) { if (geometry == null || pos == null) throw new IllegalArgumentException("Parameters must not be NULL"); if (geometry.isEmpty()) return Double.NaN; InterpolatingVisitor<P> visitor = new InterpolatingVisitor<P>(pos, tolerance); geometry.accept(visitor); return visitor.m(); }
@Override public <P extends C2D & Measured> Geometry<P> locateBetween(final Geometry<P> geometry, final double startMeasure, final double endMeasure) { if (geometry == null) throw new IllegalArgumentException("Null geometries not allowed."); if (geometry.isEmpty()) return new Point<P>(geometry.getCoordinateReferenceSystem()); if (C2D.class.isAssignableFrom(geometry.getPositionClass()) && Measured.class.isAssignableFrom(geometry.getPositionClass())) { MeasureInterpolatingVisitor visitor = new MeasureInterpolatingVisitor(geometry, startMeasure, endMeasure); geometry.accept((GeometryVisitor<P>) visitor); return (Geometry<P>) visitor.result(); } throw new IllegalArgumentException("Requires projected coordinates"); }