首页 > 编程知识 正文

excel经纬度换算公式,经纬度换算

时间:2023-05-05 15:17:35 阅读:247479 作者:3548

import com.github.pagehelper.util.StringUtil;import java.text.DecimalFormat;/** * @Author LEAVES * @Date 2020/9/13 * @Version 1.0 */public class DealEN { /** * 方法一 经纬度换算 * @param jwd 经纬度 * @param xsd 保留的小数位数 * @return */ public static Double Dms2D(String jwd, String xsd){ double xxx = 0; DecimalFormat df = new DecimalFormat(xsd); if(StringUtil.isNotEmpty(jwd)&&(jwd.contains("°"))){//如果不为空并且存在度单位 //计算前进行数据处理 jwd = jwd.replace("E", "").replace("N", "").replace(":", "").replace(":", ""); double d=0,m=0,s=0; d = Double.parseDouble(jwd.split("°")[0]); //不同单位的分,可扩展 if(jwd.contains("′")){//正常的′ m = Double.parseDouble(jwd.split("°")[1].split("′")[0]); }else if(jwd.contains("'")){//特殊的' m = Double.parseDouble(jwd.split("°")[1].split("'")[0]); } //不同单位的秒,可扩展 if(jwd.contains("″")){//正常的″ //有时候没有分 如:112°10.25″ s = jwd.contains("′")?Double.parseDouble(jwd.split("′")[1].split("″")[0]):Double.parseDouble(jwd.split("°")[1].split("″")[0]); }else if(jwd.contains("''")){//特殊的'' //有时候没有分 如:112°10.25'' s = jwd.contains("'")?Double.parseDouble(jwd.split("'")[1].split("''")[0]):Double.parseDouble(jwd.split("°")[1].split("''")[0]); } jwd = String.valueOf(d+m/60+s/60/60);//计算并转换为string// xxx = d+m/60+s/60/60;// String format = df.format(xxx); xxx =Double.parseDouble(df.format(d+m/60+s/60/60)); //使用BigDecimal进行加减乘除// BigDecimal bd = new BigDecimal("60");// BigDecimal d = new BigDecimal(jwd.contains("°")?jwd.split("°")[0]:"0");// BigDecimal m = new BigDecimal(jwd.contains("′")?jwd.split("°")[1].split("′")[0]:"0");// BigDecimal s = new BigDecimal(jwd.contains("″")?jwd.split("′")[1].split("″")[0]:"0"); //divide相除可能会报错(无限循环小数),要设置保留小数点// jwd = String.valueOf(d.add(m.divide(bd,6,BigDecimal.ROUND_HALF_UP)// .add(s.divide(bd.multiply(bd),6,BigDecimal.ROUND_HALF_UP)))); } return xxx; } /** * 方法二 经纬度换算 * @param lng 经纬度 * @return */ public static Double tranformPos(String lng){ DecimalFormat df = new DecimalFormat("0.0000000000"); String[] lntArr = lng .trim() .replace("°", ";") .replace("′", ";") .replace("″", ";") .replace("'", ";") .replace(""", "") .split(";"); Double result = 0.000000; for (int i = lntArr.length; i >0 ; i--) { double v = Double.parseDouble(lntArr[i-1]); if(i==1){ result=v+result; }else{ result=(result+v)/60; } } //double v = Double.parseDouble(df.format(result)); return Double.parseDouble(df.format(result)); }}
win7电脑文件夹如何加密

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。