【问题标题】:How to convert EPSG:4326 to EPSG:32632 Osmdroid如何将 EPSG:4326 转换为 EPSG:32632 Osmdroid
【发布时间】:2017-10-14 08:26:29
【问题描述】:

我通过我的 Android GPS 在 EPSG: 4326 中获得了我的位置,现在我将其坐标转换为 EPSG: 32632。 有人有想法吗?

【问题讨论】:

    标签: gps osmdroid epsg


    【解决方案1】:

    使用地理工具。 http://www.geotools.org/

    这是一个转换示例。

    http://docs.geotools.org/stable/userguide/library/api/jts.html

    首先,您必须从下载目录中删除 3 个 jar 文件,如下所示:

    例如geotools 18.0版,

    gt-epsg-hsql-18.0.jar gt-epsg-oracle-18.0.jar gt-epsg-postgresql-18.0.jar

    几乎存在两种情况。 1.使用CRS类的decode方法:

    CRSFactory crsFactory = ReferencingFactoryFinder.getCRSFactory(null);
    
    CoordinateReferenceSystem targetCRS = null;
    CoordinateReferenceSystem sourceCRS = null;
    Geometry transCoordGeometry = null;
    
    try {
        targetCRS = CRS.decode("EPSG:32632");
        sourceCRS = CRS.decode("EPSG:4326");
    } catch (FactoryException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    
    
    MathTransform transform = null;
    try {
        transform = CRS.findMathTransform(sourceCRS, targetCRS);
        transCoordGeometry = JTS.transform(orgGeometry, transform);
    } catch (FactoryException | MismatchedDimensionException | TransformException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    
    1. 使用 wkt 字符串。

    targetWKT 的字符串变量 from
    http://spatialreference.org/ref/epsg/wgs-84-utm-zone-32n/prettywkt/

    PROJCS["WGS 84 / UTM zone 32N",
        GEOGCS["WGS 84",
            DATUM["WGS_1984",
                SPHEROID["WGS 84",6378137,298.257223563,
                    AUTHORITY["EPSG","7030"]],
                AUTHORITY["EPSG","6326"]],
            PRIMEM["Greenwich",0,
                AUTHORITY["EPSG","8901"]],
            UNIT["degree",0.01745329251994328,
                AUTHORITY["EPSG","9122"]],
            AUTHORITY["EPSG","4326"]],
        UNIT["metre",1,
            AUTHORITY["EPSG","9001"]],
        PROJECTION["Transverse_Mercator"],
        PARAMETER["latitude_of_origin",0],
        PARAMETER["central_meridian",9],
        PARAMETER["scale_factor",0.9996],
        PARAMETER["false_easting",500000],
        PARAMETER["false_northing",0],
        AUTHORITY["EPSG","32632"],
        AXIS["Easting",EAST],
        AXIS["Northing",NORTH]]
    

    那么,代码是:

    CRSFactory crsFactory = ReferencingFactoryFinder.getCRSFactory(null);
        CoordinateReferenceSystem targetCRS = null;
    
        CoordinateReferenceSystem sourceCRS = null;
        Geometry transCoordGeometry = null;
    
        try {
            targetCRS = crsFactory.createFromWKT(targetWKT); 
            sourceCRS = CRS.decode("EPSG:4326");
        } catch (FactoryException e1) {
            e1.printStackTrace();
        }
    
    
        MathTransform transform = null;
        try {
            transform = CRS.findMathTransform(sourceCRS, targetCRS);
            transCoordGeometry = JTS.transform(orgGeometry, transform);
        } catch (FactoryException | MismatchedDimensionException | TransformException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    

    【讨论】:

      猜你喜欢
      • 2014-04-27
      • 2021-11-10
      • 2021-08-28
      • 2021-08-09
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 2019-06-04
      • 2021-02-07
      相关资源
      最近更新 更多