public int dimension() { return getEsriGeometry().getDimension(); }
public int dimension() { return getEsriGeometry().getDimension(); }
static Geometry execute(Geometry inputGeometry, double distance, OperatorOffset.JoinType joins, double miterLimit, double tolerance, ProgressTracker progressTracker) { if (inputGeometry == null) throw new IllegalArgumentException(); if (inputGeometry.getDimension() < 1)// can offset Polygons and // Polylines only throw new IllegalArgumentException(); if (distance == 0 || inputGeometry.isEmpty()) return inputGeometry; ConstructOffset offset = new ConstructOffset(progressTracker); offset.m_inputGeometry = inputGeometry; offset.m_distance = distance; offset.m_tolerance = tolerance; offset.m_joins = joins; offset.m_miterLimit = miterLimit; return offset._ConstructOffset(); }
static Geometry execute(Geometry inputGeometry, double distance, OperatorOffset.JoinType joins, double miterLimit, double tolerance, ProgressTracker progressTracker) { if (inputGeometry == null) throw new IllegalArgumentException(); if (inputGeometry.getDimension() < 1)// can offset Polygons and // Polylines only throw new IllegalArgumentException(); if (distance == 0 || inputGeometry.isEmpty()) return inputGeometry; ConstructOffset offset = new ConstructOffset(progressTracker); offset.m_inputGeometry = inputGeometry; offset.m_distance = distance; offset.m_tolerance = tolerance; offset.m_joins = joins; offset.m_miterLimit = miterLimit; return offset._ConstructOffset(); }
static Point processPointIntersectOrDiff_(Point point, Geometry intersector, double tolerance, boolean bClipIn) { if (point.isEmpty()) return ((Point) point.createInstance()); if (intersector.isEmpty()) { return bClipIn ? ((Point) point.createInstance()) : null; } Point2D[] input_points = new Point2D[1]; PolygonUtils.PiPResult[] test_results = new PolygonUtils.PiPResult[1]; boolean bArea = intersector.getDimension() == 2; if (intersector.getDimension() != 1 && intersector.getDimension() != 2) throw GeometryException.GeometryInternalError(); input_points[0] = point.getXY(); if (bArea) PolygonUtils.testPointsInArea2D(intersector, input_points, 1, tolerance, test_results); else PolygonUtils.testPointsOnLine2D(intersector, input_points, 1, tolerance, test_results); boolean bTest = test_results[0] == PolygonUtils.PiPResult.PiPOutside; if (!bClipIn) bTest = !bTest; if (!bTest) return point; else return ((Point) point.createInstance()); }
static Point processPointIntersectOrDiff_(Point point, Geometry intersector, double tolerance, boolean bClipIn) { if (point.isEmpty()) return ((Point) point.createInstance()); if (intersector.isEmpty()) { return bClipIn ? ((Point) point.createInstance()) : null; } Point2D[] input_points = new Point2D[1]; PolygonUtils.PiPResult[] test_results = new PolygonUtils.PiPResult[1]; boolean bArea = intersector.getDimension() == 2; if (intersector.getDimension() != 1 && intersector.getDimension() != 2) throw GeometryException.GeometryInternalError(); input_points[0] = point.getXY(); if (bArea) PolygonUtils.testPointsInArea2D(intersector, input_points, 1, tolerance, test_results); else PolygonUtils.testPointsOnLine2D(intersector, input_points, 1, tolerance, test_results); boolean bTest = test_results[0] == PolygonUtils.PiPResult.PiPOutside; if (!bClipIn) bTest = !bTest; if (!bTest) return point; else return ((Point) point.createInstance()); }
int npoints = multi_point.getPointCount(); boolean bFirstOut = true; boolean bArea = (intersector.getDimension() == 2); if (intersector.getDimension() != 1 && intersector.getDimension() != 2) throw GeometryException.GeometryInternalError();
private boolean testToleranceDistance_(int xyindex1, int xyindex2) { double x1 = m_xy.read(2 * xyindex1); double y1 = m_xy.read(2 * xyindex1 + 1); double x2 = m_xy.read(2 * xyindex2); double y2 = m_xy.read(2 * xyindex2 + 1); boolean b = !Clusterer.isClusterCandidate_(x1, y1, x2, y2, m_toleranceIsSimple * m_toleranceIsSimple); if (!b) { if (m_geometry.getDimension() == 0) return false; return (x1 == x2 && y1 == y2); // points either coincide or // further,than the tolerance } return b; }
private boolean testToleranceDistance_(int xyindex1, int xyindex2) { double x1 = m_xy.read(2 * xyindex1); double y1 = m_xy.read(2 * xyindex1 + 1); double x2 = m_xy.read(2 * xyindex2); double y2 = m_xy.read(2 * xyindex2 + 1); boolean b = !Clusterer.isClusterCandidate_(x1, y1, x2, y2, m_toleranceIsSimple * m_toleranceIsSimple); if (!b) { if (m_geometry.getDimension() == 0) return false; return (x1 == x2 && y1 == y2); // points either coincide or // further,than the tolerance } return b; }
@Override public OGCGeometry difference(OGCGeometry another) { if (isEmpty() || another.isEmpty()) { return this; } List<Geometry> geometries = toList(prepare_for_ops_(toGeometryCollection(this))); List<Geometry> otherGeometries = toList(prepare_for_ops_(toGeometryCollection(another))); List<OGCGeometry> result = new ArrayList<OGCGeometry>(); for (Geometry geometry : geometries) { for (Geometry otherGeometry : otherGeometries) { if (geometry.getDimension() > otherGeometry.getDimension()) { continue; //subtracting lower dimension has no effect. } geometry = OperatorDifference.local().execute(geometry, otherGeometry, esriSR, null); if (geometry.isEmpty()) { break; } } if (!geometry.isEmpty()) { result.add(OGCGeometry.createFromEsriGeometry(geometry, esriSR)); } } if (result.size() == 1) { return result.get(0).reduceFromMulti(); } return new OGCConcreteGeometryCollection(result, esriSR).flattenAndRemoveOverlaps(); }
@Override public OGCGeometry difference(OGCGeometry another) { if (isEmpty() || another.isEmpty()) { return this; } List<Geometry> geometries = toList(prepare_for_ops_(toGeometryCollection(this))); List<Geometry> otherGeometries = toList(prepare_for_ops_(toGeometryCollection(another))); List<OGCGeometry> result = new ArrayList<OGCGeometry>(); for (Geometry geometry : geometries) { for (Geometry otherGeometry : otherGeometries) { if (geometry.getDimension() > otherGeometry.getDimension()) { continue; //subtracting lower dimension has no effect. } geometry = OperatorDifference.local().execute(geometry, otherGeometry, esriSR, null); if (geometry.isEmpty()) { break; } } if (!geometry.isEmpty()) { result.add(OGCGeometry.createFromEsriGeometry(geometry, esriSR)); } } if (result.size() == 1) { return result.get(0).reduceFromMulti(); } return new OGCConcreteGeometryCollection(result, esriSR).flattenAndRemoveOverlaps(); }
private Geometry densifyByLength(Geometry geom) { if (geom.isEmpty() || geom.getDimension() < 1) return geom; int geometryType = geom.getType().value(); // TODO implement IsMultiPath and remove Polygon and Polyline call to // match Native // if (Geometry.IsMultiPath(geometryType)) if (geometryType == Geometry.GeometryType.Polygon) return densifyMultiPath((MultiPath) geom); else if (Geometry.GeometryType.Polyline == geometryType) return densifyMultiPath((MultiPath) geom); else if (Geometry.isSegment(geometryType)) return densifySegment((Segment) geom); else if (geometryType == Geometry.GeometryType.Envelope) return densifyEnvelope((Envelope) geom); else // TODO fix geometry exception to match native implementation throw GeometryException.GeometryInternalError();// GEOMTHROW(internal_error); // unreachable in java // return null; }
private Geometry densifyByLength(Geometry geom) { if (geom.isEmpty() || geom.getDimension() < 1) return geom; int geometryType = geom.getType().value(); // TODO implement IsMultiPath and remove Polygon and Polyline call to // match Native // if (Geometry.IsMultiPath(geometryType)) if (geometryType == Geometry.GeometryType.Polygon) return densifyMultiPath((MultiPath) geom); else if (Geometry.GeometryType.Polyline == geometryType) return densifyMultiPath((MultiPath) geom); else if (Geometry.isSegment(geometryType)) return densifySegment((Segment) geom); else if (geometryType == Geometry.GeometryType.Envelope) return densifyEnvelope((Envelope) geom); else // TODO fix geometry exception to match native implementation throw GeometryException.GeometryInternalError();// GEOMTHROW(internal_error); // unreachable in java // return null; }
public static Geometry symmetricDifference(Geometry geometry_a, Geometry geometry_b, SpatialReference sr, ProgressTracker progress_tracker) { if (geometry_a.getDimension() > geometry_b.getDimension()) return normalizeResult_(normalizeInputGeometry_(geometry_a), geometry_a, geometry_b, '^'); if (geometry_a.getDimension() < geometry_b.getDimension()) return normalizeResult_(normalizeInputGeometry_(geometry_b), geometry_a, geometry_b, '^');
static Geometry symmetricDifference(Geometry geometry_a, Geometry geometry_b, SpatialReference spatial_reference, ProgressTracker progress_tracker) { int dim_a = geometry_a.getDimension(); int dim_b = geometry_b.getDimension();
static Geometry symmetricDifference(Geometry geometry_a, Geometry geometry_b, SpatialReference spatial_reference, ProgressTracker progress_tracker) { int dim_a = geometry_a.getDimension(); int dim_b = geometry_b.getDimension();
public static Geometry difference(Geometry geometry_a, Geometry geometry_b, SpatialReference sr, ProgressTracker progress_tracker) { if (geometry_a.isEmpty() || geometry_b.isEmpty() || geometry_a.getDimension() > geometry_b.getDimension()) return normalizeResult_(normalizeInputGeometry_(geometry_a), geometry_a, geometry_b, '-');
public static Geometry difference(Geometry geometry_a, Geometry geometry_b, SpatialReference sr, ProgressTracker progress_tracker) { if (geometry_a.isEmpty() || geometry_b.isEmpty() || geometry_a.getDimension() > geometry_b.getDimension()) return normalizeResult_(normalizeInputGeometry_(geometry_a), geometry_a, geometry_b, '-');
if (dst_geom != null) { Geometry[] res_vec = new Geometry[3]; res_vec[dst_geom.getDimension()] = dst_geom; return prepareVector_(input_geom.getDescription(), m_dimensionMask, res_vec);
if (dst_geom != null) { Geometry[] res_vec = new Geometry[3]; res_vec[dst_geom.getDimension()] = dst_geom; return prepareVector_(input_geom.getDescription(), m_dimensionMask, res_vec);