polygon.addEnvelope((Envelope) geometry, false); return new OGCPolygon(polygon, null);
private Geometry bufferEnvelope_() { Polygon polygon = new Polygon(m_geometry.getDescription()); if (m_distance <= 0) { if (m_distance == 0) polygon.addEnvelope((Envelope) (m_geometry), false); else { Envelope env = new Envelope(); m_geometry.queryEnvelope(env); env.inflate(m_distance, m_distance); polygon.addEnvelope(env, false); } return polygon;// nothing is easier than negative buffer on the // envelope. } polygon.addEnvelope((Envelope) (m_geometry), false); m_geometry = polygon; return bufferConvexPath_(polygon, 0); }
private Geometry bufferEnvelope_() { Polygon polygon = new Polygon(m_geometry.getDescription()); if (m_distance <= 0) { if (m_distance == 0) polygon.addEnvelope((Envelope) (m_geometry), false); else { Envelope env = new Envelope(); m_geometry.queryEnvelope(env); env.inflate(m_distance, m_distance); polygon.addEnvelope(env, false); } return polygon;// nothing is easier than negative buffer on the // envelope. } polygon.addEnvelope((Envelope) (m_geometry), false); m_geometry = polygon; return bufferConvexPath_(polygon, 0); }
Geometry _OffsetEnvelope() { Envelope envelope = (Envelope) m_inputGeometry; if ((m_distance > 0) && (m_joins != OperatorOffset.JoinType.Miter)) { Polygon poly = new Polygon(); poly.addEnvelope(envelope, false); m_inputGeometry = poly; return _ConstructOffset(); } Envelope resEnv = new Envelope(envelope.m_envelope); resEnv.inflate(m_distance, m_distance); return resEnv; }
Geometry _OffsetEnvelope() { Envelope envelope = (Envelope) m_inputGeometry; if ((m_distance > 0) && (m_joins != OperatorOffset.JoinType.Miter)) { Polygon poly = new Polygon(); poly.addEnvelope(envelope, false); m_inputGeometry = poly; return _ConstructOffset(); } Envelope resEnv = new Envelope(envelope.m_envelope); resEnv.inflate(m_distance, m_distance); return resEnv; }
public OGCGeometry envelope() { com.esri.core.geometry.Envelope env = new com.esri.core.geometry.Envelope(); getEsriGeometry().queryEnvelope(env); com.esri.core.geometry.Polygon polygon = new com.esri.core.geometry.Polygon(); polygon.addEnvelope(env, false); return new OGCPolygon(polygon, esriSR); }
public OGCGeometry envelope() { com.esri.core.geometry.Envelope env = new com.esri.core.geometry.Envelope(); getEsriGeometry().queryEnvelope(env); com.esri.core.geometry.Polygon polygon = new com.esri.core.geometry.Polygon(); polygon.addEnvelope(env, false); return new OGCPolygon(polygon, esriSR); }
private Geometry densifyEnvelope(Envelope geom) { Polygon polygon = new Polygon(geom.getDescription()); polygon.addEnvelope(geom, false); Envelope2D env2D = new Envelope2D(); geom.queryEnvelope2D(env2D); double w = env2D.getWidth(); double h = env2D.getHeight(); if (w <= m_maxLength && h <= m_maxLength) return (Geometry) polygon; return densifyMultiPath((MultiPath) polygon); }
private Geometry densifyEnvelope(Envelope geom) { Polygon polygon = new Polygon(geom.getDescription()); polygon.addEnvelope(geom, false); Envelope2D env2D = new Envelope2D(); geom.queryEnvelope2D(env2D); double w = env2D.getWidth(); double h = env2D.getHeight(); if (w <= m_maxLength && h <= m_maxLength) return (Geometry) polygon; return densifyMultiPath((MultiPath) polygon); }
private static boolean polygonEqualsEnvelope_(Polygon polygon_a, Envelope envelope_b, double tolerance, ProgressTracker progress_tracker) { Envelope2D env_a = new Envelope2D(), env_b = new Envelope2D(); polygon_a.queryEnvelope2D(env_a); envelope_b.queryEnvelope2D(env_b); // Quick envelope rejection test for false equality. // This check will correctly handle degenerate envelope cases (i.e. // degenerate to point or line) if (!envelopeEqualsEnvelope_(env_a, env_b, tolerance, progress_tracker)) return false; Polygon polygon_b = new Polygon(); polygon_b.addEnvelope(envelope_b, false); return linearPathEqualsLinearPath_(polygon_a, polygon_b, tolerance, true); }
private static boolean polygonEqualsEnvelope_(Polygon polygon_a, Envelope envelope_b, double tolerance, ProgressTracker progress_tracker) { Envelope2D env_a = new Envelope2D(), env_b = new Envelope2D(); polygon_a.queryEnvelope2D(env_a); envelope_b.queryEnvelope2D(env_b); // Quick envelope rejection test for false equality. // This check will correctly handle degenerate envelope cases (i.e. // degenerate to point or line) if (!envelopeEqualsEnvelope_(env_a, env_b, tolerance, progress_tracker)) return false; Polygon polygon_b = new Polygon(); polygon_b.addEnvelope(envelope_b, false); return linearPathEqualsLinearPath_(polygon_a, polygon_b, tolerance, true); }
@Override public OGCGeometry envelope() { GeometryCursor gc = getEsriGeometryCursor(); Envelope env = new Envelope(); for (Geometry g = gc.next(); g != null; g = gc.next()) { Envelope e = new Envelope(); g.queryEnvelope(e); env.merge(e); } Polygon polygon = new Polygon(); polygon.addEnvelope(env, false); return new OGCPolygon(polygon, esriSR); }
@Override public OGCGeometry envelope() { GeometryCursor gc = getEsriGeometryCursor(); Envelope env = new Envelope(); for (Geometry g = gc.next(); g != null; g = gc.next()) { Envelope e = new Envelope(); g.queryEnvelope(e); env.merge(e); } Polygon polygon = new Polygon(); polygon.addEnvelope(env, false); return new OGCPolygon(polygon, esriSR); }
@Override public Proximity2DResult getNearestVertex(Geometry geom, Point inputPoint) { if (geom.isEmpty()) return new Proximity2DResult(); Point2D inputPoint2D = inputPoint.getXY(); Geometry proxmityTestGeom = geom; int gt = geom.getType().value(); if (gt == Geometry.GeometryType.Envelope) { Polygon polygon = new Polygon(); polygon.addEnvelope((Envelope) geom, false); proxmityTestGeom = polygon; gt = Geometry.GeometryType.Polygon; } switch (gt) { case Geometry.GeometryType.Point: return pointGetNearestVertex((Point) proxmityTestGeom, inputPoint2D); case Geometry.GeometryType.MultiPoint: case Geometry.GeometryType.Polyline: case Geometry.GeometryType.Polygon: return multiVertexGetNearestVertex( (MultiVertexGeometry) proxmityTestGeom, inputPoint2D); default: { throw new GeometryException("not implemented"); } } }
private static boolean polygonOverlapsEnvelope_(Polygon polygon_a, Envelope envelope_b, double tolerance, ProgressTracker progress_tracker) { // Quick rasterize test to see whether the the geometries are disjoint, // or if one is contained in the other. int relation = tryRasterizedContainsOrDisjoint_(polygon_a, envelope_b, tolerance, false); if (relation == Relation.disjoint || relation == Relation.contains || relation == Relation.within) return false; Envelope2D env_a = new Envelope2D(), env_b = new Envelope2D(); polygon_a.queryEnvelope2D(env_a); envelope_b.queryEnvelope2D(env_b); if (envelopeInfContainsEnvelope_(env_b, env_a, tolerance)) return false; if (env_b.getWidth() <= tolerance || env_b.getHeight() <= tolerance) return false; // has no interior Polygon polygon_b = new Polygon(); polygon_b.addEnvelope(envelope_b, false); return polygonOverlapsPolygonImpl_(polygon_a, polygon_b, tolerance, progress_tracker); }
private static boolean polygonOverlapsEnvelope_(Polygon polygon_a, Envelope envelope_b, double tolerance, ProgressTracker progress_tracker) { // Quick rasterize test to see whether the the geometries are disjoint, // or if one is contained in the other. int relation = tryRasterizedContainsOrDisjoint_(polygon_a, envelope_b, tolerance, false); if (relation == Relation.disjoint || relation == Relation.contains || relation == Relation.within) return false; Envelope2D env_a = new Envelope2D(), env_b = new Envelope2D(); polygon_a.queryEnvelope2D(env_a); envelope_b.queryEnvelope2D(env_b); if (envelopeInfContainsEnvelope_(env_b, env_a, tolerance)) return false; if (env_b.getWidth() <= tolerance || env_b.getHeight() <= tolerance) return false; // has no interior Polygon polygon_b = new Polygon(); polygon_b.addEnvelope(envelope_b, false); return polygonOverlapsPolygonImpl_(polygon_a, polygon_b, tolerance, progress_tracker); }
static Geometry normalizeInputGeometry_(Geometry geom) { Geometry.Type gt = geom.getType(); if (gt == Geometry.Type.Envelope) { Polygon poly = new Polygon(geom.getDescription()); if (!geom.isEmpty()) poly.addEnvelope((Envelope) geom, false); return poly; } if (gt == Geometry.Type.Point) { MultiPoint poly = new MultiPoint(geom.getDescription()); if (!geom.isEmpty()) poly.add((Point) geom); return poly; } if (gt == Geometry.Type.Line) { Polyline poly = new Polyline(geom.getDescription()); if (!geom.isEmpty()) poly.addSegment((Segment) geom, true); return poly; } return geom; }
private Geometry Generalize(Geometry geom) { Geometry.Type gt = geom.getType(); if (Geometry.isPoint(gt.value())) return geom; if (gt == Geometry.Type.Envelope) { Polygon poly = new Polygon(geom.getDescription()); poly.addEnvelope((Envelope) geom, false); return Generalize(poly); } if (geom.isEmpty()) return geom; MultiPath mp = (MultiPath) geom; MultiPath dstmp = (MultiPath) geom.createInstance(); Line line = new Line(); for (int ipath = 0, npath = mp.getPathCount(); ipath < npath; ipath++) { GeneralizePath((MultiPathImpl) mp._getImpl(), ipath, (MultiPathImpl) dstmp._getImpl(), line); } return dstmp; }
private Geometry Generalize(Geometry geom) { Geometry.Type gt = geom.getType(); if (Geometry.isPoint(gt.value())) return geom; if (gt == Geometry.Type.Envelope) { Polygon poly = new Polygon(geom.getDescription()); poly.addEnvelope((Envelope) geom, false); return Generalize(poly); } if (geom.isEmpty()) return geom; MultiPath mp = (MultiPath) geom; MultiPath dstmp = (MultiPath) geom.createInstance(); Line line = new Line(); for (int ipath = 0, npath = mp.getPathCount(); ipath < npath; ipath++) { GeneralizePath((MultiPathImpl) mp._getImpl(), ipath, (MultiPathImpl) dstmp._getImpl(), line); } return dstmp; }
static Geometry normalizeInputGeometry_(Geometry geom) { Geometry.Type gt = geom.getType(); if (gt == Geometry.Type.Envelope) { Polygon poly = new Polygon(geom.getDescription()); if (!geom.isEmpty()) poly.addEnvelope((Envelope) geom, false); return poly; } if (gt == Geometry.Type.Point) { MultiPoint poly = new MultiPoint(geom.getDescription()); if (!geom.isEmpty()) poly.add((Point) geom); return poly; } if (gt == Geometry.Type.Line) { Polyline poly = new Polyline(geom.getDescription()); if (!geom.isEmpty()) poly.addSegment((Segment) geom, true); return poly; } return geom; }