b83ae38b0cd8aea7994c62edd0c4b8e2e0aa7c3e.svn-base 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package org.jeecg.modules.demo.untils;/**
  2. * @description TODO
  3. * @author Mr li
  4. * @date 2023/4/18
  5. * @version 1.0
  6. */
  7. import com.xkcoding.http.util.StringUtil;
  8. /**
  9. * @author Mr li
  10. * @version 1.0
  11. * @description TODO
  12. * @date 2023/4/18
  13. */
  14. public class Dms2d {
  15. public static String Dms2D(String jwd) {
  16. if (StringUtil.isNotEmpty(jwd) && (jwd.contains("°"))) {//如果不为空并且存在度单位
  17. //计算前进行数据处理
  18. jwd = jwd.replace("E", "").replace("N", "").replace(":", "").replace(":", "");
  19. double d = 0, m = 0, s = 0;
  20. d = Double.parseDouble(jwd.split("°")[0]);
  21. //不同单位的分,可扩展
  22. if (jwd.contains("′")) {//正常的′
  23. m = Double.parseDouble(jwd.split("°")[1].split("′")[0]);
  24. } else if (jwd.contains("'")) {//特殊的'
  25. m = Double.parseDouble(jwd.split("°")[1].split("'")[0]);
  26. }
  27. //不同单位的秒,可扩展
  28. if (jwd.contains("″")) {//正常的″
  29. //有时候没有分 如:112°10.25″
  30. s = jwd.contains("′") ? Double.parseDouble(jwd.split("′")[1].split("″")[0]) : Double.parseDouble(jwd.split("°")[1].split("″")[0]);
  31. } else if (jwd.contains("''")) {//特殊的''
  32. //有时候没有分 如:112°10.25''
  33. s = jwd.contains("'") ? Double.parseDouble(jwd.split("'")[1].split("''")[0]) : Double.parseDouble(jwd.split("°")[1].split("''")[0]);
  34. }
  35. jwd = String.valueOf(d + m / 60 + s / 60 / 60);//计算并转换为string
  36. //使用BigDecimal进行加减乘除
  37. /*BigDecimal bd = new BigDecimal("60");
  38. BigDecimal d = new BigDecimal(jwd.contains("°")?jwd.split("°")[0]:"0");
  39. BigDecimal m = new BigDecimal(jwd.contains("′")?jwd.split("°")[1].split("′")[0]:"0");
  40. BigDecimal s = new BigDecimal(jwd.contains("″")?jwd.split("′")[1].split("″")[0]:"0");
  41. //divide相除可能会报错(无限循环小数),要设置保留小数点
  42. jwd = String.valueOf(d.add(m.divide(bd,6,BigDecimal.ROUND_HALF_UP)
  43. .add(s.divide(bd.multiply(bd),6,BigDecimal.ROUND_HALF_UP))));*/
  44. }
  45. return jwd;
  46. }
  47. }