2015-07-29 3 views
1

У меня возникла проблема, когда я не знаю, как определить, соответствует ли данная (com.esri.arcgis.geometry.Polyline) полилиния прямой или нет. Мой код работает для прямых линий, но не для кривых. Мои проблемы в том, что я не уверен, как получить список точек из Полилинии и не знаю, как проверить, прямая ли строка, как только я получу этот список очков. Код ниже:JAVA различать изогнутую линию от прямой линии

else if (shape instanceof Polyline) { 
        Polyline line = (Polyline) shape; 
        Point lowerLeft = (Point) line.getEnvelope().getLowerLeft(); 
        Point upperRight = (Point) line.getEnvelope().getUpperRight(); 
        Point midpoint = GeometryUtil.getMidpoint(lowerLeft, upperRight); 
        midpoint.setSpatialReferenceByRef(ActiveMapContainer.getInstance() 
                   .getMapBean().getSpatialReference()); 
        GeometryUtil.projectLatLong(midpoint); 

ответ

1

Вы можете получить количество точек на полилинии, используя метод getLength(). Вы можете получить каждую точку с помощью метода getPoint (int i).

Есть, вероятно, лучшие методы, но я бы проверял, прямая ли линия: 1. Рассчитайте расстояние между первой и последней точкой. 2. Сравните его со всей длиной полилинии. Если оба они равны (возможно, используя какую-то приемлемую разницу в длине - «дельта»), предположим, что линия прямая. Если они отличаются тем, что больше «дельта», предположим, что линия не прямая.

Смежные вопросы