【发布时间】: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