【Python学习】指定两点地理位置经纬度的距离计算

指定两点地理位置经纬度的距离计算

 1 #coding=utf-8
 2
 3 from math import *
 4
 5 # input Lat_A 纬度A
 6 # input Lng_A 经度A
 7 # input Lat_B 纬度B
 8 # input Lng_B 经度B
 9 # output distance 距离(km)
10 def calcDistance(Lat_A, Lng_A, Lat_B, Lng_B):
11     ra = 6378.140  # 赤道半径 (km)
12     rb = 6356.755  # 极半径 (km)
13     flatten = (ra - rb) / ra  # 地球扁率
14     rad_lat_A = radians(Lat_A)
15     rad_lng_A = radians(Lng_A)
16     rad_lat_B = radians(Lat_B)
17     rad_lng_B = radians(Lng_B)
18     pA = atan(rb / ra * tan(rad_lat_A))
19     pB = atan(rb / ra * tan(rad_lat_B))
20     xx = acos(sin(pA) * sin(pB) + cos(pA) * cos(pB) * cos(rad_lng_A - rad_lng_B))
21     c1 = (sin(xx) - xx) * (sin(pA) + sin(pB)) ** 2 / cos(xx / 2) ** 2
22     c2 = (sin(xx) + xx) * (sin(pA) - sin(pB)) ** 2 / sin(xx / 2) ** 2
23     dr = flatten / 8 * (c1 - c2)
24     distance = ra * (xx + dr)
25     return distance
26
27 Lat_A=32.060255; Lng_A=118.796877 # 南京
28 Lat_B=39.904211; Lng_B=116.407395 # 北京
29 distance=calcDistance(Lat_A,Lng_A,Lat_B,Lng_B)
30 print(‘(Lat_A, Lng_A)=({0:10.3f},{1:10.3f})‘.format(Lat_A,Lng_A))
31 print(‘(Lat_B, Lng_B)=({0:10.3f},{1:10.3f})‘.format(Lat_B,Lng_B))
32 print(‘Distance={0:10.3f} km‘.format(distance))

执行结果:

(Lat_A, Lng_A)=(    32.060,   118.797)
(Lat_B, Lng_B)=(    39.904,   116.407)
Distance=   896.533 km
时间: 2024-10-06 20:21:10

【Python学习】指定两点地理位置经纬度的距离计算的相关文章

经纬度 范围 距离 计算

private const double EARTH_RADIUS = 6378.137;//地球半径         private static double RAD = Math.PI / 180.0;        //获取两个经纬度之间的距离         public static double GetDistance(double lng1, double lat1, double lng2, double lat2)        {            double rad

两点经纬度之间距离计算

辅助类 GaoDeCoord.cs GaoDeCoord.cs using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Text; namespace RB.Common { #region 高德地图求范围自有数据 /// <summary> /// 经纬度坐标 /// </summary> public class Deg

Mysql 拿指定经纬度与数据库多条经纬度进行距离计算

公式例如以下,单位米: 第一点经纬度:lng1 lat1 第二点经纬度:lng2 lat2 round(6378.138*2*asin(sqrt(pow(sin( (lat1*pi()/180-lat2*pi()/180)/2),2)+cos(lat1*pi()/180)*cos(lat2*pi()/180)* pow(sin( (lng1*pi()/180-lng2*pi()/180)/2),2)))*1000) 比如: SELECT store_id,lng,lat, ROUND(6378.

指定经纬度与数据库多条经纬度进行距离计算

##121.308364,30.225778 示例对比的坐标 select * from broadcasts where location!='' and sqrt( ( ((121.308364-longitude)*PI()*12656*cos(((30.225778+latitude)/2)*PI()/180)/180) * ((121.308364-longitude)*PI()*12656*cos (((30.225778+latitude)/2)*PI()/180)/180) )

根据经纬度和半径计算经纬度范围,根据两点经纬度计算距离

这些经纬线是怎样定出来的呢?地球是在不停地绕地轴旋转(地轴是一根通过地球南北两极和地球中心的假想线),在地球中腰画一个与地轴垂直的大圆圈,使圈上的每一点都和南北两极的距离相等,这个圆圈就叫作“赤道”.在赤道的南北两边,画出许多和赤道平行的圆圈,就是“纬圈”:构成这些圆圈的线段,叫做纬线.我们把赤道定为纬度零度,向南向北各为90度,在赤道以南的叫南纬,在赤道以北的叫北纬.北极就是北纬90度,南极就是南纬90度.纬度的高低也标志着气候的冷热,如赤道和低纬度地地区无冬,两极和高纬度地区无夏,中纬度地区

PHP版根据经纬度和半径计算出经纬度的范围

百度地图提供了范围搜索的功能,但是它使用的是百度自己的数据,但是有时候我们需要使用自己的数据,显示在地图上.比如给定两个参数:指定位置(某一处的经纬度lnglat)和搜索半径(r),搜索指定范围内的数据.针对这样的需求,基本有三种方法可以解决:1:根据map提供的计算两个坐标之间距离的方法,逐一计算指定位置和我们DB库中的位置的距离s,用s和r进行比较,如果s<r,则在搜索范围内,返给前段标注在地图上.这种方法如果数据量小,可以尝试,如果数据量大,没测试过,但可以想象-- 2:使用搜索引擎自带的

PHP实现搜索地理位置及计算两点地理位置间距离的实例

地理位置搜寻LBS,存储每个地点的经纬度坐标,搜寻附近的地点,建立地理位置索引可提高查询效率.mongodb地理位置索引,2d和2dsphere,对应平面和球面. 1.创建lbs集合存放地点坐标 use lbs; db.lbs.insert( { loc:{ type: "Point", coordinates: [113.332264, 23.156206] }, name: "广州东站" } ) db.lbs.insert( { loc:{ type: &quo

根据两点的经纬度计算两地距离

学着做项目需要根据很据给出的两点经纬度信息计算两地的实际距离,查了查,有公式奉上: google地图提供的方法: 相关c#代码如下 private static double rad(double d) { return d * Math.PI / 180.0; } //根据两点的经纬度计算两地距离 public static double GetDistance(double lon1, double lat1, double lon2, double lat2) { double radLa

【JAVA】两点经纬度直线距离的计算

来自谷歌地图的计算公式: 通过JAVA的Math类各种方法调用.实现上述公式 private static double EARTH_RADIUS = 6378.137;// 单位千米 /** * 角度弧度计算公式 rad:(). <br/> * * 360度=2π π=Math.PI * * x度 = x*π/360 弧度 * * @author chiwei * @param d * @return * @since JDK 1.6 */ private static double get