首页 > 代码库 > 经纬度与小数的互相转化
经纬度与小数的互相转化
1 import java.math.BigDecimal; 2 3 public class ConvertLatlng { 4 5 //经纬度度分秒转换为小数 6 public double convertToDecimal(double du,double fen,double miao){ 7 if(du<0) 8 return -(Math.abs(du)+(Math.abs(fen)+(Math.abs(miao)/60))/60); 9 10 return Math.abs(du)+(Math.abs(fen)+(Math.abs(miao)/60))/60;11 12 }13 //以字符串形式输入经纬度的转换14 public double convertToDecimalByString(String latlng){15 16 double du=Double.parseDouble(latlng.substring(0, latlng.indexOf("°")));17 double fen=Double.parseDouble(latlng.substring(latlng.indexOf("°")+1, latlng.indexOf("′")));18 double miao=Double.parseDouble(latlng.substring(latlng.indexOf("′")+1, latlng.indexOf("″")));19 if(du<0)20 return -(Math.abs(du)+(fen+(miao/60))/60);21 return du+(fen+(miao/60))/60;22 23 }24 25 //将小数转换为度分秒26 public String convertToSexagesimal(double num){27 28 int du=(int)Math.floor(Math.abs(num)); //获取整数部分(度)29 double temp=getdPoint(Math.abs(num))*60;30 int fen=(int)Math.floor(temp); //获取整数部分(分)31 double miao=getdPoint(temp)*60;32 if(num<0)33 return "-"+du+"°"+fen+"′"+miao+"″";34 35 return du+"°"+fen+"′"+miao+"″";36 37 }38 //获取小数部分39 public double getdPoint(double num){40 double d = num;41 int fInt = (int) d;42 BigDecimal b1 = new BigDecimal(Double.toString(d));43 BigDecimal b2 = new BigDecimal(Integer.toString(fInt));44 double dPoint = b1.subtract(b2).floatValue();45 return dPoint;46 }47 48 public static void main(String[] args) {49 50 ConvertLatlng convert=new ConvertLatlng();51 double latlng1=convert.convertToDecimal(37, 25, 19.222);52 double latlng2=convert.convertToDecimalByString("-37°25′19.222″");53 String latlng3=convert.convertToSexagesimal(121.084095);54 String latlng4=convert.convertToSexagesimal(-121.084095);55 56 System.out.println("转换小数(数字参数)"+latlng1);57 System.out.println("转换小数(字符串参数)"+latlng2);58 System.out.println("转换度分秒:"+latlng3);59 System.out.println("转换度分秒:"+latlng4);60 61 }62 63 }64
经纬度与小数的互相转化
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。