【问题标题】:java Conversion with com.jhlabs.map.proj from UTM SUMO Simulator coordinates to WGS84 lat/longjava 使用 com.jhlabs.map.proj 从 UTM SUMO 模拟器坐标转换为 WGS84 纬度/经度
【发布时间】:2015-02-16 21:49:13
【问题描述】:

我尝试在 java 中制作一个程序,将 x,y 坐标 UTM 转换为 WGS84 格式的纬度和经度。我通过 SUMO 模拟器生成的 xml 模拟文件到达 UTM 坐标,其中 netconvert 函数传递了一个 openstreetMap 文件 .osm。模拟器的转换输出给了我这些参数: 位置 netOffset="-496616.58,-4916305.46" convBoundary="0.00,0.00,392.25,326.77" origBoundary="8.957512,44.400028,8.962437,44.402970" projParameter="+proj=utm +zone=32 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"/>

我正在使用库 com.jhlabs.map.proj,它是 proj4.dll 的 java 实现,我发现它是模拟器使用的库 c++。所以我想用这个java库做一个从evry x/y坐标到long/lat的动态逆转换。 (我刚刚也尝试过 jcoord 库,但没有好的结果)。 我使用 projParameters:

String[] proj4_w = new String[]{"+proj=utm",
              "+zone=32",
              "+ellps=WGS84",
             "+datum=WGS84",
            "+units=m",
            "+no_defs",

            "+to",
            "+proj=latlong",
            "+ellps=WGS84",
            "+datum=WGS84",
            "+no_defs"

            };

        Projection proj = ProjectionFactory.fromPROJ4Specification(proj4_w);

        Point2D.Double testUtm = new Point2D.Double(utmX(), utmY());
        Point2D.Double testProjec = proj.transform(testUtm, new Point2D.Double());

        System.out.println("latitudine: " + testProjec.x + " longitudine: " + stProjec.y);

我从结果中得到的纬度和经度值不是正确的值。 我是这类问题的最新成员,几乎没有文档。 感谢每个答案和每个解决方案也有不同的方式或库。

【问题讨论】:

    标签: java


    【解决方案1】:
    猜你喜欢
    • 2011-02-11
    • 2021-07-18
    • 1970-01-01
    • 2013-02-14
    • 2015-04-24
    • 2010-09-15
    • 1970-01-01
    • 2015-07-13
    • 1970-01-01
    相关资源
    最近更新 更多