5

我已经在平面内加载了大量点,我需要从给定点和以米为单位的半径距离绘制一个圆/椭圆,然后检查哪些点在圆内。

我已经用 inside() 方法用多边形完成了这个,但是我找不到一种方法来绘制圆/椭圆,而不必指定多边形周围的每个点。

有没有办法在 JTS 上做到这一点,还是我需要另一个 java 库?

4

3 回答 3

5

如果我理解正确,你有半径和中心,所以你可以像这样用 JTS 画一个圆:

public static Geometry createCircle(double x, double y, final double RADIUS) {
    GeometricShapeFactory shapeFactory = new GeometricShapeFactory();
    shapeFactory.setNumPoints(32);
    shapeFactory.setCentre(new Coordinate(x, y));
    shapeFactory.setSize(RADIUS * 2);
    return shapeFactory.createCircle();
}
于 2015-09-01T01:37:51.097 回答
2

您只需验证与该点的距离是否小于半径。无需绘制圆圈即可知道其中包含哪些点。为了更快的运行时间,比较距离的平方和半径的平方;这节省了不必要的平方根运算。

对于椭圆,问题只是稍微困难一点,涉及二次形式x^2 + k y^2

于 2012-11-20T06:52:47.900 回答
0

您可以简单地buffer将圆心设为正值,如下所示:

Point centerPoint = ...;
Polygon circle = (Polygon) centerPoint.buffer(0.1);
于 2018-11-11T16:43:41.780 回答