我已经在一个平面内加载了一大堆点,我需要从给定点开始绘制圆/椭圆,以米为单位绘制半径距离,然后检查圆内的哪些点。
我已经使用within()方法使用多边形来完成此操作,但我找不到绘制圆/椭圆的方法,而无需指定多边形周围的每个点。
有没有办法在JTS上执行此操作,还是需要其他Java库?
答案 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);