如何在Java(Geospatial)中将投影EPSG:3857转换为EPSG:4326

时间:2019-02-09 07:43:51

标签: java geospatial esri map-projections epsg

有没有办法在Java中将EPSG:3857投影转换为EPSG:4326?我正在使用esri java sdk。我浏览了esri skd文档,但找不到将EPSG:3857转换为EPSG:4326的方法。有办法吗?

我有一个像这样的webMercator:Point property = new Point(1.7040237624799997e7,-3099509.4953500014, SpatialReferences.getWebMercator());

并拥有一个Point point1 = new Point(153.089361, -26.802295, SpatialReferences.getWgs84());这样的WSG84

我需要将它们合并,并且由于这些点具有不同的空间参考,因此无法显示map属性。

1 个答案:

答案 0 :(得分:1)

我假设您正在使用ArcObjects SDK for Java?然后下面的代码应该起作用,因为您的Point类根据esri java doc实现了IGeometry接口

https://desktop.arcgis.com/en/arcobjects/latest/java/api/arcobjects/com/esri/arcgis/geometry/IGeometry.html

Point property = new Point(1.7040237624799997e7,-3099509.4953500014, 
                           spatialReferences.getWebMercator());
Point reprojected = property.project(SpatialReferences.getWgs84());

因为您的Point构造函数看起来像您正在使用一种较新的Esri SDK,例如ArcGIS Pro SDK或Runtime SDK,所以我也为其添加了一个解决方案:

Point originalPoint = new Point(1.7040237624799997e7,-3099509.4953500014, 
                          spatialReferences.getWebMercator());
Point projectedPoint = (Point) GeometryEngine.project(originalPoint, 
                           SpatialReference.create(4326));

根据 https://developers.arcgis.com/java/latest/sample-code/project.htm