首页 > 其他分享 >经纬度工具类GPSUtil

经纬度工具类GPSUtil

时间:2023-01-14 15:58:08浏览次数:45  
标签:direction return String 经纬度 Double GPSUtil 工具 gpsSplit gps

package com.new3s.manage.util;


import org.apache.commons.lang3.StringUtils;

public class GPSUtil {

    public static String gpsToDecimals(String gpsParam) {
        String direction = gpsParam.substring(0, 1);
        String gps = gpsParam.substring(1);
        String[] gpsSplit = gps.split("°");
        Double gpsLimit = Double.valueOf(gpsSplit[0]);
        Double gpsMinute = Double.valueOf(gpsSplit[1].split("′")[0]);
        Double gpsSecond = Double.valueOf(gpsSplit[1].split("′")[1].split("″")[0]);
        double v = gpsLimit + gpsMinute / 60 + gpsSecond / 3600;
        v = (double) Math.round(v * 1000000000) / 1000000000;
        if (StringUtils.equals(direction, "N") || StringUtils.equals(direction, "E")) {
            return String.valueOf(v);
        } else {
            return "-" + v;
        }
    }

    public static String gpsToDecimalsEn(String gpsParam) {
        String direction = gpsParam.substring(0, 1);
        String gps = gpsParam.substring(1);
        String[] gpsSplit = gps.split("°");
        Double gpsLimit = Double.valueOf(gpsSplit[0]);
        Double gpsMinute = Double.valueOf(gpsSplit[1].split("\'")[0]);
        Double gpsSecond = Double.valueOf(gpsSplit[1].split("\'")[1].split("\"")[0]);
        double v = gpsLimit + gpsMinute / 60 + gpsSecond / 3600;
        v = (double) Math.round(v * 1000000000) / 1000000000;
        if (StringUtils.equals(direction, "N") || StringUtils.equals(direction, "E")) {
            return String.valueOf(v);
        } else {
            return "-" + v;
        }
    }

    /**
     * @param gpsParam
     * @param type     1:经度  2:纬度
     * @return
     */
    public static String decimalsToGps(String gpsParam, int type) {
        Double gps = new Double(gpsParam);
        String direction = "";
        if (gps > 0) {
            if (type == 1) {
                direction = "E";
            } else {
                direction = "N";
            }
        } else {
            if (type == 1) {
                direction = "W";
            } else {
                direction = "S";
            }
        }
        String[] gpsSplit = gpsParam.split("\\.");
        //取整为度数
        String gpsLimit = gpsSplit[0];
        double v = Double.valueOf("0." + gpsSplit[1]) * 60;
        //取小数位 * 60 再取整为 分数
        int gpsMinute = (int) Math.floor(v);
        //取分数的小数位 * 60 为秒数,保留两位小数
        double gpsSecond = (v - gpsMinute) * 60;
        return direction + gpsLimit + "°" + gpsMinute + "′" + String.format("%.2f", gpsSecond) + "″";
    }

    /**
     * gps格式验证
     * @param gps
     * @return
     */
    public static boolean gpsFormatCheck(String gps) {
        if (gps == null || StringUtils.equals("", gps)) {
            return false;
        }
        if (gps.contains("°") && gps.contains("′") && gps.contains("″")) {
            return true;
        }
        return false;
    }

    public static void main(String[] args) {
//        if (aDouble)
//        String str = "N107°34'54.08\"";
        String str = "N38°30′47.24″";

        boolean check = GPSUtil.gpsFormatCheck(str);
        System.out.println(check);

        System.out.println(GPSUtil.decimalsToGps("116.75659799", 1));


/*
        String aDouble = GPSUtil.gpsToDecimalsEn(str);
        System.out.println("N107°34'54.08\"");
        System.out.println(aDouble);
        String decimalsToGps = GPSUtil.decimalsToGps(aDouble, 1);
        System.out.println(decimalsToGps);*/
    }
}

 

标签:direction,return,String,经纬度,Double,GPSUtil,工具,gpsSplit,gps
From: https://www.cnblogs.com/mask-xiexie/p/17051943.html

相关文章

  • 20 个 JS 工具函数助力高效开发
    日常开发中,面对各种不同的需求,我们经常会用到以前开发过的一些工具函数,把这些工具函数收集起来,将大大提高我们的开发效率。1、校验数据类型export const typeOf = fu......
  • Centos7下安装Dogtail GUI自动化测试工具并打开sniff工具过程中遇到的问题解决方法
    (目录)因为测试需要,需在Centos下进行liunxGUI软件自动化测试,所以用到了python的Dogtail库,继而使用Dogtail的sniff控件获取工具,但是遇到了很多问题记录如下。1环境Cent......
  • 振弦采集模块参数配置工具VMTool 的使用
    振弦采集模块参数配置工具VMTool的使用 准备工作(1)将VMXXX模块的UART_TTL、RS232(或RS485)接口与计算机的COM端口连接;(2)连接振弦传感器及温度传感器到VMXXX......
  • 两大js调试工具的安装
    首先要确保已经安装nodejs,具体安装步骤可以百度。node-inspect工具的安装和使用对于node-inspect工具我们可以全局安装:npminstallnode-inspect-g由于安装过cnpm,所以几乎......
  • Python开发工具Spyder安装
    1.打开官网:​​https://www.spyder-ide.org​​点击download--->DownloadformacOS下载完成后,双击运行dmg文件,拖放Spyder到Applications复制完成后运行Spyder......
  • Java 计算经纬度是否在某个范围之内
    /***计算地球上任意两点(经纬度)距离**@paramlong1前端传入的打卡第一点经度*@paramlat1前端传入的打卡第一点纬度*@paramlong2范围之内的第二点经......
  • java性能分析小工具--jconsole
     如果电脑装了java版本1.5以上,都会自带这个性能分析小工具。windows下输入命令行:jconsole 即可调出这个工具 可以对线程、内存、类、CPU等做一些简单分析  ......
  • angular的工具方法笔记(equals, HashKey)
    分别是angular脏值检测的工具方法equals和类HashKey的使用方法<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml......
  • BI工具将数据分析拉下神坛
    以前,数据分析是一件比较有门槛的事,它不仅要求数据分析师具备一定的数据分析思维和方法经验,还要求数据分析师们熟练使用各种复杂的数据分析工具,要求他们掌握Python、R、SQL等......
  • 落实年度目标任务和重点工作(必备工具)
    一般企业都会在年初的时候,指定本企业的年度总体目标,并分解重点工作到各个部门。其实这个就是制定了一个整体战略。之后每个部门按整体目标,及重点工作指定本部门的重点工作及......