zoukankan      html  css  js  c++  java
  • 经纬度与小数的互相转化

     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  
  • 相关阅读:
    “automation服务器不能创建对象”的问题的解决方案大全
    转载区分C#中的Abstract函数和Virtual函数
    DOS批处理
    数据库设计范式
    java 内存查看工具
    Java内存溢出详解
    Struts2 循环编辑指定次数
    Selenium 使用
    spring security 获取当前用户信息
    由MyEclipse内存不足谈谈JVM内存
  • 原文地址:https://www.cnblogs.com/zhaowencong/p/4065071.html
Copyright © 2011-2022 走看看