圆点与JTS
问题描述:
我有一个巨大的一组点已经加载在一个平面内我需要绘制一个圆/椭圆从一个给定的点和以米为单位的半径距离开始,然后检查哪些点在圆内。圆点与JTS
我已经用within()方法做了多边形,但是我找不到绘制圆/椭圆的方法,而不必指定多边形周围的每个点。
有没有办法做到这一点在JTS或我需要另一个Java库?
答
您可以验证距离点的距离小于半径。不需要画圆圈来知道里面有哪些点。为了缩短运行时间,请将距离的平方与半径的平方进行比较;这节省了不必要的平方根操作。
对于椭圆,问题只是稍微困难一点,涉及二次形式x^2 + k y^2
。
答
如果我理解正确的话,你有半径和中心,因此可以得出这样与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();
}
为什么shapeFactory.setNumPoints(32);?你是怎么想出32的? – 2017-04-27 17:36:58