private static boolean multiPointContainsMultiPoint_( MultiPoint multipoint_a, MultiPoint multipoint_b, double tolerance, ProgressTracker progress_tracker) { Envelope2D env_a = new Envelope2D(), env_b = new Envelope2D(); multipoint_a.queryEnvelope2D(env_a); multipoint_b.queryEnvelope2D(env_b); if (!envelopeInfContainsEnvelope_(env_a, env_b, tolerance)) return false; return multiPointCoverageMultiPoint_(multipoint_b, multipoint_a, tolerance, true, false, false, progress_tracker); }
private static boolean multiPointContainsMultiPoint_( MultiPoint multipoint_a, MultiPoint multipoint_b, double tolerance, ProgressTracker progress_tracker) { Envelope2D env_a = new Envelope2D(), env_b = new Envelope2D(); multipoint_a.queryEnvelope2D(env_a); multipoint_b.queryEnvelope2D(env_b); if (!envelopeInfContainsEnvelope_(env_a, env_b, tolerance)) return false; return multiPointCoverageMultiPoint_(multipoint_b, multipoint_a, tolerance, true, false, false, progress_tracker); }
private static int quickTest2DPolylineMultiPoint(Polyline geomA, MultiPoint geomB, double tolerance) { Envelope2D geomBEnv = new Envelope2D(); geomB.queryEnvelope2D(geomBEnv); int res = quickTest2DMVEnvelopeRasterOnly(geomA, geomBEnv, tolerance); if (res > 0) return res; // TODO: implement me return 0; }
private static int quickTest2DPolylineMultiPoint(Polyline geomA, MultiPoint geomB, double tolerance) { Envelope2D geomBEnv = new Envelope2D(); geomB.queryEnvelope2D(geomBEnv); int res = quickTest2DMVEnvelopeRasterOnly(geomA, geomBEnv, tolerance); if (res > 0) return res; // TODO: implement me return 0; }
private static boolean multiPointEqualsMultiPoint_(MultiPoint multipoint_a, MultiPoint multipoint_b, double tolerance, ProgressTracker progress_tracker) { Envelope2D env_a = new Envelope2D(), env_b = new Envelope2D(); multipoint_a.queryEnvelope2D(env_a); multipoint_b.queryEnvelope2D(env_b); if (!envelopeEqualsEnvelope_(env_a, env_b, tolerance, progress_tracker)) return false; if (multiPointExactlyEqualsMultiPoint_(multipoint_a, multipoint_b, tolerance, progress_tracker)) return true; return multiPointCoverageMultiPoint_(multipoint_a, multipoint_b, tolerance, false, true, false, progress_tracker); }
private static boolean multiPointEqualsMultiPoint_(MultiPoint multipoint_a, MultiPoint multipoint_b, double tolerance, ProgressTracker progress_tracker) { Envelope2D env_a = new Envelope2D(), env_b = new Envelope2D(); multipoint_a.queryEnvelope2D(env_a); multipoint_b.queryEnvelope2D(env_b); if (!envelopeEqualsEnvelope_(env_a, env_b, tolerance, progress_tracker)) return false; if (multiPointExactlyEqualsMultiPoint_(multipoint_a, multipoint_b, tolerance, progress_tracker)) return true; return multiPointCoverageMultiPoint_(multipoint_a, multipoint_b, tolerance, false, true, false, progress_tracker); }
static boolean multiPointEqualsPoint_(MultiPoint multipoint_a, Point point_b, double tolerance, ProgressTracker progress_tracker) { Envelope2D env_a = new Envelope2D(), env_b = new Envelope2D(); multipoint_a.queryEnvelope2D(env_a); point_b.queryEnvelope2D(env_b); return envelopeEqualsEnvelope_(env_a, env_b, tolerance, progress_tracker); }
static boolean multiPointEqualsPoint_(MultiPoint multipoint_a, Point point_b, double tolerance, ProgressTracker progress_tracker) { Envelope2D env_a = new Envelope2D(), env_b = new Envelope2D(); multipoint_a.queryEnvelope2D(env_a); point_b.queryEnvelope2D(env_b); return envelopeEqualsEnvelope_(env_a, env_b, tolerance, progress_tracker); }
private static boolean multiPointEqualsEnvelope_(MultiPoint multipoint_a, Envelope envelope_b, double tolerance, ProgressTracker progress_tracker) { Envelope2D env_a = new Envelope2D(), env_b = new Envelope2D(); multipoint_a.queryEnvelope2D(env_a); envelope_b.queryEnvelope2D(env_b); if (env_b.getHeight() > tolerance || env_b.getWidth() > tolerance) return false; // only true if all the points of the multi_point degenerate to a point // equal to the envelope return envelopeEqualsEnvelope_(env_a, env_b, tolerance, progress_tracker); }
private static boolean multiPointEqualsEnvelope_(MultiPoint multipoint_a, Envelope envelope_b, double tolerance, ProgressTracker progress_tracker) { Envelope2D env_a = new Envelope2D(), env_b = new Envelope2D(); multipoint_a.queryEnvelope2D(env_a); envelope_b.queryEnvelope2D(env_b); if (env_b.getHeight() > tolerance || env_b.getWidth() > tolerance) return false; // only true if all the points of the multi_point degenerate to a point // equal to the envelope return envelopeEqualsEnvelope_(env_a, env_b, tolerance, progress_tracker); }
private static boolean multiPointContainsEnvelope_(MultiPoint multipoint_a, Envelope envelope_b, double tolerance, ProgressTracker progress_tracker) { Envelope2D env_a = new Envelope2D(), env_b = new Envelope2D(); multipoint_a.queryEnvelope2D(env_a); envelope_b.queryEnvelope2D(env_b); if (!envelopeInfContainsEnvelope_(env_a, env_b, tolerance)) return false; if (env_b.getHeight() > tolerance || env_b.getWidth() > tolerance) return false; Point2D pt_b = envelope_b.getCenterXY(); return !multiPointDisjointPointImpl_(multipoint_a, pt_b, tolerance, progress_tracker); }
private static boolean multiPointContainsEnvelope_(MultiPoint multipoint_a, Envelope envelope_b, double tolerance, ProgressTracker progress_tracker) { Envelope2D env_a = new Envelope2D(), env_b = new Envelope2D(); multipoint_a.queryEnvelope2D(env_a); envelope_b.queryEnvelope2D(env_b); if (!envelopeInfContainsEnvelope_(env_a, env_b, tolerance)) return false; if (env_b.getHeight() > tolerance || env_b.getWidth() > tolerance) return false; Point2D pt_b = envelope_b.getCenterXY(); return !multiPointDisjointPointImpl_(multipoint_a, pt_b, tolerance, progress_tracker); }
private static boolean polylineContainsMultiPoint_(Polyline polyline_a, MultiPoint multipoint_b, double tolerance, ProgressTracker progress_tracker) { Envelope2D env_a = new Envelope2D(), env_b = new Envelope2D(); polyline_a.queryEnvelope2D(env_a); multipoint_b.queryEnvelope2D(env_b); if (!envelopeInfContainsEnvelope_(env_a, env_b, tolerance)) return false; // Quick rasterize test to see whether the the geometries are disjoint. if (tryRasterizedContainsOrDisjoint_(polyline_a, multipoint_b, tolerance, false) == Relation.disjoint) return false; if (!linearPathIntersectsMultiPoint_(polyline_a, multipoint_b, tolerance, true)) return false; MultiPoint boundary_a = (MultiPoint) (polyline_a.getBoundary()); return !multiPointIntersectsMultiPoint_(boundary_a, multipoint_b, tolerance, progress_tracker); }
private static boolean polylineContainsMultiPoint_(Polyline polyline_a, MultiPoint multipoint_b, double tolerance, ProgressTracker progress_tracker) { Envelope2D env_a = new Envelope2D(), env_b = new Envelope2D(); polyline_a.queryEnvelope2D(env_a); multipoint_b.queryEnvelope2D(env_b); if (!envelopeInfContainsEnvelope_(env_a, env_b, tolerance)) return false; // Quick rasterize test to see whether the the geometries are disjoint. if (tryRasterizedContainsOrDisjoint_(polyline_a, multipoint_b, tolerance, false) == Relation.disjoint) return false; if (!linearPathIntersectsMultiPoint_(polyline_a, multipoint_b, tolerance, true)) return false; MultiPoint boundary_a = (MultiPoint) (polyline_a.getBoundary()); return !multiPointIntersectsMultiPoint_(boundary_a, multipoint_b, tolerance, progress_tracker); }
static boolean multiPointRelateMultiPoint_(MultiPoint multipoint_a, MultiPoint multipoint_b, double tolerance, String scl, ProgressTracker progress_tracker) { RelationalOperationsMatrix relOps = new RelationalOperationsMatrix(); relOps.resetMatrix_(); relOps.setPredicates_(scl); relOps.setPointPointPredicates_(); Envelope2D env_a = new Envelope2D(), env_b = new Envelope2D(); multipoint_a.queryEnvelope2D(env_a); multipoint_b.queryEnvelope2D(env_b); boolean bRelationKnown = false; boolean b_disjoint = RelationalOperations.envelopeDisjointEnvelope_( env_a, env_b, tolerance, progress_tracker); if (b_disjoint) { relOps.pointPointDisjointPredicates_(); bRelationKnown = true; } if (!bRelationKnown) { EditShape edit_shape = new EditShape(); int geom_a = edit_shape.addGeometry(multipoint_a); int geom_b = edit_shape.addGeometry(multipoint_b); relOps.setEditShapeCrackAndCluster_(edit_shape, tolerance, progress_tracker); relOps.computeMatrixTopoGraphClusters_(geom_a, geom_b); relOps.m_topo_graph.removeShape(); } boolean bRelation = relationCompare_(relOps.m_matrix, relOps.m_scl); return bRelation; }
static boolean multiPointRelateMultiPoint_(MultiPoint multipoint_a, MultiPoint multipoint_b, double tolerance, String scl, ProgressTracker progress_tracker) { RelationalOperationsMatrix relOps = new RelationalOperationsMatrix(); relOps.resetMatrix_(); relOps.setPredicates_(scl); relOps.setPointPointPredicates_(); Envelope2D env_a = new Envelope2D(), env_b = new Envelope2D(); multipoint_a.queryEnvelope2D(env_a); multipoint_b.queryEnvelope2D(env_b); boolean bRelationKnown = false; boolean b_disjoint = RelationalOperations.envelopeDisjointEnvelope_( env_a, env_b, tolerance, progress_tracker); if (b_disjoint) { relOps.pointPointDisjointPredicates_(); bRelationKnown = true; } if (!bRelationKnown) { EditShape edit_shape = new EditShape(); int geom_a = edit_shape.addGeometry(multipoint_a); int geom_b = edit_shape.addGeometry(multipoint_b); relOps.setEditShapeCrackAndCluster_(edit_shape, tolerance, progress_tracker); relOps.computeMatrixTopoGraphClusters_(geom_a, geom_b); relOps.m_topo_graph.removeShape(); } boolean bRelation = relationCompare_(relOps.m_matrix, relOps.m_scl); return bRelation; }
private static boolean multiPointDisjointEnvelope_(MultiPoint multipoint_a, Envelope envelope_b, double tolerance, ProgressTracker progress_tracker) { Envelope2D env_a = new Envelope2D(), env_b = new Envelope2D(); multipoint_a.queryEnvelope2D(env_a); envelope_b.queryEnvelope2D(env_b); if (envelopeInfContainsEnvelope_(env_b, env_a, tolerance)) return false; Envelope2D env_b_inflated = new Envelope2D(); env_b_inflated.setCoords(env_b); env_b_inflated.inflate(tolerance, tolerance); Point2D pt_a = new Point2D(); for (int i = 0; i < multipoint_a.getPointCount(); i++) { multipoint_a.getXY(i, pt_a); if (!env_b_inflated.contains(pt_a)) continue; return false; } return true; }
private static boolean multiPointDisjointEnvelope_(MultiPoint multipoint_a, Envelope envelope_b, double tolerance, ProgressTracker progress_tracker) { Envelope2D env_a = new Envelope2D(), env_b = new Envelope2D(); multipoint_a.queryEnvelope2D(env_a); envelope_b.queryEnvelope2D(env_b); if (envelopeInfContainsEnvelope_(env_b, env_a, tolerance)) return false; Envelope2D env_b_inflated = new Envelope2D(); env_b_inflated.setCoords(env_b); env_b_inflated.inflate(tolerance, tolerance); Point2D pt_a = new Point2D(); for (int i = 0; i < multipoint_a.getPointCount(); i++) { multipoint_a.getXY(i, pt_a); if (!env_b_inflated.contains(pt_a)) continue; return false; } return true; }
Envelope2D env_b = new Envelope2D(); Envelope2D envInter = new Envelope2D(); multipoint_a.queryEnvelope2D(env_a); multipoint_b.queryEnvelope2D(env_b); env_a.inflate(tolerance, tolerance); env_b.inflate(tolerance, tolerance);
multipoint_b.queryEnvelope2D(env_b);