小编典典

如何在JTS中从纬度,经度到经度,纬度交换jts.geom.Geometry对象的坐标

java

我有一个类型为(com.vividsolutions.jts.geom.Geometry)的几何对象。它目前是经度,纬度形式,我想翻转坐标,使其经度为纬度,这样我就可以将其以GeoJSON格式用于mongodb。

我看到的约束是:a)我想翻转坐标的输入是Geometry对象。b)几何对象将是多边形类型或多多边形。c)我想在将类型强制转换为Polygon /
multipolygon之前翻转坐标

我已经尝试过geo.reverse(),但是它不起作用。

同样,我尝试使用:CRSAuthorityFactory factory = CRS.getAuthorityFactory(true);
CoordinateReferenceSystem crs = factory.createCoordinateReferenceSystem(“
EPSG:4326”);

和另一个选择,我没有看到它的工作。

谢谢!


阅读 553

收藏
2020-11-30

共1个答案

小编典典

一种可能的解决方案是扩展类,以提供一个附加功能,该功能可以通过一些便捷的方式输出所需的数据:

public Coordinate[] getReversedCoordinates(){

  Coordinate[] original = this.getCoordinates();
  Coordinate[] ret = new Coordinate[original.length];

  for(int i =0; i<original.length; i++){
      ret[i] = new Coordinate( original[i].x , original[i].y );
  }

  return ret;

}

或者,您可以更改数据的解释。我很难为您提供一个代码段,因为我不确定您是如何使用这些信息的。

编辑:

一旦有了反向坐标,就可以创建线性环类型的重复几何。一种方法是使用工厂使用几何工厂:

GeometryFactory gf = //However this was instantiated;
Coordinate[] reversedCoordinates = getReversedCoordinates();
gf.createLinearRing(reversedCoordinates);

祝您编程愉快,如有任何疑问,请留下评论!

2020-11-30