首页 > 其他分享 >经纬度格式转换-(互转 度转度分秒 度分秒转度……)

经纬度格式转换-(互转 度转度分秒 度分秒转度……)

时间:2024-09-04 14:41:11浏览次数:9  
标签:转度 分秒 return double 60 dms 互转 data 104

经纬度格式分为三种:
度:              ( ddd.ddddd °)                 十进制小数部分(5位)                百度地图,谷歌地图,手机自带gps经纬度输出
度 . 分 :       (ddd°mm.mmm’ )             十进制小数部分(3位)               GPGGA
度 . 分 . 秒 :(ddd°mm’ss’’)                                                                              谷歌地图
关系:
一度(°)等于60分钟(’)等于3600秒(“):
整度(d)等于十进制的度的整数部分(dd):
分钟(m)等于十进制的度的整数部分(dd)减去整数度(d)的60倍:
秒(s)等于十进制的度(dd)减去整数度(d)减分(M)除以60乘以3600:
经纬度代表的实际距离:
    经度1度 ≈111.13km
    经度1分 ≈1.852km
    经度1秒 ≈30.9m

   纬度1度 ≈ 111.31km  
 纬度1分 ≈ 1.855km  
 纬度1秒 ≈30.9m

度→度分秒:

lon= 104.07167°
度 = 104°
分 = 0.07167 *60 =4.3002(取整) = 4’
秒 = 0.3002 *60 =18.012(保留8位,保留越多越精准,但位置信息已经够精确了) =18.012’’
转换后 lon = 104°4’18.012’’

 public static String D2Dms(double d_data){
        int d = (int)d_data;
        int m = (int)((d_data-d)*60);
        double s = keep8Decimal(((d_data-d)*60-m)*60);
        return  d+"°"+m+"′"+s+"″";
    }

度分秒→度:

lon=104°4’18.012’’

度 = 104+4/60+18.012/60/60 = 104.07167°(保留8位)

转换后 lon =104.07167°

   public static double Dms2D(String dms_data) {
        if (!dms_data.contains("°")||!dms_data.contains("′")||!dms_data.contains("″"))
            return 0;
        double d = Double.parseDouble(dms_data.split("°")[0]);
        double m = Double.parseDouble(dms_data.split("°")[1].split("′")[0]);
        double s =Double.parseDouble(dms_data.split("°")[1].split("′")[1].replace("″", ""));
        return keep8Decimal(d+m/60+s/60/60);
    }

度→度分:

lon= 104.07167°

度 = 104°

分 = 0.07167 *60 =4.3002(保留3位) = 4.3’

转换后 lon = 104°4.3’

    public static String D2Dm(double d_data){
        int d = (int)d_data;
        double m = keep3Decimal((d_data-d)*60);
        return  d+"°"+m+"′";
    }

度分→度:

lon=104°4.3’

度 = 104+4.3/60 = 104.07167°(保留8位)

转换后 lon =104.07167°

   public static double Dm2D(String dms_data) {
        if (!dms_data.contains("°")||!dms_data.contains("′"))
            return 0;
        double d = Double.parseDouble(dms_data.split("°")[0]);
        double m = Double.parseDouble(dms_data.split("°")[1].split("′")[0]);
        return keep8Decimal(d+m/60);
    }

使用的其他方法:

    //保留8位小数
    public static double keep8Decimal(double d){
        BigDecimal bd=new BigDecimal(d);
        double d1=bd.setScale(8,BigDecimal.ROUND_HALF_UP).doubleValue();
        return d1;
    }
    //保留3位小数
    public static double keep3Decimal(double d){
        BigDecimal bd=new BigDecimal(d);
        double d1=bd.setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue();
        return d1;
    }

本文转自:https://blog.csdn.net/weixin_35959554/article/details/86006915

标签:转度,分秒,return,double,60,dms,互转,data,104
From: https://www.cnblogs.com/leebokeyuan/p/18396410

相关文章

  • 多字节字符串和宽字节字符串相互转换
    #define_CRT_SECURE_NO_WARNINGS/*多字节转宽字节*/intunsafe_mbstowcs(){//设置当前的locale为用户环境变量指定的localesetlocale(LC_ALL,"");//定义多字节字符串constchar*mbstr="Hello,世界!";//计算需要的缓冲区大小size_......
  • c++ string 与 wstring 互转
    string转wstring:#include<iostream>#include<sstream>#include<locale>#include<string>#include<codecvt>intmain(){std::stringutf8_str="你好,世界!";std::wstring_convert<std::codecvt_utf8<wc......
  • MySQL中日期和时间戳的转换:字符到DATE和TIMESTAMP的相互转换
    在MySQL中,经常需要在DATE、TIMESTAMP和字符串之间进行相互转换。以下是一些常见的转换方法:1.字符串到日期/时间类型字符串转DATE:使用STR_TO_DATE()函数将字符串转换为DATE类型。你需要提供字符串的格式。SELECTSTR_TO_DATE('2024-08-24','%Y-%m-%d')ASmy_......
  • C语言 - 各个进制之间的相互转换
    目录一、二进制1.二进制  >> 八进制2.二进制  >> 十进制3. 二进制 >> 十六进制二、八进制1.八进制  >> 二进制2.八进制  >> 十进制3.八进制  >> 十六进制三、十进制1.十进制  >> 二进制2.十进制  >> 八进制3.十进制  ......
  • Python 实现Word和TXT文本相互转换
    Word文档(.doc或.docx)和纯文本文件(.txt)是两种常用的文件格式。Word文档通常用于复杂的文档处理和排版,而纯文本文件则用于存储和传输纯文本信息。了解如何在这两种格式之间进行转换能提高工作效率,并便于文件管理。本文将详细介绍如何使用Python实现Word和TXT文件格式之间的相互转换......
  • JavaScript实现数组与树结构的相互转换
    1、将树结构数据转换为数组(按照树结构自上而下的顺序转换)树结构:树结构数据样例:代码转换://将树结构数据转换为数组treeNodes为树结构形式的数据functiontreeToArray(treeNodes){letresult=[];//递归函数traverse,用于处理单个节点functiontraverse(node......
  • C#基础:JSON和字符串、字典、实体类的相互转化方案
    备注:可直接在控制台输出,不需要引用第三方nuget包usingSystem;usingSystem.Collections.Generic;usingSystem.Text.Encodings.Web;usingSystem.Text.Json;classProgram{publicclassData{publicstringMoCategorySelect{get;set;}......
  • 【转】C# struct byte 互转
    文章来源(侵联删):https://blog.csdn.net/shenaisi/article/details/104727187usingSystem;usingSystem.Collections.Generic;usingSystem.Runtime.InteropServices;namespacestruct_test{internalclassProgram{staticvoidMain(string[]args)......
  • 【python学习】巧用notedown:Markdown与Jupyter Notebook的高效互转指南
    在数据科学、教学、技术写作等领域,Markdown文件和JupyterNotebook都是非常重要的工具。notedown是一个轻量级的Python库,能够方便地将Markdown文件转换为JupyterNotebook,或将JupyterNotebook转换为Markdown文件。这篇博客将介绍notedown的基本用法、常见命......
  • 常量的基础认知和相互转化
    常量:在java程序运行过程中,其值不能够发送改变的量分类:字面值常量:字符串常量:被双引号括起来的字符序列"java"字符常量:被单引号括起来的单个字符'a'整数常量:所有的整数100200-100小数常量:所有的小数1.233.14-1.23布......