Bladeren bron

rwd文件经纬度转换

hxf 2 jaren geleden
bovenliggende
commit
4edfc72db8

+ 5 - 2
neim-biz/src/main/java/com/jiayue/biz/service/impl/AnalysisDataImpl.java

@@ -12,6 +12,7 @@ import com.jiayue.biz.domain.*;
 import com.jiayue.biz.service.EmailService;
 import com.jiayue.biz.service.EmailWindTowerInfoService;
 import com.jiayue.biz.util.CalculationUtil;
+import com.jiayue.biz.util.CoordinateUtil;
 import com.jiayue.common.utils.file.FileUtils;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -213,14 +214,16 @@ public class AnalysisDataImpl {
                     String[] strs_cell = valueString.split("\t");
                     String[] s = strs_cell[1].split(" ");
                     String split = s[2].substring(0, 2);
-                    latitude = s[1] + "." + split;
+                    latitude = s[1] + " " + split;
+                    latitude =   CoordinateUtil.changeToDu(latitude);
                 }
                 if (valueString.contains("Longitude")) {
                     //经度
                     String[] strs_cell = valueString.split("\t");
                     String[] s = strs_cell[1].split(" ");
                     String split = s[2].substring(0, 2);
-                    longitude = s[1] + "." + split;
+                    longitude = s[1] + " " + split;
+                    longitude = CoordinateUtil.changeToDu(longitude);
                 }
                 if (valueString.contains("Serial #")) {
                     //记录仪编号

+ 13 - 29
neim-biz/src/main/java/com/jiayue/biz/util/CoordinateUtil.java

@@ -22,42 +22,26 @@ public class CoordinateUtil {
     /**
      * 度分秒转经纬度
      *
-     * @param dms 116°25'7.85"
-     * @return 116.418847
+     * @param dms 045 57.193"
+     * @return 45.918847
      */
-    public static double changeToDu(String dms) {
+    public static String changeToDu(String dms) {
         if (dms == null)
-            return 0;
+            return "";
         try {
-            dms = dms.replace(" ", "");
-            String[] str2 = dms.split("°");
-            if (str2.length < 2)
-                return 0;
-            int d = Integer.parseInt(str2[0]);
-            String[] str3 = str2[1].split("′");
-            if (str3.length < 2)
-                return 0;
-            int f = Integer.parseInt(str3[0]);
-            String str4 = str3[1].substring(0, str3[1].length() - 1);
-            BigDecimal m = new BigDecimal(str4);
-            BigDecimal fen = BigDecimal.valueOf(f).add(m.divide(BigDecimal.valueOf(60), 8, RoundingMode.HALF_UP));
-            BigDecimal du =
-                    fen.divide(BigDecimal.valueOf(60), 8, RoundingMode.HALF_UP).add(BigDecimal.valueOf(Math.abs(d)));
-            if (du.compareTo(BigDecimal.ZERO) < 0) {
-                return -du.doubleValue();
+//            dms = dms.replace(" ", "°");
+            String[] dm = dms.split(" ");
+            if(dm[0].length() < 2){
+                return "";
             }
-            return du.doubleValue();
-            //            double m = Double.parseDouble(str4);
-            //
-            //            double fen = f + (m / 60);
-            //            double du = (fen / 60) + Math.abs(d);
-            //            if (d < 0)
-            //                du = -du;
-            //            return du;
+            BigDecimal dd = new BigDecimal(dm[0]);
+            BigDecimal ff = new BigDecimal(CalculationUtil.getNumberFromStringForDian(dm[1]));
+            BigDecimal df = dd.add(ff.divide(BigDecimal.valueOf(60), 4, RoundingMode.HALF_UP));
+            return df.toString();
         } catch (Exception e) {
             e.printStackTrace();
         }
-        return 0;
+        return "";
     }
 
 }