坐标转换优化

This commit is contained in:
马三炮 2025-07-14 10:37:35 +08:00
parent cdb1bbfd12
commit 475473a109
2 changed files with 18 additions and 5 deletions

View File

@ -91,9 +91,11 @@ public class TbTowerServiceImpl implements TbTowerService {
data.setBaiduLat(String.valueOf(bd09[0])); data.setBaiduLat(String.valueOf(bd09[0]));
data.setBaiduLon(String.valueOf(bd09[1])); data.setBaiduLon(String.valueOf(bd09[1]));
}else { }else {
double[] bd09 =CoordinateTransform.cgcs2000ToBd09(Double.parseDouble(data.getLat()),Double.parseDouble(data.getLon()),Double.parseDouble(data.getCentralMeridian())); /*double[] bd09 =CoordinateTransform.cgcs2000ToBd09(Double.parseDouble(data.getLat()),Double.parseDouble(data.getLon()),Double.parseDouble(data.getCentralMeridian()));
data.setBaiduLon(String.valueOf(bd09[0])); data.setBaiduLon(String.valueOf(bd09[0]));
data.setBaiduLat(String.valueOf(bd09[1])); data.setBaiduLat(String.valueOf(bd09[1]));*/
data.setBaiduLon(String.valueOf(CoordinateTransform.dmsToDecimal(data.getLon())));
data.setBaiduLat(String.valueOf(CoordinateTransform.dmsToDecimal(data.getLat())));
data.setCentralMeridian(String.valueOf(data.getCentralMeridian())); data.setCentralMeridian(String.valueOf(data.getCentralMeridian()));
} }
Long userId = UserUtil.getLoginUser().getId(); Long userId = UserUtil.getLoginUser().getId();
@ -147,9 +149,11 @@ public class TbTowerServiceImpl implements TbTowerService {
data.setBaiduLat(String.valueOf(bd09[0])); data.setBaiduLat(String.valueOf(bd09[0]));
data.setBaiduLon(String.valueOf(bd09[1])); data.setBaiduLon(String.valueOf(bd09[1]));
}else { }else {
double[] bd09 =CoordinateTransform.cgcs2000ToBd09(Double.parseDouble(data.getLat()),Double.parseDouble(data.getLon()),Double.parseDouble(data.getCentralMeridian())); /* double[] bd09 =CoordinateTransform.cgcs2000ToBd09(Double.parseDouble(data.getLat()),Double.parseDouble(data.getLon()),Double.parseDouble(data.getCentralMeridian()));
data.setBaiduLon(String.valueOf(bd09[0])); data.setBaiduLon(String.valueOf(bd09[0]));
data.setBaiduLat(String.valueOf(bd09[1])); data.setBaiduLat(String.valueOf(bd09[1]));*/
data.setBaiduLon(String.valueOf(CoordinateTransform.dmsToDecimal(data.getLon())));
data.setBaiduLat(String.valueOf(CoordinateTransform.dmsToDecimal(data.getLat())));
data.setCentralMeridian(String.valueOf(data.getCentralMeridian())); data.setCentralMeridian(String.valueOf(data.getCentralMeridian()));
} }
Long userId = UserUtil.getLoginUser().getId(); Long userId = UserUtil.getLoginUser().getId();

View File

@ -94,6 +94,8 @@ public class CoordinateTransform {
// CGCS2000转WGS84(通常可以忽略) // CGCS2000转WGS84(通常可以忽略)
double[] wgs84 = cgcs2000ToWgs84(latLng[0], latLng[1]); double[] wgs84 = cgcs2000ToWgs84(latLng[0], latLng[1]);
System.out.println(wgs84[0]+"======="+wgs84[1]);
// WGS84转GCJ02 // WGS84转GCJ02
double[] gcj02 = wgs84ToGcj02(wgs84[0], wgs84[1]); double[] gcj02 = wgs84ToGcj02(wgs84[0], wgs84[1]);
@ -173,11 +175,18 @@ public class CoordinateTransform {
public static void main(String[] args) { public static void main(String[] args) {
double x = 3730067.601; double x = 3730067.601;
double y = 396052.578; double y = 396052.578;
// 转换为百度坐标系 // 转换为百度坐标系
double[] bd09 = cgcs2000ToBd09(x, y,108); double[] bd09 = cgcs2000ToBd09(x, y,108);
System.out.println("百度坐标系(BD09)经度: " + bd09[0]); System.out.println("百度坐标系(BD09)经度: " + bd09[0]);
System.out.println("百度坐标系(BD09)纬度: " + bd09[1]); System.out.println("百度坐标系(BD09)纬度: " + bd09[1]);
} }
// 度分秒转十进制
public static double dmsToDecimal(String dms) {
//String x = "33°4131.36929″";
String[] list = dms.split("[°'\"′″]");
return Double.valueOf(list[0]) + Double.valueOf(list[1])/60 + Double.valueOf(list[2])/3600;
}
} }