2015-07-23 3 views
0

Я использую вызов метода для преобразования точки в одну пространственную привязку к другой (одна координатная плоскость к другой в основном), и вызов работает отлично в первом примере, а затем во втором примере I я использую тот же метод для одного и того же типа объекта, и этот метод не влияет на код Point ... и пример ниже: (midpoint.project (GeometryUtil.getLatLongCoordSystem)) - вызов метода, с которым у меня возникают проблемы)Метод JAVA GIS не ведет себя так, как ожидалось

//works fine... 

if (closestStationOrSpanFw != null) { 
       IGeometry shape = closestStationOrSpanFw.getIFeature().getShapeCopy(); 
       Point point = null; 
       if (shape instanceof Point) { 
        point = (Point) shape; 
        System.out.println("OLD POINT coords: " + point.getX() + "  " + point.getY()); 
        point.project(GeometryUtil.getLatLongCoordSystem()); 
        System.out.println("NEW POINT coords: " + point.getX() + "  " + point.getY()); 


//Problem code: 

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); 
        System.out.println("OLD LINE coords: " + midpoint.getX() + "  " + midpoint.getY()); 
        midpoint.project(GeometryUtil.getLatLongCoordSystem()); 
        System.out.println("NEW LINE coords: " + midpoint.getX() + "  " + midpoint.getY()); 

выход из правильной рабочей точки System.outs:

OLD POINT coords: 1860356.9240645461  1698342.0271777364 
NEW POINT coords: -87.85965314497173  34.6678477163251 

выход из сломанных полилинии System.outs (очень близко к точке координат выше):

OLD LINE coords: 1860490.636483086  1698315.1646775191 
NEW LINE coords: 1860490.636483086  1698315.1646775191 

Как вы можете видеть, это, кажется, чтобы работать должным образом в первом случае, но не во втором. Есть идеи?

+0

Is Point последний класс? Может ли быть, что метод линии возвращает вам другой тип среды выполнения, который повторно реализует метод проекта? –

+0

Как определить среднюю точку в первом примере? – epoch

+0

@ Diego это не отображается при установке точек останова в каждом из классов aboce и вызове .getClass() на них, они оба возвращают com.esri.arcgis.geometry.Point – GregH

ответ

2

В заявлении documentation указано, что «для проекта геометрия должна иметь набор пространственных ссылок и не иметь систему UnknownCoordinateSystem. Новая система пространственных данных, переданная методу, определяет выходную систему координат. Если либо пространственная ссылка неизвестна, координаты не изменяются. Значения Z и меры измерения не изменяются по методу проекта «

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

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