java转换投影EPSG:900913到EPSG:4326
在openlayers中 我们可以简单地将EPSG:900913转换为EPSG:4326java转换投影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.
我正在寻找一个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的简单使用方法,请看这里:谢谢你,伙计,浏览了整个互联网,这对我帮助很大!干杯