我正在使用方法调用将一个空间参考中的Point转换为另一个(基本上是一个坐标平面),并且调用在第一个示例中工作正常,然后在第二个示例中我使用相同的方法相同的对象类型和方法对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());
正常工作的Point System.outs的输出:
OLD POINT coords: 1860356.9240645461 1698342.0271777364
NEW POINT coords: -87.85965314497173 34.6678477163251
断开的Polyline System.outs的输出(非常接近上面的点坐标):
OLD LINE coords: 1860490.636483086 1698315.1646775191
NEW LINE coords: 1860490.636483086 1698315.1646775191
正如您所看到的,这似乎在第一种情况下正常工作,但在第二种情况下则不然。有什么想法吗?
答案 0 :(得分:2)
documentation表示"到Project,几何需要具有空间参考集,并且没有UnknownCoordinateSystem。传递给该方法的新空间参考系统定义了输出坐标系。如果任一空间参考为“未知”,则不更改坐标。项目方法"
不会更改Z和度量值你的第二点可能没有空间参考集。设置它应该解决它。