项目中有大地坐标(高斯投影坐标)与经纬度互相转换的需求 写了个工具类;
有java和js代码
如图 java代码中将坐标系和带宽已作为参数传入方法,使用时只需调用不同方法:
js端没有将坐标系和带宽作为参数 如果有需要可以替换注释地方 或者自行修改为传参方式:
接下来贴代码:
java:
CoordinateUtil.java
package coordinate;
/**
* @date 2023/9/27
*/
public class CoordinateUtil {
private CoordinateUtil() {
}
/**
* 大地坐标(高斯投影坐标)转换成经纬度 3度带 西安80坐标系
*
* @param x x坐标
* @param y y坐标
* @return 返回经纬度对象
*/
public static Coordinate zoneWide3Xian80ToLatitudeAndLongitude(double x, double y) {
return gaussToLatitudeAndLongitude(x, y, "80", 3);
}
/**
* 经纬度 3度带 西安80坐标系转换成大地坐标(高斯投影坐标)
*
* @param x x坐标
* @param y y坐标
* @return 返回经纬度对象
*/
public static Coordinate latitudeAndLongitudeToZoneWide3Xian80(double x, double y) {
return latitudeAndLongitudeToGauss(x, y, "80", 3);
}
/**
* 大地坐标(高斯投影坐标)转换成经纬度 6度带 西安80坐标系
*
* @param x x坐标
* @param y y坐标
* @return 返回经纬度对象
*/
public static Coordinate zoneWide6Xian80ToLatitudeAndLongitude(double x, double y) {
return gaussToLatitudeAndLongitude(x, y, "80", 6);
}
/**
* 经纬度 6度带 西安80坐标系转换成大地坐标(高斯投影坐标)
*
* @param x x坐标
* @param y y坐标
* @return 返回经纬度对象
*/
public static Coordinate latitudeAndLongitudeToZoneWide6Xian80(double x, double y) {
return latitudeAndLongitudeToGauss(x, y, "80", 6);
}
/**
* 大地坐标(高斯投影坐标)转换成经纬度 3度带 北京54坐标系
*
* @param x x坐标
* @param y y坐标
* @return 返回经纬度对象
*/
public static Coordinate zoneWide3BeiJing54ToLatitudeAndLongitude(double x, double y) {
return gaussToLatitudeAndLongitude(x, y, "54", 3);
}
/**
* 经纬度 3度带 北京54坐标系转换成大地坐标(高斯投影坐标)
*
* @param x x坐标
* @param y y坐标
* @return 返回经纬度对象
*/
public static Coordinate latitudeAndLongitudeToZoneWide3BeiJing54(double x, double y) {
return latitudeAndLongitudeToGauss(x, y, "54", 3);
}
/**
* 大地坐标(高斯投影坐标)转换成经纬度 6度带 北京54坐标系
*
* @param x x坐标
* @param y y坐标
* @return 返回经纬度对象
*/
public static Coordinate zoneWide6BeiJing54ToLatitudeAndLongitude(double x, double y) {
return gaussToLatitudeAndLongitude(x, y, "54", 6);
}
/**
* 经纬度 6度带 北京54坐标