java将来自UTM SUMO Simulator坐标的com.jhlabs.map.proj转换为WGS84 lat / long

时间:2013-11-17 10:44:02

标签: java

我尝试在java中创建一个程序,将x,y坐标UTM转换为WGS84格式的纬度和经度。我通过一个由SUMO模拟器whith netconvert函数生成的xml模拟文件到达UTM坐标,传递一个openstreetMap文件.osm。模拟器的转换输出给出了以下参数: location 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的dinamicaly逆转换。 (我刚刚使用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);

我从结果得到的纬度和经度值不正确。 我是这类问题的最新版本,而且几乎没有文件证明。 感谢每个答案和每个解决方案,也有不同的方式或库。