Точка в круге с JTS - PullRequest
       2

Точка в круге с JTS

4 голосов
/ 10 января 2012

У меня есть огромный набор точек, уже загруженных в плоскости. Мне нужно нарисовать круг / эллипс, начиная с заданной точки и радиуса в метрах, а затем проверить, какие точки находятся внутри круга.

Я уже сделал это с помощью многоугольника с помощью метода inside (), но я не могу найти способ нарисовать круг / эллипс без указания каждой точки вокруг многоугольника.

Есть ли способ сделать это на JTS или мне нужна другая библиотека Java?

Ответы [ 3 ]

3 голосов
/ 01 сентября 2015

Если я правильно понял, у вас есть радиус и центр, поэтому вы можете нарисовать окружность с помощью 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 голосов
/ 20 ноября 2012

Вы можете просто проверить, что расстояние от точки меньше радиуса.Не нужно рисовать круг, чтобы знать, какие точки находятся внутри него.Для более быстрого выполнения сравните квадрат расстояния с квадратом радиуса;это спасает ненужные операции с квадратным корнем.

Для эллипсов проблема лишь немного сложнее, включая квадратичную форму x^2 + k y^2.

0 голосов
/ 11 ноября 2018

Вы можете просто buffer центр круга с положительным значением, например:

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