Esri Geometry API for Java 的 GeometryEngine.project() 方法不起作用

问题描述 投票:0回答:1

我正在尝试使用以下依赖项计算由纬度和经度坐标定义的顶点创建的多边形的二维面积:

import com.esri.core.geometry.Geometry;
import com.esri.core.geometry.GeometryEngine;
import com.esri.core.geometry.Point;
import com.esri.core.geometry.Polygon;
import com.esri.core.geometry.SpatialReference;

我已经使用纬度和经度坐标初始化了顶点,并假设它们位于 wgs84 空间参考系统中。在文档中,还指出“在地理坐标系的情况下,X坐标是经度,Y坐标是纬度。”

SpatialReference wgs84 = SpatialReference.create(4326);

Point kassel = new Point(9.49, 51.29);
Point bamberg = new Point (10.90, 49.88);
Point gotha = new Point(10.70,50.93);

现在多边形已形成,没有任何问题:

Polygon polygon = new Polygon();
polygon.startPath(kassel);
polygon.lineTo(bamberg);
polygon.lineTo(gotha);
polygon.closePathWithLine();

如果我使用

polygon.calculateArea2D()
方法,那么结果是否定的。 解释“如果空间参考是地理坐标系 (WGS84),则 2D 面积计算以角度单位定义。”

经过一番研究,在我看来,多边形应该投影到另一个空间参考系统(Web Mercator),以便可以以正确的单位(米和平方米)进行测量:

SpatialReference webMercator= SpatialReference.create(3857);
Polygon newPolygon = GeometryEngine.project(polygon,wgs84,webMercator);

但是,我收到一条错误,指出找不到该方法。我见过几个使用这种方法将几何图形从一个空间参考系统投影到另一个空间参考系统的示例。我在 GeometryEngine 类的

documentation
中也找不到这个方法。有谁知道这里出了什么问题吗?非常感谢您的帮助。

java geometry esri
1个回答
0
投票

Project 方法仅采用两个参数:几何形状和所需的空间参考。原始空间参考存储在原始几何体上。我怀疑您正在查看的示例已经过时,并且三参数版本已被弃用。

我还会使用等面积投影系统,如 Albers (https://en.wikipedia.org/wiki/Equal-area_projection),而不是 Web Mercator。韦伯墨卡托是为了保护罗盘方位而设计的,它会严重扭曲从赤道往北的地区。除了行车路线之外,它真的不适合任何其他用途。

© www.soinside.com 2019 - 2024. All rights reserved.