UTM坐标系与GPS坐标系转换笔记

发布于:2023-01-22 ⋅ 阅读:(394) ⋅ 点赞:(0)

UTM坐标系

像橘子一样均匀地切成60个称为“区域”的部分,展平这些区域中的每个区域,通用横轴Mercator(UTM)投影;
可以这样看:UTM区域是地球的6°区域,因为圆具有360°,这意味着地球上有60个UTM区域。
在这里插入图片描述
如何读取UTM坐标
在这里插入图片描述
UTM 坐标中的第一个数字称为东距,第二个数字称为北距。

代码示例

用到的maven依赖 对应的开源库

<!-- https://mvnrepository.com/artifact/org.locationtech.proj4j/proj4j -->
<dependency>
    <groupId>org.locationtech.proj4j</groupId>
    <artifactId>proj4j</artifactId>
    <version>1.1.1</version>
</dependency>

坐标转换示例代码

CRSFactory crsFactory = new CRSFactory();
        CoordinateReferenceSystem WGS84 = crsFactory.createFromName("epsg:4326");
        CoordinateReferenceSystem UTM = crsFactory.createFromName("epsg:32649");//32649 是对应中国福建省区域
        CoordinateTransformFactory ctFactory = new CoordinateTransformFactory();
        CoordinateTransform wgsToUtm = ctFactory.createTransform(WGS84, UTM);
        // `result` is an output parameter to `transform()`
        ProjCoordinate result = new ProjCoordinate();
        //GPS经纬度
        double lon = 118.143196;
        double lat = 24.505581;
        wgsToUtm.transform(new ProjCoordinate(lon, lat), result);
        System.out.println("gps-utm:"+result.x+","+result.y);
        CoordinateTransform utmtoGPS = ctFactory.createTransform(UTM, WGS84);
        // `result` is an output parameter to `transform()`
        ProjCoordinate result2 = new ProjCoordinate();
        //UTM坐标系
        double x = 1224915.1399418628;
        double y = 2729012.1354469475;
        utmtoGPS.transform(new ProjCoordinate(x, y), result2);
        System.out.println("utm-gps:"+result2.x+","+result2.y);

其中里面需要找区域对应的epsg编码
官网:
https://epsg.io/transform#s_srs=4326&t_srs=3857
https://www.latlong.net/lat-long-utm.html

参考资料

https://github.com/locationtech/proj4j

https://trac.osgeo.org/proj4j/browser/branches/projcoordinate_refactoring/resources/nad/epsg

在线坐标转换:
https://www.latlong.net/lat-long-utm.html

本文含有隐藏内容,请 开通VIP 后查看