/** * Returns the conservative bbox of the Geometry in X, Y plane. This is a * faster method than QueryEnvelope2D. However, the bbox could be larger * than the tight box. * @param env * The envelope to return the result in. */ public void queryLooseEnvelope2D(Envelope2D env) { queryEnvelope2D(env); }
/** * Returns the conservative bbox of the Geometry in X, Y plane. This is a * faster method than QueryEnvelope2D. However, the bbox could be larger * than the tight box. * @param env * The envelope to return the result in. */ public void queryLooseEnvelope2D(Envelope2D env) { queryEnvelope2D(env); }
double calculate(/* const */Geometry geometryA, /* const */ Geometry geometryB) { if (geometryA.isEmpty() || geometryB.isEmpty()) return NumberUtils.TheNaN; geometryA.queryEnvelope2D(m_env2DgeometryA); geometryB.queryEnvelope2D(m_env2DgeometryB); return executeBruteForce_(geometryA, geometryB); } }
double calculate(/* const */Geometry geometryA, /* const */ Geometry geometryB) { if (geometryA.isEmpty() || geometryB.isEmpty()) return NumberUtils.TheNaN; geometryA.queryEnvelope2D(m_env2DgeometryA); geometryB.queryEnvelope2D(m_env2DgeometryB); return executeBruteForce_(geometryA, geometryB); } }
static double calculateToleranceFromGeometry(SpatialReference sr, Geometry geometry, boolean bConservative) { Envelope2D env2D = new Envelope2D(); geometry.queryEnvelope2D(env2D); return calculateToleranceFromGeometry(sr, env2D, bConservative); }
static double calculateToleranceFromGeometry(SpatialReference sr, Geometry geometry, boolean bConservative) { Envelope2D env2D = new Envelope2D(); geometry.queryEnvelope2D(env2D); return calculateToleranceFromGeometry(sr, env2D, bConservative); }
private boolean isDegenerateGeometry_(Geometry geom) { Envelope2D env = new Envelope2D(); geom.queryEnvelope2D(env); if (Math.max(env.getWidth(), env.getHeight()) < m_densify_dist * 0.5) return true; return false; }
private boolean isDegenerateGeometry_(Geometry geom) { Envelope2D env = new Envelope2D(); geom.queryEnvelope2D(env); if (Math.max(env.getWidth(), env.getHeight()) < m_densify_dist * 0.5) return true; return false; }
/** * If the given object is an ESRI geometry and its envelope is non-empty, returns * that envelope as an Apache SIS implementation. Otherwise returns {@code null}. * * @param geometry the geometry from which to get the envelope, or {@code null}. * @return the envelope of the given object, or {@code null} if the object is not * a recognized geometry or its envelope is empty. */ @Override final GeneralEnvelope tryGetEnvelope(final Object geometry) { if (geometry instanceof Geometry) { final Envelope2D bounds = new Envelope2D(); ((Geometry) geometry).queryEnvelope2D(bounds); if (!bounds.isEmpty()) { // Test if there is NaN values. final GeneralEnvelope env = new GeneralEnvelope(2); env.setRange(0, bounds.xmin, bounds.xmax); env.setRange(1, bounds.ymin, bounds.ymax); return env; } } return null; }
/** * If the given object is an ESRI geometry and its envelope is non-empty, returns * that envelope as an Apache SIS implementation. Otherwise returns {@code null}. * * @param geometry the geometry from which to get the envelope, or {@code null}. * @return the envelope of the given object, or {@code null} if the object is not * a recognized geometry or its envelope is empty. */ @Override final GeneralEnvelope tryGetEnvelope(final Object geometry) { if (geometry instanceof Geometry) { final Envelope2D bounds = new Envelope2D(); ((Geometry) geometry).queryEnvelope2D(bounds); if (!bounds.isEmpty()) { // Test if there is NaN values. final GeneralEnvelope env = new GeneralEnvelope(2); env.setRange(0, bounds.xmin, bounds.xmax); env.setRange(1, bounds.ymin, bounds.ymax); return env; } } return null; }
Geometry intersect(Geometry input_geom) { Geometry dst_geom = tryNativeImplementation_(input_geom); if (dst_geom != null) return dst_geom; Envelope2D commonExtent = InternalUtils.getMergedExtent( m_geomIntersector, input_geom); // return Topological_operations::intersection(input_geom, // m_geomIntersector, m_spatial_reference, m_progress_tracker); // Preprocess geometries to be clipped to the extent of intersection to // get rid of extra segments. double t = InternalUtils.calculateToleranceFromGeometry(m_spatial_reference, commonExtent, true); Envelope2D env = new Envelope2D(); m_geomIntersector.queryEnvelope2D(env); Envelope2D env1 = new Envelope2D(); input_geom.queryEnvelope2D(env1); env.inflate(2.0 * t, 2.0 * t); env.intersect(env1); assert (!env.isEmpty()); env.inflate(100 * t, 100 * t); double tol = 0; Geometry clippedIntersector = Clipper.clip(m_geomIntersector, env, tol, 0.0); Geometry clippedInputGeom = Clipper.clip(input_geom, env, tol, 0.0); // perform the clip return TopologicalOperations.intersection(clippedInputGeom, clippedIntersector, m_spatial_reference, m_progress_tracker); }
Geometry intersect(Geometry input_geom) { Geometry dst_geom = tryNativeImplementation_(input_geom); if (dst_geom != null) return dst_geom; Envelope2D commonExtent = InternalUtils.getMergedExtent( m_geomIntersector, input_geom); // return Topological_operations::intersection(input_geom, // m_geomIntersector, m_spatial_reference, m_progress_tracker); // Preprocess geometries to be clipped to the extent of intersection to // get rid of extra segments. double t = InternalUtils.calculateToleranceFromGeometry(m_spatial_reference, commonExtent, true); Envelope2D env = new Envelope2D(); m_geomIntersector.queryEnvelope2D(env); Envelope2D env1 = new Envelope2D(); input_geom.queryEnvelope2D(env1); env.inflate(2.0 * t, 2.0 * t); env.intersect(env1); assert (!env.isEmpty()); env.inflate(100 * t, 100 * t); double tol = 0; Geometry clippedIntersector = Clipper.clip(m_geomIntersector, env, tol, 0.0); Geometry clippedInputGeom = Clipper.clip(input_geom, env, tol, 0.0); // perform the clip return TopologicalOperations.intersection(clippedInputGeom, clippedIntersector, m_spatial_reference, m_progress_tracker); }
m_geomIntersector.queryEnvelope2D(env); env.inflate(2 * t, 2 * t); Envelope2D env1 = new Envelope2D(); input_geom.queryEnvelope2D(env1); env.intersect(env1); assert (!env.isEmpty());
m_geomIntersector.queryEnvelope2D(env); env.inflate(2 * t, 2 * t); Envelope2D env1 = new Envelope2D(); input_geom.queryEnvelope2D(env1); env.intersect(env1); assert (!env.isEmpty());
private Geometry bufferPolyline_() { if (isDegenerateGeometry_(m_geometry)) { Point point = new Point(); ((MultiVertexGeometry) m_geometry).getPointByVal(0, point); Envelope2D env2D = new Envelope2D(); m_geometry.queryEnvelope2D(env2D); point.setXY(env2D.getCenter()); return bufferPoint_(point); } assert (m_distance > 0); Polyline poly = (Polyline)m_geometry; m_geometry = null; GeometryCursor glueing_cursor = new GlueingCursorForPolyline(poly);//glues paths together if they connect at one point poly = null; GeometryCursor generalized_paths = OperatorGeneralize.local().execute(glueing_cursor, m_densify_dist * 0.25, false, m_progress_tracker); GeometryCursor simple_paths = OperatorSimplifyOGC.local().execute(generalized_paths, null, true, m_progress_tracker);//make a planar graph. generalized_paths = null; GeometryCursor path_buffering_cursor = new GeometryCursorForPolyline(this, simple_paths, m_bfilter); simple_paths = null; GeometryCursor union_cursor = OperatorUnion.local().execute(path_buffering_cursor, m_spatialReference, m_progress_tracker);//(int)Operator_union::Options::enum_disable_edge_dissolver Geometry result = union_cursor.next(); return result; }
private Geometry bufferPolyline_() { if (isDegenerateGeometry_(m_geometry)) { Point point = new Point(); ((MultiVertexGeometry) m_geometry).getPointByVal(0, point); Envelope2D env2D = new Envelope2D(); m_geometry.queryEnvelope2D(env2D); point.setXY(env2D.getCenter()); return bufferPoint_(point); } assert (m_distance > 0); Polyline poly = (Polyline)m_geometry; m_geometry = null; GeometryCursor glueing_cursor = new GlueingCursorForPolyline(poly);//glues paths together if they connect at one point poly = null; GeometryCursor generalized_paths = OperatorGeneralize.local().execute(glueing_cursor, m_densify_dist * 0.25, false, m_progress_tracker); GeometryCursor simple_paths = OperatorSimplifyOGC.local().execute(generalized_paths, null, true, m_progress_tracker);//make a planar graph. generalized_paths = null; GeometryCursor path_buffering_cursor = new GeometryCursorForPolyline(this, simple_paths, m_bfilter); simple_paths = null; GeometryCursor union_cursor = OperatorUnion.local().execute(path_buffering_cursor, m_spatialReference, m_progress_tracker);//(int)Operator_union::Options::enum_disable_edge_dissolver Geometry result = union_cursor.next(); return result; }
((MultiVertexGeometry) m_geometry).getPointByVal(0, point); Envelope2D env2D = new Envelope2D(); m_geometry.queryEnvelope2D(env2D); point.setXY(env2D.getCenter()); return bufferPoint_(point);
((MultiVertexGeometry) m_geometry).getPointByVal(0, point); Envelope2D env2D = new Envelope2D(); m_geometry.queryEnvelope2D(env2D); point.setXY(env2D.getCenter()); return bufferPoint_(point);
Envelope envelope = (Envelope) (geometry); Envelope2D env = new Envelope2D(); geometry.queryEnvelope2D(env);
Envelope envelope = (Envelope) (geometry); Envelope2D env = new Envelope2D(); geometry.queryEnvelope2D(env);