if (polygon.getPathCount() > 1) { return false;
private static Point computePolygonCentroid(Polygon polygon) { int pathCount = polygon.getPathCount(); if (pathCount == 1) { return getPolygonSansHolesCentroid(polygon); } double xSum = 0; double ySum = 0; double areaSum = 0; for (int i = 0; i < pathCount; i++) { int startIndex = polygon.getPathStart(i); int endIndex = polygon.getPathEnd(i); Polygon sansHoles = getSubPolygon(polygon, startIndex, endIndex); Point centroid = getPolygonSansHolesCentroid(sansHoles); double area = sansHoles.calculateArea2D(); xSum += centroid.getX() * area; ySum += centroid.getY() * area; areaSum += area; } return new Point(xSum / areaSum, ySum / areaSum); }
/** * Returns the number of interior rings in this Polygon. */ public int numInteriorRing() { return polygon.getPathCount() - 1; }
/** * Returns the number of interior rings in this Polygon. */ public int numInteriorRing() { return polygon.getPathCount() - 1; }
@Override public Geometry next() { Polygon input_polygon = (Polygon) (m_bufferer.m_geometry); if (m_index < input_polygon.getPathCount()) { int ind = m_index; double area = input_polygon.calculateRingArea2D(m_index); assert (area > 0); m_index++; while (m_index < input_polygon.getPathCount()) { double hole_area = input_polygon .calculateRingArea2D(m_index); if (hole_area > 0) break;// not a hole m_index++; } if (ind == 0 && m_index == input_polygon.getPathCount()) { return m_bufferer.bufferPolygonImpl_(input_polygon, 0, input_polygon.getPathCount()); } else { return m_bufferer.bufferPolygonImpl_(input_polygon, ind, m_index); } } return null; }
@Override public Geometry next() { Polygon input_polygon = (Polygon) (m_bufferer.m_geometry); if (m_index < input_polygon.getPathCount()) { int ind = m_index; double area = input_polygon.calculateRingArea2D(m_index); assert (area > 0); m_index++; while (m_index < input_polygon.getPathCount()) { double hole_area = input_polygon .calculateRingArea2D(m_index); if (hole_area > 0) break;// not a hole m_index++; } if (ind == 0 && m_index == input_polygon.getPathCount()) { return m_bufferer.bufferPolygonImpl_(input_polygon, 0, input_polygon.getPathCount()); } else { return m_bufferer.bufferPolygonImpl_(input_polygon, ind, m_index); } } return null; }
@Override public OGCGeometry geometryN(int n) { int exterior = 0; for (int i = 0; i < polygon.getPathCount(); i++) { if (polygon.isExteriorRing(i)) exterior++; if (exterior == n + 1) { return new OGCPolygon(polygon, i, esriSR); } } throw new IllegalArgumentException("geometryN: n out of range"); }
@Override public OGCGeometry geometryN(int n) { int exterior = 0; for (int i = 0; i < polygon.getPathCount(); i++) { if (polygon.isExteriorRing(i)) exterior++; if (exterior == n + 1) { return new OGCPolygon(polygon, i, esriSR); } } throw new IllegalArgumentException("geometryN: n out of range"); }
@Override public void write(final DataOutput dataOutput) throws IOException { final int pathCount = polygon.getPathCount(); dataOutput.writeInt(pathCount); for (int i = 0; i < pathCount; i++) { dataOutput.writeInt(polygon.getPathSize(i)); } final Point2D point2D = new Point2D(); final int pointCount = polygon.getPointCount(); for (int i = 0; i < pointCount; i++) { polygon.getXY(i, point2D); // Had to patch https://github.com/Esri/geometry-api-java dataOutput.writeDouble(point2D.x); dataOutput.writeDouble(point2D.y); } }
public OGCPolygon(Polygon src, int exteriorRing, SpatialReference sr) { polygon = new Polygon(); for (int i = exteriorRing, n = src.getPathCount(); i < n; i++) { if (i > exteriorRing && src.isExteriorRing(i)) break; polygon.addPath(src, i, true); } esriSR = sr; }
public OGCPolygon(Polygon src, int exteriorRing, SpatialReference sr) { polygon = new Polygon(); for (int i = exteriorRing, n = src.getPathCount(); i < n; i++) { if (i > exteriorRing && src.isExteriorRing(i)) break; polygon.addPath(src, i, true); } esriSR = sr; }
if (polygon.getPathCount() > 1) { return false;
if (polygon.getPathCount() > 1) { return false;
if (polygon.getPathCount() > 1) { return false;
private static Point2D computePolygonCentroid(Polygon polygon) { int pathCount = polygon.getPathCount(); if (pathCount == 1) { return getPolygonSansHolesCentroid(polygon); } double xSum = 0; double ySum = 0; double areaSum = 0; for (int i = 0; i < pathCount; i++) { int startIndex = polygon.getPathStart(i); int endIndex = polygon.getPathEnd(i); Polygon sansHoles = getSubPolygon(polygon, startIndex, endIndex); Point2D centroid = getPolygonSansHolesCentroid(sansHoles); double area = sansHoles.calculateArea2D(); xSum += centroid.x * area; ySum += centroid.y * area; areaSum += area; } return new Point2D(xSum / areaSum, ySum / areaSum); }
private static Point2D computePolygonCentroid(Polygon polygon) { int pathCount = polygon.getPathCount(); if (pathCount == 1) { return getPolygonSansHolesCentroid(polygon); } double xSum = 0; double ySum = 0; double areaSum = 0; for (int i = 0; i < pathCount; i++) { int startIndex = polygon.getPathStart(i); int endIndex = polygon.getPathEnd(i); Polygon sansHoles = getSubPolygon(polygon, startIndex, endIndex); Point2D centroid = getPolygonSansHolesCentroid(sansHoles); double area = sansHoles.calculateArea2D(); xSum += centroid.x * area; ySum += centroid.y * area; areaSum += area; } return new Point2D(xSum / areaSum, ySum / areaSum); }
private static Point computePolygonCentroid(Polygon polygon) { int pathCount = polygon.getPathCount(); if (pathCount == 1) { return getPolygonSansHolesCentroid(polygon); } double xSum = 0; double ySum = 0; double areaSum = 0; for (int i = 0; i < pathCount; i++) { int startIndex = polygon.getPathStart(i); int endIndex = polygon.getPathEnd(i); Polygon sansHoles = getSubPolygon(polygon, startIndex, endIndex); Point centroid = getPolygonSansHolesCentroid(sansHoles); double area = sansHoles.calculateArea2D(); xSum += centroid.getX() * area; ySum += centroid.getY() * area; areaSum += area; } return new Point(xSum / areaSum, ySum / areaSum); }
private static Point computePolygonCentroid(Polygon polygon) { int pathCount = polygon.getPathCount(); if (pathCount == 1) { return getPolygonSansHolesCentroid(polygon); } double xSum = 0; double ySum = 0; double areaSum = 0; for (int i = 0; i < pathCount; i++) { int startIndex = polygon.getPathStart(i); int endIndex = polygon.getPathEnd(i); Polygon sansHoles = getSubPolygon(polygon, startIndex, endIndex); Point centroid = getPolygonSansHolesCentroid(sansHoles); double area = sansHoles.calculateArea2D(); xSum += centroid.getX() * area; ySum += centroid.getY() * area; areaSum += area; } return new Point(xSum / areaSum, ySum / areaSum); }
case Polygon: Polygon polygon = (Polygon)(esriGeom); resultInt.set(polygon.getPointCount() + polygon.getPathCount()); break; default:
Polygon poly = (Polygon) (m_geometry); Polygon buffered_result = bufferPolygonImpl_(poly, 0, poly.getPathCount()); return simplify.execute(buffered_result, m_spatialReference, false, m_progress_tracker);