我尝试用java制作一个程序,将x,y坐标UTM转换为WGS84格式的纬度和经度。我通过SUMO模拟器生成的xml模拟文件到达UTM坐标,其中netconvert函数传递openstreetMap文件.osm。模拟器输出的转换为我提供了以下参数:location netOffset="-496616.58,-4916305.46"convBoundary="0.00,0.00392.25326.77"origBoundary="8.957512,44.400028,8.962437,44.402970"proj参数="+proj=utm+区域=32+ellps=WGS84+datum=WGS84+单位=m+no_defs"/>
我正在使用一个库com.jhlabs.map.proj,它是proj4.dll的java实现,我发现它是模拟器使用的库c++。所以我想用这个java库做一个从evry x/y坐标到long/lat的普通逆转换。(我刚刚字符串也jcoord库,但没有好的结果)。使用proj参数我做:
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);
我从结果中得到的纬度和经度值不是正确的值。我是这类问题的新手,很少有人指责我。感谢您的每一个答案和每一个解决方案,也有不同的方式或库。
com.jhlabs.map.proj
不支持此功能,如果您愿意,可以使用此fork:https://github.com/bdferris/onebusaway-jmapprojlib(存储库:http://nexus.onebusaway.org/content/groups/public/)
Uage示例:https://github.com/OneBusAway/onebusaway-uk/blob/master/onebusaway-uk-atco-cif-parser/src/main/java/org/onebusaway/uk/atco_cif/AtcoCifParser.java#L285-L286