圆点与JTS

问题描述:

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

我已经用within()方法做了多边形,但是我找不到绘制圆/椭圆的方法,而不必指定多边形周围的每个点。

有没有办法做到这一点在JTS或我需要另一个Java库?

您可以验证距离点的距离小于半径。不需要画圆圈来知道里面有哪些点。为了缩短运行时间,请将距离的平方与半径的平方进行比较;这节省了不必要的平方根操作。

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

+0

为什么shapeFactory.setNumPoints(32);?你是怎么想出32的? – 2017-04-27 17:36:58

如果我理解正确的话,你有半径和中心,因此可以得出这样与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(); 
}