繁体   English   中英

如何使用JMapProjLib,Proj4j或Proj4js在不同坐标系之间转换坐标?

[英]How to convert coordinates between different coordinate systems with JMapProjLib, Proj4j or Proj4js?

我正在创建一个Android应用程序(带有Java), 它将从文件中读取SWEREF99 TM坐标,然后将它们转换为WGS84 (长纬度)坐标,并且方向相反。 为此,我将使用JMapProjLibProj4jProj4js (我将使用Java的ScriptEngine访问的JavaScript库)。

问题是由于文档很少,我不知道如何使用这些库。
我已经尝试过JMapProjLib -JavaLibrary,但是它没有给我正确的结果,并且我也尝试过使用Proj4js 2.3.3 ,但是我什至无法使后面提到的工作……

我当前在Proj4js 2.3.3中使用的JavaScript(和一些HTML)代码(当前,我仅在HTML文件中尝试使用此脚本,因此当浏览器显示以下内容时,浏览器应显示一条弹出消息,提示“完成!”)。转换完成)​​:

<!DOCTYPE html>
<html>
<head>
    <title>Proj4js Testing</title>
</head>
<body onload="convertCoordinates()">
    <script type"text/javascript" src="proj4js.js"></script>
    <script type="text/javascript">
        // Convert coordinates
        function convertCoordinates() 
            // Define the target projection (SWEREF99 TM)
            var targetProjection = "+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs";

            // Convert the WGS84 coordinates Lon: 15 and Lat: 55 to SWEREF99 TM coordinates
            proj4(targetProjection, [15, 55]);

            // Just show an alert message telling that the code has executed properly
            alert("Done!");
        }
    </script>
</body>
</html>

我正在尝试的Java代码(使用JMapProjLib ):

/**
 * Convert a long-lat coordinate to a SWEREF99 TM coordinate.
 * 
 * @param longLatCoordinate The long-lat coordinate to convert.
 * 
 * @return The converted SWEREF99 TM coordinate.
 */
public static SWEREF99TMCoordinate longLatToSWEREF99TM(LongLatCoordinate longLatCoordinate) {
    // Create a new SWEREF99 TM projection
    Projection projection = ProjectionFactory.fromPROJ4Specification(new String[] {
            "+proj=tmerc",
            "+zone=33",
            "+ellps=GRS80",
            "+towgs84=0,0,0,0,0,0,0",
            "+units=m",
            "+no_defs"
    });

    // Convert the LongLatCoordinate to a Point2D.Double
    Point2D.Double longLatPoint = new Point2D.Double(longLatCoordinate.getLongitude(), longLatCoordinate.getLatitude());
    // Get the location as a SWEREF99 TM Point2D.Double
    Point2D.Double sweref99TMPoint = projection.transform(longLatPoint, new Point2D.Double());
    // COnvert the location to a SWEREF99TMCoordinate
    SWEREF99TMCoordinate sweref99TMCoordinate = new SWEREF99TMCoordinate(sweref99TMPoint.x, sweref99TMPoint.y);

    // Return the projected coordinate
    return sweref99TMCoordinate;
}

我的Java项目引用的JMapProjLib -library由git仓库中的src/com/jhlabs/mapsrc/coordsys/文件夹中的内容组成,这些内容由Eclipse使用Eclipse编译成.jar文件。

由于JavaScript 库Proj4js对我来说看起来“做得更好”,因此我更喜欢将它与Java ScriptEngine结合ScriptEngine ,所以我现在真正需要的只是某种文档,或者可以向我解释这一点的人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM