java有没有开源或“免费”的库,我可以在其中执行从一个空间系统到另一个空间系统的坐标转换?我找到了opengeohttp://opengeo.org/ 但它是一个巨大而全面的图书馆,里面有各种各样的空间事物。有更小的吗?我需要从mga56转换到wgs84。
rbpvctlc1#
我需要在wgs84(gps投影)和EPSG27700(英国国家电网)之间来回转换,我发现GeoGrillis库是最精确和可用的。它是用scala编写的,但显然可以用java使用这个库。以下是我使用的maven依赖关系:
<dependency> <groupId>org.locationtech.geotrellis</groupId> <artifactId>geotrellis-proj4_2.12</artifactId> <version>2.3.1</version> </dependency>
下面是一些示例代码:
CRS epsg27700 = CRS.fromEpsgCode(27700); CRS wgs84 = CRS.fromEpsgCode(4326); var toWgs84 = Transform.apply(epsg27700, wgs84); var fromWgs84 = Transform.apply(wgs84, epsg27700); Tuple2<Object, Object> southWestInWgs84 = toWgs84.apply(-90_619.29, 10_097.13); System.out.println("South-West corner in WGS 84: " + southWestInWgs84._1() + "," + southWestInWgs84._2()); Tuple2<Object, Object> southWestBackToEpsg27700 = fromWgs84.apply(southWestInWgs84._1(), southWestInWgs84._2()); System.out.println("South-West corner back to EPSG 27700: " + southWestBackToEpsg27700._1() + "," + southWestBackToEpsg27700._2());
产生以下输出:wgs 84西南角:-8.820000046234389、49.789996964345西南角返回epsg 27700:-90619.288856654210097.128186725415
n9vozmp42#
一个简单的解决方案是proj.4,但它没有java绑定,因此使用它可能有点棘手。一个更完整(但可能比你想要的更大)的解决方案是geotools。但是快速搜索发现了JavaMapProjection库,它似乎是proj.4的java端口。我想试试。因为看起来你需要做一个基准移动,而不仅仅是一个投影,你需要有一些坐标系统数据库。最容易掌握的是epsg数据库——proj.4附带了一个epsgMap文件,对于大多数用途来说,它应该足够好了。看起来mga56epsg:28356当然wgs84是epsg:4326.
zf9nrax13#
有一个完全用java编写的轻量级库。坐标变换套件(简略cts)是一个库,用于使用众所周知的大地测量算法和参数集执行坐标变换。cts处理4257坐标参考系(3910 epsg)。本项目的源代码位于:https://github.com/irstv/cts
3条答案
按热度按时间rbpvctlc1#
我需要在wgs84(gps投影)和EPSG27700(英国国家电网)之间来回转换,我发现GeoGrillis库是最精确和可用的。它是用scala编写的,但显然可以用java使用这个库。以下是我使用的maven依赖关系:
下面是一些示例代码:
产生以下输出:
wgs 84西南角:-8.820000046234389、49.789996964345
西南角返回epsg 27700:-90619.288856654210097.128186725415
n9vozmp42#
一个简单的解决方案是proj.4,但它没有java绑定,因此使用它可能有点棘手。一个更完整(但可能比你想要的更大)的解决方案是geotools。但是快速搜索发现了JavaMapProjection库,它似乎是proj.4的java端口。我想试试。
因为看起来你需要做一个基准移动,而不仅仅是一个投影,你需要有一些坐标系统数据库。最容易掌握的是epsg数据库——proj.4附带了一个epsgMap文件,对于大多数用途来说,它应该足够好了。
看起来mga56epsg:28356当然wgs84是epsg:4326.
zf9nrax13#
有一个完全用java编写的轻量级库。
坐标变换套件(简略cts)是一个库,用于使用众所周知的大地测量算法和参数集执行坐标变换。
cts处理4257坐标参考系(3910 epsg)。
本项目的源代码位于:
https://github.com/irstv/cts