首页 > 其他分享 >【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 |

【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 |

时间:2023-08-10 17:05:32浏览次数:52  
标签:纬度 周长 经纬度 double 计算 经度 Math



文章目录

  • 一、经度、纬度概念
  • 二、地球周长计算
  • 1、地球半径、周长计算
  • 2、地球经线周长计算
  • 3、地球纬线周长计算
  • 三、经纬度相关计算
  • 1、经纬度坐标距离计算公式
  • 2、经纬度与实际距离换算
  • 1 米对应经度
  • 1 米对应纬度
  • 3、实际距离与经纬度换算
  • 1 度经度对应东西距离
  • 1 度纬度对应南北距离
  • 四、相关代码实现
  • 1、计算两个经纬度之间的距离
  • 2、距离与经纬度之间换算
  • 3、弧度与角度计算







一、经度、纬度概念



经度 Longitude , 本初子午线 位置 为 0 度经线 , 相当于水平 x 轴 的坐标 , 经度的取值范围 -180 度 ~ +180 度 ;

纬度 Latitude , 相当于 垂直 y 轴 的坐标 , 纬度的取值范围 -90 度 ~ + 90 度 ;

西经 和 南纬 是负数 ;

经度使用 W ( 东经 ) 和 E ( 西经 ) 表示 , 纬度 使用 N ( 北纬 ) 和 S ( 南纬 ) 表示 ,

北京 中心 坐标为 :

  • 北纬 39°54′20″ , 东经 116°25′29″
  • N 39°54′20″ , W 116°25′29″





二、地球周长计算




1、地球半径、周长计算



地球的半径为 : 【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 |_java

地球的周长为 : 【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 |_java_02



2、地球经线周长计算



经线 周长 计算 : 【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 |_java_02

经线 的 周长 , 就是 地球的 周长 ;

经线 是 南北走向的 , 任意一个经线 都要经过 南极 和 北极 ;


3、地球纬线周长计算



纬线 周长 计算 : 【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 |_经纬度_04



常用的 38 度 纬度 的地球周长为 : 【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 |_gis_05



纬线 是 东西走向的 , 不同 纬度 的 纬线 长度是不同的 ,

  • 赤道附近的 纬线最长 , 等于地球周长 ;
  • 南北极位置的 纬线最短 , 为 0 ;

上述公式中 【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 |_经度_06



纬度 的取值范围 -90 度 ~ + 90 度 , 函数曲线如下图所示 :

  • 在赤道位置 , 纬度为 0 度 , 【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 |_经度_07
  • 在 南极 / 北极 位置 , 纬度为 90 度 , 【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 |_经纬度_08

【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 |_经度_09






三、经纬度相关计算




1、经纬度坐标距离计算公式



经纬度坐标距离计算公式 :

【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 |_gis_10

  • 两个坐标点分别为 :
  • 【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 |_java_11
  • 【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 |_经纬度_12
  • 【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 |_经纬度_13
  • 【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 |_经纬度_14
  • 地球半径为 6378.137 千米 ;


使用代码实现上述逻辑 :

public class LocationUtils {
    
    private static final double EARTH_RADIUS = 6371; // 地球平均半径,单位为公里
    
    public static double getDistance(double lat1, double lon1, double lat2, double lon2) {
        double radLat1 = Math.toRadians(lat1);
        double radLat2 = Math.toRadians(lat2);
        double a = radLat1 - radLat2;
        double b = Math.toRadians(lon1) - Math.toRadians(lon2);
        double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
                Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
        s = s * EARTH_RADIUS;
        s = Math.round(s * 1000) / 1000.0; // 保留三位小数
        return s;
    }
}



2、经纬度与实际距离换算




1 米对应经度



经度 ( 东西方向 ) 上 1 米 , 对应的度数是由当前的纬度决定的 ;

不同的 纬度 上 , 纬线 ( 东西方向 ) 的周长不一样 ;



赤道上 1 米对应的经度计算 :

赤道上 纬度为 0 度 , 东西方向的 纬线周长为 40030173 米 , 是最长的 ;

对应的计算过程如下 :

【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 |_经纬度_15



38° 纬度 1 米对应的经度计算 :

38° 纬度 , 东西方向的 纬线周长为 31544206 米 ;

对应的计算过程如下 :

【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 |_经度_16



1 米对应纬度



纬度 ( 南北方向 ) 上 1 米 , 对应的度数是固定的 ;

值为 【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 |_经纬度_15



3、实际距离与经纬度换算




1 度经度对应东西距离



1 度经度对应东西距离 :

赤道位置的公式为 : 【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 |_经度_18

  • 【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 |_java_19
  • 地球周长为 【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 |_经度_20
  • 东西方向经度范围是 360 度 , 一度对应的距离就是周长处于 360 ;


非赤道位置的公式 :

【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 |_java_21

【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 |_gis_22



38 度纬度位置 1 度经度对应的东西距离为 :

【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 |_经纬度_23

【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 |_经纬度_24
【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 |_经纬度_25



1 度纬度对应南北距离



1 度纬度对应南北距离 公式 :

【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 |_java_21

【GIS - 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 |_gis_22






四、相关代码实现




1、计算两个经纬度之间的距离



