【问题标题】:JAVA GIS method not behaving as expectedJAVA GIS 方法未按预期运行
【发布时间】:2015-10-13 20:15:18
【问题描述】:

我正在使用方法调用将一个空间参考中的点转换为另一个(基本上一个坐标平面到另一个),并且在第一个示例中调用工作正常,然后在第二个示例中我使用相同的方法相同的对象类型和方法对 Point... 代码和下面的示例没有影响:(midpoint.project(GeometryUtil.getLatLongCoordSystem)) 是我遇到问题的方法调用)

//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

如您所见,这似乎在第一种情况下可以正常工作,但在第二种情况下却不行。有什么想法吗?

【问题讨论】:

  • Point 是最后一堂课吗?会不会是 line 方法给你返回了一个不同的运行时类型,重新实现了 project 方法?
  • 第一个例子中点是如何定义的?
  • @Diego 它没有出现,因此在每个 aboce vlasses 中设置断点并在它们上调用 .getClass() 时,它们都返回 com.esri.arcgis.geometry.Point
  • 这很奇怪。我对图书馆没有特别的经验,但我能想到的唯一猜测是第二点已经在那个坐标系中(这绝对不像)。根据您的 IDE,您可能可以在 .project 方法中设置断点,然后逐步查看这两种方案之间的区别
  • @Diego 这就是问题所在!在传递给项目方法之前,在我的点上设置空间参考后,它现在正在工作。如果您想发布作为答案,我将很乐意投票/接受

标签: java esri coordinate-transformation


【解决方案1】:

documentation 声明“要投影,几何图形需要有一个空间参考集,并且没有一个 UnknownCoordinateSystem。传递给该方法的新空间参考系统定义了输出坐标系统。如果任一空间参考是未知的, 坐标不变。Project 方法不改变 Z 值和测量值"

您的第二个点可能没有空间参考集。设置它应该可以解决它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 2014-11-12
    • 1970-01-01
    • 2020-06-28
    相关资源
    最近更新 更多