/** * Creates a "compatible" pair of JTS geometries from an {@link AbstractDefaultGeometry} and a second * {@link Geometry} instance. * * @param geom1 * @param geom2 * @return */ public static JTSGeometryPair createCompatiblePair( AbstractDefaultGeometry geom1, org.deegree.geometry.Geometry geom2 ) { return new JTSGeometryPair( geom1.getJTSGeometry(), AbstractDefaultGeometry.getAsDefaultGeometry( geom2 ).getJTSGeometry() ); }
/** * Returns an equivalent (or best-fit) JTS geometry object. * * @return an equivalent (or best-fit) JTS geometry */ public com.vividsolutions.jts.geom.Geometry getJTSGeometry() { if ( jtsGeometry == null ) { jtsGeometry = buildJTSGeometry(); } return jtsGeometry; }
@Override public Envelope getEnvelope() { return new DefaultEnvelope( null, crs, pm, this, this ); }
@Override public Envelope getEnvelope() { if ( env == null ) { com.vividsolutions.jts.geom.Envelope jtsEnvelope = getJTSGeometry().getEnvelopeInternal(); Point min = new DefaultPoint( null, crs, pm, new double[] { jtsEnvelope.getMinX(), jtsEnvelope.getMinY() } ); Point max = new DefaultPoint( null, crs, pm, new double[] { jtsEnvelope.getMaxX(), jtsEnvelope.getMaxY() } ); env = new DefaultEnvelope( null, crs, pm, min, max ); } return env; }
/** * Creates a deep copy of the given {@link Geometry} object. * * @param geom * @return */ public static Geometry copyDeep( Geometry geom ) { // TODO implement this without JTS com.vividsolutions.jts.geom.Geometry jtsGeom = ( (AbstractDefaultGeometry) geom ).getJTSGeometry(); return ( (AbstractDefaultGeometry) geom ).createFromJTS( jtsGeom, geom.getCoordinateSystem() ); }
@Override public Geometry getUnion( Geometry geometry ) { JTSGeometryPair jtsGeoms = JTSGeometryPair.createCompatiblePair( this, geometry ); com.vividsolutions.jts.geom.Geometry jtsGeom = jtsGeoms.first.union( jtsGeoms.second ); return createFromJTS( jtsGeom, crs ); }
@Override public boolean isWithin( Geometry geometry ) { JTSGeometryPair jtsGeoms = JTSGeometryPair.createCompatiblePair( this, geometry ); return jtsGeoms.first.within( jtsGeoms.second ); }
@Override public boolean isBeyond( Geometry geometry, Measure distance ) { return !isWithinDistance( geometry, distance ); }
public static Geometry read( byte[] wkb, ICRS crs ) throws ParseException { // com.vividsolutions.jts.io.WKBReader() is not thread safe return defaultGeom.createFromJTS( new com.vividsolutions.jts.io.WKBReader().read( wkb ), crs ); }
@Override public Geometry getConvexHull() { com.vividsolutions.jts.geom.Geometry jtsGeom = getJTSGeometry().convexHull(); return createFromJTS( jtsGeom, crs ); }
@Override public Geometry getDifference( Geometry geometry ) { JTSGeometryPair jtsGeoms = JTSGeometryPair.createCompatiblePair( this, geometry ); com.vividsolutions.jts.geom.Geometry jtsGeom = jtsGeoms.first.difference( jtsGeoms.second ); return createFromJTS( jtsGeom, crs ); }
@Override public boolean overlaps( Geometry geometry ) { JTSGeometryPair jtsGeoms = JTSGeometryPair.createCompatiblePair( this, geometry ); return jtsGeoms.first.overlaps( jtsGeoms.second ); }
@Override public Geometry getIntersection( Geometry geometry ) { JTSGeometryPair jtsGeoms = JTSGeometryPair.createCompatiblePair( this, geometry ); ICRS crs = this.crs; if ( crs == null ) { crs = geometry.getCoordinateSystem(); } com.vividsolutions.jts.geom.Geometry jtsGeom = jtsGeoms.first.intersection( jtsGeoms.second ); return createFromJTS( jtsGeom, crs ); }
@Override public boolean contains( Geometry geometry ) { JTSGeometryPair jtsGeoms = JTSGeometryPair.createCompatiblePair( this, geometry ); return jtsGeoms.first.contains( jtsGeoms.second ); }
@Override public boolean equals( Geometry geometry ) { JTSGeometryPair jtsGeoms = JTSGeometryPair.createCompatiblePair( this, geometry ); return jtsGeoms.first.equals( jtsGeoms.second ); }
@Override public boolean touches( Geometry geometry ) { JTSGeometryPair jtsGeoms = JTSGeometryPair.createCompatiblePair( this, geometry ); return jtsGeoms.first.touches( jtsGeoms.second ); }
@Override public boolean crosses( Geometry geometry ) { JTSGeometryPair jtsGeoms = JTSGeometryPair.createCompatiblePair( this, geometry ); return jtsGeoms.first.crosses( jtsGeoms.second ); }
@Override public boolean intersects( Geometry geometry ) { JTSGeometryPair jtsGeoms = JTSGeometryPair.createCompatiblePair( this, geometry ); return jtsGeoms.first.intersects( jtsGeoms.second ); }
@Override public boolean isDisjoint( Geometry geometry ) { JTSGeometryPair jtsGeoms = JTSGeometryPair.createCompatiblePair( this, geometry ); return jtsGeoms.first.disjoint( jtsGeoms.second ); }