Proj4J 将坐标从 local(x, y) 投影转换为 WGS-84(lat, long)

时间:2021-01-20 15:41:48

标签: java proj cartography

我开始使用 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");

0 个答案:

没有答案