【问题标题】:Point in Circle with JTS带 JTS 的圆点
【发布时间】:2018-11-12 00:43:41
【问题描述】:

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

我已经使用 inside() 方法对多边形进行了此操作,但我找不到一种无需指定多边形周围的每个点即可绘制圆/椭圆的方法。

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

【问题讨论】:

    标签: java jts


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 为什么是 shapeFactory.setNumPoints(32);?你是怎么想出 32 的?
      【解决方案3】:

      你可以简单地buffer圆心,像这样:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-09
        • 2017-06-14
        • 1970-01-01
        • 2019-06-01
        • 2011-03-21
        相关资源
        最近更新 更多