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
本文含有隐藏内容,请 开通VIP 后查看