我开始使用 Proj4J 库,但无法进行简单的转换。 目的是将俄罗斯平面局部坐标系转换为 WGS-84(lat, long)。我看过源库代码,但我不明白我做错了什么。
有我的测试代码,在注释中有src坐标系的参数。
基准和投影的参数是:
PROJCS["MSK МСК-14 зона 2 (6 градусная) Республика Саха (Якутия)",
GEOGCS["Krassovsky, 1942",DATUM["unknown",SPHEROID["krass",6378245,298.3],
TOWGS84[23.57,-140.95,-79.8,0,0.35,0.79,-0.22]],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433]],
PROJECTION["Transverse_Mercator"],
PARAMETER["latitude_of_origin",0],
PARAMETER["central_meridian",114.45],
PARAMETER["scale_factor",1],
PARAMETER["false_easting",2400000],
PARAMETER["false_northing",-5912900.566],
UNIT["Meter",1]]
代码是:
Datum sk95 = new Datum("SK-95", 23.57, -140.95, -79.8, 0.0, 0.35,0.79, -0.22, Ellipsoid.KRASSOVSKY, "My datum");
Projection src = new TransverseMercatorProjection(Ellipsoid.KRASSOVSKY, 114.45, 0, 1, 2400000, -5912900.566);
CoordinateReferenceSystem msk14z2 = new CoordinateReferenceSystem("MSK-14z2 Yakutia", null, sk95, src); //2 параметр, видимо служебная инфа
CRSFactory factory = new CRSFactory();
CoordinateReferenceSystem wgs84 = factory.createFromName("EPSG:4326");
//первый аргумент - восток, второй - север
ProjCoordinate point = new ProjCoordinate(2303248.01, 703919.89);
ProjCoordinate result = new ProjCoordinate();
BasicCoordinateTransform transformator = new BasicCoordinateTransform(msk14z2, wgs84);
transformator.transform(point, result);
System.out.println(String.format("Lat - %f, Long - %f", result.x, result.y));
System.out.println("Expected - 112.73456353163765, 59.65413798772589");