【GIS – 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 | 经纬度与实际距离换算 | 相关代码实现 )

【GIS – 地理信息系统】经纬度计算 ( 经度、纬度概念 | 地球周长计算 | 地球经线周长计算 | 经纬度相关计算 | 经纬度坐标距离计算公式 | 经纬度与实际距离换算 | 相关代码实现 )一 经度 纬度概念二 地球周长计算 1 地球半径 周长计算 2 地球经线周长计算 3 地球纬线周长计算三 经纬度相关计算 1 经纬度坐标距离计算公式 2 经纬度与实际距离换算 1 米对应经度 1 米对应纬度 3

大家好,欢迎来到IT知识分享网。

一、经度、纬度概念


经度 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、地球半径、周长计算

地球的半径为 : 米 = 6371 千米 米 = 6371 千米 =6371千米 ;

地球的周长为 : 2 π × = 米 2 \pi \times = 米 2π×=

2、地球经线周长计算

经线 周长 计算 : 2 π × = 米 2 \pi \times = 米 2π×=

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

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

在这里插入图片描述

3、地球纬线周长计算

纬线 周长 计算 : 2 π × × cos ⁡ α 米 2 \pi \times \times \cos\alpha 米 2π××cosα

常用的 38 度 纬度 的地球周长为 : 2 π × × cos ⁡ 38 = 米 2 \pi \times \times \cos 38 = 米 2π××cos38=

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

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

上述公式中 α \alpha α 是纬度 度数 ;

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

  • 在赤道位置 , 纬度为 0 度 , cos ⁡ 0 = 1 \cos 0 = 1 cos0=1 ;
  • 在 南极 / 北极 位置 , 纬度为 90 度 , cos ⁡ 90 = 0 \cos 90 = 0 cos90=0 ;

在这里插入图片描述

三、经纬度相关计算


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

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

S = 2 arcsin ⁡ sin ⁡ 2 a 2 + cos ⁡ L a t 1 × cos ⁡ L a t 2 × sin ⁡ 2 b 2 × 6378.137 S = 2 \arcsin \sqrt{ \sin^2 \frac{a}{2} + \cos Lat1 \times \cos Lat2 \times \sin^2 \frac{b}{2}} \times 6378.137 S=2arcsinsin22a+cosLat1×cosLat2×sin22b
×
6378.137

  • 两个坐标点分别为 :
    • ( L a t 1 , L n g 1 ) ( Lat1 , Lng1 ) (Lat1,Lng1) , Lat1 是 坐标点一 纬度 , Lng1 是 经度 ;
    • ( L a t 2 , L n g 2 ) ( Lat2 , Lng2 ) (Lat2,Lng2) , Lat2 是 坐标点一 纬度 , Lng2 是 经度 ;
  • a = L a t 1 − L a t 2 a = Lat1 – Lat2 a=Lat1Lat2 , 是 两个坐标点的 纬度之差 ;
  • b = L n g 1 − L n g 2 b = Lng1 – Lng2 b=Lng1Lng2 , 是 两个坐标点的 经度之差 ;
  • 地球半径为 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 度 , 东西方向的 纬线周长为 米 , 是最长的 ;

对应的计算过程如下 :

360 ° / = 0.00000899 ° 360° / = 0.00000899° 360°/=0.00000899°

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

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

对应的计算过程如下 :

360 ° / = 0.00001141 ° 360° / = 0.00001141° 360°/=0.00001141°

1 米对应纬度

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

值为 360 ° / = 0.00000899 ° 360° / = 0.00000899° 360°/=0.00000899°

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

1 度经度对应东西距离

1 度经度对应东西距离 :

赤道位置的公式为 : 2 π R 360 = 2 π × 360 = .7 米 \frac{2\pi R}{360} = \frac{2\pi \times }{360} = .926 644 558 737 米 3602πR=3602π×=.7

  • R R R 为地球半径 ;
  • 地球周长为 2 π R 2\pi R 2πR
  • 东西方向经度范围是 360 度 , 一度对应的距离就是周长处于 360 ;

非赤道位置的公式 :

2 π R 360 × cos ⁡ 纬度 = 2 π × 360 × cos ⁡ 纬度 \frac{2\pi R}{360} \times \cos纬度 = \frac{2\pi \times }{360} \times \cos纬度 3602πR×cos纬度=3602π××cos纬度

≈ .7 × cos ⁡ 纬度米 \approx .926 644 558 737 \times \cos纬度 米 .7×cos纬度米

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

2 π R 360 × cos ⁡ 38 ° = 2 π × 360 × cos ⁡ 38 ° \frac{2\pi R}{360} \times \cos 38° = \frac{2\pi \times }{360} \times \cos 38° 3602πR×cos38°=3602π××cos38°

≈ .7 × 0.7 米 \approx .926 644 558 737 \times 0.7 米 .7×0.7
≈ 87622. 米 \approx 87622. 米 87622.

1 度纬度对应南北距离

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

2 π R 360 × cos ⁡ 纬度 = 2 π × 360 × cos ⁡ 纬度 \frac{2\pi R}{360} \times \cos纬度 = \frac{2\pi \times }{360} \times \cos纬度 3602πR×cos纬度=3602π××cos纬度

≈ .7 × cos ⁡ 纬度米 \approx .926 644 558 737 \times \cos纬度 米 .7×cos纬度米

四、相关代码实现


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; } } 

参考链接 :

  • https://blog.csdn.net/_/article/details/
  • https://codeleading.com/article//
  • https://blog.csdn.net/weixin_/article/details/
  • https://blog.csdn.net/_/article/details/




























































免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/134024.html

(0)
上一篇 2025-07-15 19:20
下一篇 2025-07-15 19:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信