geometry-api-java icon indicating copy to clipboard operation
geometry-api-java copied to clipboard

Convex Hull of One Point

Open randallwhitman opened this issue 3 years ago • 3 comments

Expected: non-empty degenerate polygon. Actual: empty geometry. Is there a different way I should be calling the convex-hull operator? Relates SF4H-181.


  private static class OnePointCursor extends GeometryCursor {
    private boolean flag = true;
    OnePointCursor() {}
    public Geometry next() {
      if (flag) {
        flag = false;
        return new Point(1.2, 3.4);
      } else
        return null;
    }
    public int getGeometryID() {
      throw new UnsupportedOperationException();
    }
  }

  @Test
  public static void testOnePoint() {
    GeometryCursor geomCursor = new OnePointCursor();
    GeometryCursor convexResult = OperatorConvexHull.local().execute(geomCursor, true, null);
    Geometry result = convexResult.next();
    System.err.println(result);  // {"rings":[]}
    assertFalse(result.isEmpty());  // junit.framework.AssertionFailedError
  }

cc @JordanMLee

randallwhitman avatar Dec 21 '21 18:12 randallwhitman

works for me image

JordanMLee avatar Dec 22 '21 17:12 JordanMLee

A point polygon, or polygon which is degenerate to a line is not valid for many operations, so I am not sure what would you be able to use it for. The merge=false version of the operator returns point if convex hull is a point, or a line if convex hull is a line. The merging version should probably do the same.

stolstov avatar Dec 22 '21 17:12 stolstov

Btw, I tested with Geometry-2.2.4 ; I believe Jordan tested with something else.

randallwhitman avatar Dec 22 '21 18:12 randallwhitman