java转换投影EPSG:900913到EPSG:4326

java转换投影EPSG:900913到EPSG:4326,java,map-projections,cartography,epsg,Java,Map Projections,Cartography,Epsg,在openlayers中 我们可以简单地将EPSG:900913转换为EPSG:4326 我正在寻找一个java库可以做到这一点。 在这里我找到了这个, 但是文档是用c++ 我不知道如何使用它 如果有人知道这一点, 请在您所引用的页面上发布一个简单的代码,Jerry Huxtable的令人愉快的代码确实是用Java编写的,如中所示。类com.jhlabs.map.proj.ProjectionFactory包含一个名为fromPROJ4Specification()的方法,该方法返回com.

在openlayers中 我们可以简单地将EPSG:900913转换为EPSG:4326
我正在寻找一个java库可以做到这一点。
在这里我找到了这个,

但是文档是用c++
我不知道如何使用它


如果有人知道这一点,

请在您所引用的页面上发布一个简单的代码,Jerry Huxtable的令人愉快的代码确实是用Java编写的,如中所示。类
com.jhlabs.map.proj.ProjectionFactory
包含一个名为
fromPROJ4Specification()
的方法,该方法返回
com.jhlabs.map.proj.Projection
。可以使用EPSG:900913参数创建所需的投影

900913: +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs 900913: +项目=merc+a=6378137+b=6378137+lat\U ts=0.0+lon\U 0=0.0 +x_0=0.0+y_0=0+k=1.0+units=m+nadgrids=@null+no_defs
您还应该查看。

另一个选项是使用开源GIS Java库GeoTools:

有关投影类的详细信息,请参见:

所有投影的多种不同格式的投影定义可从以下网站下载:

例如,

可能是用于此目的的最佳库。看看它们的坐标系,使用以下方法从一个坐标系转换到另一个坐标系看起来很简单:

CoordinateReferenceSystem dataCRS = schema.getCoordinateReferenceSystem();
CoordinateReferenceSystem worldCRS = map.getCoordinateReferenceSystem();
boolean lenient = true; // allow for some error due to different datums
MathTransform transform = CRS.findMathTransform(dataCRS, worldCRS, lenient);
您的CRS参考可通过以下方式检索:

CRS.decode("EPSG:4326")
根据。

也很有趣:

Proj4J是一个Java库,用于将点坐标从一个地理坐标系转换为另一个地理坐标系,包括基准转换。
该库的核心是PROJ.4 C库的一个端口

我知道这是大约8年前的事了,但也许这可以帮助另一位勇敢的旅行者

我们不得不离开GeoTools,因为这是LGPL,这是我们的法律人员不允许的

我刚刚将代码改为使用proj4j()。它看起来并没有被积极开发,但它可以满足我们的简单需求。另外,许可证是Apache2.0,这是一种更为宽松的许可证

它可以通过Maven获得,因此很容易:

它不直接支持EPSG:900913,因为它不是真正的官方标准。它确实支持EPSG:3857,这是同样的事情

下面是一个片段,用于实现您所需的功能:

public Point2D.Double transform(Point2D.Double point, String sourceCRS, String targetCRS) {
    Point2D.Double destPosition = new Point2D.Double();

    CRSFactory factory = new CRSFactory();
    CoordinateReferenceSystem srcCrs = factory.createFromName(sourceCRS); // Use "EPSG:3857" here instead of 900913.
    CoordinateReferenceSystem destCrs = factory.createFromName(targetCRS); // Use "EPSG:4326 here.
    CoordinateTransform transform = new CoordinateTransformFactory().createTransform(srcCrs, destCrs);

    ProjCoordinate srcCoord = new ProjCoordinate(point.getX(), point.getY());
    ProjCoordinate destCoord = new ProjCoordinate();
    transform.transform(srcCoord, destCoord);
    destPosition.setLocation(destCoord.x, destCoord.y);

    return destPosition;
}

似乎有一个新的Apache项目,它可能是上述开源项目的最新替代方案:

它是proj4的一种替代方案:


什么文件?你能提供一个直接链接吗?以前没有见过Globe小程序-非常好。Geotools很复杂,但功能非常强大-我们在我的工作中使用它进行坐标和投影转换,等等。Geotools是LGPL,在我的公司是verboten。一些关于如何使用它的代码会很好。看看这个。要了解javascript的简单使用方法,请看这里:谢谢你,伙计,浏览了整个互联网,这对我帮助很大!干杯