public class LocationUtils {
    
    private static final double EARTH_RADIUS = 6371; // 地球平均半径,单位为公里
    
    public static double getDistance(double lat1, double lon1, double lat2, double lon2) {
        double radLat1 = Math.toRadians(lat1);
        double radLat2 = Math.toRadians(lat2);
        double a = radLat1 - radLat2;
        double b = Math.toRadians(lon1) - Math.toRadians(lon2);
        double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
                Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
        s = s * EARTH_RADIUS;
        s = Math.round(s * 1000) / 1000.0; // 保留三位小数
        return s;
    }
}



2、距离与经纬度之间换算



public class LocationUtils {

    public static final double EARTH_RADIUS = 6371.393;

    public static Double km2Degree(Double km){
        return (180 / EARTH_RADIUS / Math.PI) * km;
    }

    public static Double degree2Km(Double degree){
        return EARTH_RADIUS / 180 * Math.PI * degree;
    }
}



3、弧度与角度计算



public class LocationUtils {

    /**
     * 将角度转换为弧度
     * @param degree
     * @return
     */
    public static double deg2rad(double degree) {
        return degree / 180 * Math.PI;
    }

    /**
     * 将弧度转换为角度
     * @param radian
     * @return
     */
    public static double rad2deg(double radian) {
        return radian * 180 / Math.PI;
    }
}



参考链接 :


标签:纬度,周长,经纬度,double,计算,经度,Math
From: https://blog.51cto.com/u_14202100/7037539

相关文章

  • 使用在线Excel时,有哪些方法可以引入计算函数?
    摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。前言在日常生活和工作中,我们都会或多或少的使用Excel中的计算公式函数,比如求和公式、平均数公式等。今天为大家整理了一些在线Excel中可......
  • MQCal工程算量通用计算式表V1.3.0.80发布(2023年8月9日)
    MQCal工程通用计算式算量表V1.3.0.80更新记录2023.8.91、增加行移动快捷键,看菜单功能提示。2、修正行移动功能选中和开始比对,如果在开始行以上,不动作。    修正行移动后的选中方式,兼容wps3、局部计算式内支持换行。4、显隐表后面带表的隐藏:H、深度隐藏:VH属性......
  • 目标检测mAP计算方法-简单易懂
    本次将整理一份map计算方法,主要分为三部分,第一部分简单了解原理,第二部分理解如何调用coco等相关库得到map,第三部分教会读者如何结合模型(任何可计算map的网络模型)调用而生成map,而本博客希望读者能掌握使用模型预测map,其重点也为第三部分: 第一部分介绍map原理,主要引用部分他人结......
  • 计算机应用研究投稿经验
    自己的第一篇论文投稿中文期刊,先后投了3个期刊,最终被计算机应用研究录用,在这里稍微记录一下吧。 总的来说体验很好,编辑部处理速度一流,专家给的建议很专业很负责很认真,点赞。 ......
  • 大连人工智能计算平台——华为昇腾AI平台——高性能计算HPC的pytorch源码编译报错——
     如题:pytorch源码编译报错——USE_CUDA=OFF  在编译pytorch源码的时候发现错误,虽然编译环境中已经安装好CUDA和cudnn,环境变量也都设置好,但是编译好的pytorch包wheel总是在运行torch.cuda.is_available()显示false,于是从编译源码的过程中进行重新检查,发现在编译的过程中提......
  • 计算机网络中的逻辑计算综合
    ************特别说明,因此篇随笔内容是引用其他技术人员的文章,仅可用作自我总结及日常使用。************计算机中的逻辑运算又被称作为“布尔运算”,分别为:逻辑与运算、逻辑或运算,逻辑非运算,逻辑异或运算。这四种逻辑运算中,只有“逻辑非运算”是一元逻辑运算(一个运算操作......
  • 使用C#配合modbus协议的16进制代码生成crc16校验码的计算方法
    前言在网上也是查看了很多关于crc16校验的文章,但是好像都是对于有基础的人看的,我当时拿起直接使用,发现行不通,这对于零基础的不是很友好,所以决定贡献一篇,哈哈哈哈~~~publicuintCalcCRC16(stringhexCommand){byte[]pBuf=HexStringToByteArray(......
  • 计算几何入门
    计算几何入门目录计算几何入门一向量1.叉积a.定义b.应用凸包寻找凸包算法1:Graham一向量我认为唯一比较有用的东西是向量的叉积1.叉积a.定义对于两个0起点开始,最终点为(a1,a2)和(b1,b2)的两个向量,其叉积为a1*b2-a2*b1。b.应用可以判断两个向量的旋转方向:假如A和B......
  • 使用bigInt解决js计算精度问题
    1.引用mathjsnpminstallmathjs2.封装计算方法utils/math.js 3.在需要使用的文件引入和调用 ......
  • java XSSFWorkbook excel 公式计算
    excel公式计算//创建一个工作薄XSSFWorkbookworkbook=newXSSFWorkbook();//如果是最后一列添加一个求和计算,将结果放到同一列最后一个。dataLists数据列表XSSFSheetsheet=workbook.getSheet(replaceSpecStr(sheetNames.get(0)));Rowrow......