From 8d662de2fd262b3a485f16e197cb4d0ca2a61cdf Mon Sep 17 00:00:00 2001
From: zsh_root <979909237@qq.com>
Date: 星期三, 10 十二月 2025 17:03:47 +0800
Subject: [PATCH] 发布版V1.0
---
src/home/XyToLatLngConverter.java | 110 +++++++++++++++++++++++++++---------------------------
1 files changed, 55 insertions(+), 55 deletions(-)
diff --git a/src/home/XyToLatLngConverter.java b/src/home/XyToLatLngConverter.java
index 39d33fe..ab6bc18 100644
--- a/src/home/XyToLatLngConverter.java
+++ b/src/home/XyToLatLngConverter.java
@@ -6,23 +6,23 @@
private static final DecimalFormat COORDINATE_FORMAT = new DecimalFormat("0.0000000");
/**
- * 将局部坐标转换为经纬度坐标
+ * 灏嗗眬閮ㄥ潗鏍囪浆鎹负缁忕含搴﹀潗鏍�
*
- * @param localX 局部X坐标(厘米)
- * @param localY 局部Y坐标(厘米)
- * @param latA 点A的纬度(度分格式)
- * @param lonA 点A的经度(度分格式)
- * @param latB 点B的纬度(度分格式)
- * @param lonB 点B的经度(度分格式)
- * @param localXA 点A的局部X坐标(厘米)
- * @param localYA 点A的局部Y坐标(厘米)
- * @param localXB 点B的局部X坐标(厘米)
- * @param localYB 点B的局部Y坐标(厘米)
- * @return 字符串数组:
- * [0] 十进制度纬度,
- * [1] 十进制度经度,
- * [2] 度分格式纬度,
- * [3] 度分格式经度
+ * @param localX 灞�閮╔鍧愭爣(鍘樼背)
+ * @param localY 灞�閮╕鍧愭爣(鍘樼背)
+ * @param latA 鐐笰鐨勭含搴�(搴﹀垎鏍煎紡)
+ * @param lonA 鐐笰鐨勭粡搴�(搴﹀垎鏍煎紡)
+ * @param latB 鐐笲鐨勭含搴�(搴﹀垎鏍煎紡)
+ * @param lonB 鐐笲鐨勭粡搴�(搴﹀垎鏍煎紡)
+ * @param localXA 鐐笰鐨勫眬閮╔鍧愭爣(鍘樼背)
+ * @param localYA 鐐笰鐨勫眬閮╕鍧愭爣(鍘樼背)
+ * @param localXB 鐐笲鐨勫眬閮╔鍧愭爣(鍘樼背)
+ * @param localYB 鐐笲鐨勫眬閮╕鍧愭爣(鍘樼背)
+ * @return 瀛楃涓叉暟缁�:
+ * [0] 鍗佽繘鍒跺害绾害,
+ * [1] 鍗佽繘鍒跺害缁忓害,
+ * [2] 搴﹀垎鏍煎紡绾害,
+ * [3] 搴﹀垎鏍煎紡缁忓害
*/
public static String[] convertLocalToGlobalCoordinates(
String localX, String localY,
@@ -31,45 +31,45 @@
double localXA, double localYA,
double localXB, double localYB) {
- // 1. 计算坐标系转换参数
+ // 1. 璁$畻鍧愭爣绯昏浆鎹㈠弬鏁�
double[] transformParams = CoordinateTranslator.computeTransformParamsWithTwoPoints(
latA, lonA, latB, lonB, localXA, localYA, localXB, localYB);
- // 2. 解析输入坐标并转换为米
+ // 2. 瑙f瀽杈撳叆鍧愭爣骞惰浆鎹负绫�
double x = Double.parseDouble(localX) / 100.0;
double y = Double.parseDouble(localY) / 100.0;
- // 3. 从转换参数中提取必要信息
- double originEasting = transformParams[0]; // 原点东坐标(米)
- double originNorthing = transformParams[1]; // 原点北坐标(米)
- double cosTheta = transformParams[2]; // 旋转矩阵cos分量
- double sinTheta = transformParams[3]; // 旋转矩阵sin分量
- double zone = transformParams[5]; // UTM带号
+ // 3. 浠庤浆鎹㈠弬鏁颁腑鎻愬彇蹇呰淇℃伅
+ double originEasting = transformParams[0]; // 鍘熺偣涓滃潗鏍�(绫�)
+ double originNorthing = transformParams[1]; // 鍘熺偣鍖楀潗鏍�(绫�)
+ double cosTheta = transformParams[2]; // 鏃嬭浆鐭╅樀cos鍒嗛噺
+ double sinTheta = transformParams[3]; // 鏃嬭浆鐭╅樀sin鍒嗛噺
+ double zone = transformParams[5]; // UTM甯﹀彿
- // 4. 将局部坐标转换为UTM坐标
+ // 4. 灏嗗眬閮ㄥ潗鏍囪浆鎹负UTM鍧愭爣
double[] utmCoordinates = convertLocalToUtm(x, y, originEasting, originNorthing, cosTheta, sinTheta);
- // 5. 将UTM坐标转换为经纬度
+ // 5. 灏哢TM鍧愭爣杞崲涓虹粡绾害
double[] latLng = convertUtmToWgs84(utmCoordinates[0], utmCoordinates[1], zone);
- // 6. 准备结果数组
+ // 6. 鍑嗗缁撴灉鏁扮粍
String[] result = new String[4];
- result[0] = COORDINATE_FORMAT.format(latLng[0]); // 十进制度纬度
- result[1] = COORDINATE_FORMAT.format(latLng[1]); // 十进制度经度
+ result[0] = COORDINATE_FORMAT.format(latLng[0]); // 鍗佽繘鍒跺害绾害
+ result[1] = COORDINATE_FORMAT.format(latLng[1]); // 鍗佽繘鍒跺害缁忓害
- // 7. 转换为度分格式
+ // 7. 杞崲涓哄害鍒嗘牸寮�
double latDegMin = convertDecimalToDegMin(latLng[0]);
double lngDegMin = convertDecimalToDegMin(latLng[1]);
- result[2] = COORDINATE_FORMAT.format(latDegMin); // 度分格式纬度
- result[3] = COORDINATE_FORMAT.format(lngDegMin); // 度分格式经度
+ result[2] = COORDINATE_FORMAT.format(latDegMin); // 搴﹀垎鏍煎紡绾害
+ result[3] = COORDINATE_FORMAT.format(lngDegMin); // 搴﹀垎鏍煎紡缁忓害
return result;
}
/**
- * 将十进制度转换为度分格式
- * @param decimalDegrees 十进制度坐标值
- * @return 度分格式坐标值 (dddmm.mmmm)
+ * 灏嗗崄杩涘埗搴﹁浆鎹负搴﹀垎鏍煎紡
+ * @param decimalDegrees 鍗佽繘鍒跺害鍧愭爣鍊�
+ * @return 搴﹀垎鏍煎紡鍧愭爣鍊� (dddmm.mmmm)
*/
private static double convertDecimalToDegMin(double decimalDegrees) {
double degrees = Math.floor(decimalDegrees);
@@ -78,56 +78,56 @@
}
/**
- * 将局部坐标转换为UTM坐标
+ * 灏嗗眬閮ㄥ潗鏍囪浆鎹负UTM鍧愭爣
*
- * @param localX 局部坐标系X值(米)
- * @param localY 局部坐标系Y值(米)
- * @param originEasting 原点东坐标(米)
- * @param originNorthing 原点北坐标(米)
- * @param cosTheta 旋转矩阵cos分量
- * @param sinTheta 旋转矩阵sin分量
- * @return UTM坐标数组 [东坐标, 北坐标]
+ * @param localX 灞�閮ㄥ潗鏍囩郴X鍊�(绫�)
+ * @param localY 灞�閮ㄥ潗鏍囩郴Y鍊�(绫�)
+ * @param originEasting 鍘熺偣涓滃潗鏍�(绫�)
+ * @param originNorthing 鍘熺偣鍖楀潗鏍�(绫�)
+ * @param cosTheta 鏃嬭浆鐭╅樀cos鍒嗛噺
+ * @param sinTheta 鏃嬭浆鐭╅樀sin鍒嗛噺
+ * @return UTM鍧愭爣鏁扮粍 [涓滃潗鏍�, 鍖楀潗鏍嘳
*/
private static double[] convertLocalToUtm(
double localX, double localY,
double originEasting, double originNorthing,
double cosTheta, double sinTheta) {
- // 交换XY坐标(局部坐标系通常以Y为前进方向)
+ // 浜ゆ崲XY鍧愭爣锛堝眬閮ㄥ潗鏍囩郴閫氬父浠涓哄墠杩涙柟鍚戯級
double rotatedX = localY;
double rotatedY = localX;
- // 应用旋转和平移变换
+ // 搴旂敤鏃嬭浆鍜屽钩绉诲彉鎹�
double dx = cosTheta * rotatedX + sinTheta * rotatedY;
double dy = -sinTheta * rotatedX + cosTheta * rotatedY;
return new double[] {
- dx + originEasting, // 东坐标
- dy + originNorthing // 北坐标
+ dx + originEasting, // 涓滃潗鏍�
+ dy + originNorthing // 鍖楀潗鏍�
};
}
/**
- * 将UTM坐标转换为WGS84经纬度
+ * 灏哢TM鍧愭爣杞崲涓篧GS84缁忕含搴�
*
- * @param easting UTM东坐标(米)
- * @param northing UTM北坐标(米)
- * @param zone UTM带号
- * @return 经纬度数组 [纬度, 经度] (十进制度)
+ * @param easting UTM涓滃潗鏍�(绫�)
+ * @param northing UTM鍖楀潗鏍�(绫�)
+ * @param zone UTM甯﹀彿
+ * @return 缁忕含搴︽暟缁� [绾害, 缁忓害] (鍗佽繘鍒跺害)
*/
public static double[] convertUtmToWgs84(double easting, double northing, double zone) {
return utm2ll_wgs84(easting, northing, zone);
}
/**
- * UTM坐标转WGS84经纬度实现
+ * UTM鍧愭爣杞琖GS84缁忕含搴﹀疄鐜�
*/
private static double[] utm2ll_wgs84(double x, double y, double f) {
double[] latlon = new double[2];
double A1 = 6378137.0;
double F1 = 298.257223563;
- // 常量定义
+ // 甯搁噺瀹氫箟
double D0 = 180 / Math.PI;
double maxiter = 100;
double eps = 1e-11;
@@ -177,7 +177,7 @@
}
/**
- * 计算UTM转换系数
+ * 璁$畻UTM杞崲绯绘暟
*/
private static double[] coef(double e, int m) {
double[][] c0;
--
Gitblit v1.10.0