Как упростить линию с помощью JTS?

У меня есть List<Coordinate> который представляет маршрут.

Я хочу упростить это с помощью JTS.

Я видел несколько методов, но я не был уверен, какой из них лучше всего соответствует моим потребностям:

1) как я могу преобразовать мою координату в геометрию (линию?)

TopologyPreservingSimplifier(Geometry inputGeom) 

void    setDistanceTolerance(double distanceTolerance) 

Geometry    getResultGeometry() 

2)

DouglasPeuckerLineSimplifier(Coordinate[] pts) 

 void   setDistanceTolerance(double distanceTolerance) 

 Coordinate[]   simplify() 

static Coordinate[] simplify(Coordinate[] pts, double distanceTolerance) 

3) может это?

TopologyPreservingSimplifier.simplify(geom, threshold-in-degrees-that-depends-on-the-length);

1 ответ

Чтобы упростить линию, сначала нужно ее иметь. Итак, сначала создайте свою LineString, используя createLineString(Coordinate[]) метод экземпляра GeometryFactory.

Затем просто используйте DouglasPeuckerSimplifier (вам не нужно сохранять топологию только для одной строки, начальная и конечная точки - все это топология, и они не будут изменены). Вам придется снова привести результат к LineString, если вы захотите использовать его как таковой позже. И вам придется выбрать подходящую толерантность.

LineString lss = (LineString) DouglasPeuckerSimplifier.simplify(ls, tolerance);
Другие вопросы по тегам