用JTS指向Circle

时间:2012-01-10 17:02:28

标签: java jts

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

我已经使用within()方法使用多边形来完成此操作,但我找不到绘制圆/椭圆的方法,而无需指定多边形周围的每个点。

有没有办法在JTS上执行此操作,还是需要其他Java库?

3 个答案:

答案 0 :(得分:3)

如果我理解正确你有半径和中心,那么你可以像这样用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();
}

答案 1 :(得分:2)

您可以验证距离点的距离是否小于半径。无需绘制圆圈以了解其中的哪些点。为了更快的运行时间,将距离的平方与半径的平方进行比较;这节省了不必要的平方根操作。

对于省略号,问题只是稍微困难一些,涉及二次型x^2 + k y^2

答案 2 :(得分:0)

您可以像这样简单地buffer以正值来表示圆心:

Point centerPoint = ...;
Polygon circle = (Polygon) centerPoint.buffer(0.1);