精华内容
下载资源
问答
  • 两点距离(1.4142135623730951) select st_distance(point(0,0),point(1,1)); select st_distance(point (120.10591, 30.30163),point(120.13026,30.25961)); mysql 5.6 添加 #2.两点球面距离(157249.0357231545m)...
    #1.两点距离(1.4142135623730951)
    select st_distance(point(0,0),point(1,1));
    select st_distance(point (120.10591, 30.30163),point(120.13026,30.25961));
    mysql 5.6 添加
    
    #2.两点球面距离(157249.0357231545m)
    select st_distance_sphere(point(0,0),point(1,1));
    select st_distance_sphere(point (120.10591, 30.30163),point(120.13026,30.25961));
    This function was added in MySQL 5.7.6.
    

    下面函数是计算球面距离的公式,传入的参数是经纬度(经度-180~180,纬度-90~90),返回的值以m为单位的距离。

    ST_Distance_Sphere(g1, g2 [, radius])

    如果mysql版本不支持上述函数怎么办?自己实现喽!下面是我自己写的球面距离函数

    delimiter //
    drop function if exists Spherical_Distance;
    create function Spherical_Distance(jin1 double,wei1 double,jin2 double,wei2 double) returns double
    NO SQL
    BEGIN
      declare j1 double;
      declare w1 double;
      declare j2 double;
      declare w2 double;
      declare R double;
      set j1 = jin1*PI()/180;
      set w1 = wei1*PI()/180;
      set j2 = jin2*PI()/180;
      set w2 = wei2*PI()/180;
      set R = 6370986;
      return R*acos(cos(w1)*cos(w2)*cos(j1-j2)+sin(w1)*sin(w2));        
    END
    //
    delimiter ;
    

    调用方式

    select Spherical_Distance(120.10591,30.30163,120.13026,30.25961);
    计算出的值和st_distance_sphere函数计算结果相差不大。

    展开全文
  • python:经纬度求两点距离、三点面积

    千次阅读 2018-05-22 10:15:25
    以下为给出地球上两点经纬度,计算两点之间的球面距离。给出三点,三角形面积。先给出半正失公式(haversine formula):整理两个式子可得:其中:d为两点的球面距离r为圆的半径,在这里我们假设地球为均匀球体(r=6371...

    给出地球上两点的经纬度,计算两点之间的球面距离。给出地球上三点的经纬度,求形成的三角形面积。对于这样的需求,可以通过使用半正失公式来计算得到我们想要的距离,面积值。

    先给出半正失公式(haversine formula):


    先看第一个式,等号的右边,输入参数有φ、λ,等号的右边有d、r,其中φ表示纬度,λ表示经度,d是我们要的两点的距离,

    r是地球半径,d/r表示两点在圆上的弧度θ。通过整理两个式子可得:



    也就是说,只要根据上面最后这行式子,带入相应的经纬度值,以及地球半径,就可以得到我们想要的两点的球面距离,

    在这里我们假设地球为均匀球体(r=6371.393公里)。

    具体的python代码实现如下:

    import math
    class cal_distance(object):
        def __init__(self,**kwargs):
            self.lat1 = kwargs.get('lat1')
            self.lon1 = kwargs.get('lon1')
            self.lat2 = kwargs.get('lat2')
            self.lon2 = kwargs.get('lon2')
            
        def twopoint_distance(self):
            R=6371.393
            dlat=self.deg2rad(self.lat2-self.lat1)
            dlon=self.deg2rad(self.lon2-self.lon1)
            a=math.sin(dlat/2)**2+math.cos(self.deg2rad(self.lat1))*math.cos(self.deg2rad(self.lat2))*math.sin(dlon/2)**2
            c=2*math.atan2(math.sqrt(a),math.sqrt(1-a))
            return R*c
            
        def deg2rad(self,deg):
            return deg*(math.pi/180)

    定义一个cal_distance类,功能为输入参数为两点的经纬度计算两点的球面距离。deg2reg函数为度数转弧度函数,twopoint_distance为距离计算功能函数,输出两点距离,单位为千米(公里)。

    from cal_distance import cal_distance
    def run():
        point1_lat = 39.2186266952
        point2_lat = 39.08579871
        point1_lon = 117.8175961241
        point2_lon = 117.7040162
        Distance = cal_distance(lat1=point1_lat,lon1=point1_lon1,lat2=point2_lat,lon2=point2_lon)
        distance = Distance.twopoint_distance()
        print distance
        
    if __name__=='__main__':
        run()

    这段代码为具体的函数调用部分,实例化对象,调用twopoint_distance(),就可以得到我们想要的距离值了。

    在现在的代码基础上,想要计算三个点围成的面积就很容易实现了。三个点两两求出三条边的距离,利用三边求面积公式,就可以得到三角形的面积值。下面给出类的定义部分:

    import math
    class cal_area(object):
        def __init__(self,**kwargs):
            self.lat1 = kwargs.get('lat1')
            self.lon1 = kwargs.get('lon1')
            self.lat2 = kwargs.get('lat2')
            self.lon2 = kwargs.get('lon2')
            self.lat3 = kwargs.get('lat3')
            self.lon3 = kwargs.get('lon3')
            
        def twopoint_distance(self,lat1,lon1,lat2,lon2):
            R=6371.393
            dlat=self.deg2rad(lat2-lat1)
            dlon=self.deg2rad(lon2-lon1)
            a=math.sin(dlat/2)**2+math.cos(self.deg2rad(self.lat1))*math.cos(self.deg2rad(self.lat2))*math.sin(dlon/2)**2
            c=2*math.atan2(math.sqrt(a),math.sqrt(1-a))
            return R*c
            
        def deg2rad(self,deg):
            return deg*(math.pi/180)
        
        def area(self):
            distance12=self.twopoint_distance(self.lat1,self.lon1,self.lat2,self.lon2)
            distance13=self.twopoint_distance(self.lat1,self.lon1,self.lat3,self.lon3)
            distance23=self.twopoint_distance(self.lat2,self.lon2,self.lat3,self.lon3)
            p=self.half_perimeter(distance12,distance23,distance13)
            s=math.sqrt(p*(p-distance12)*(p-distance23)*(p-distance13))
            return s
            
        def half_perimeter(a,b,c):
            return (a+b+c)/2
    展开全文
  • 问题:利用ArcGIS平台开发项目中有个需求,用GPS采集到两个点的经纬度求两点距离 代码: public static void main(String [] args) {  后面再添加代码 } 报错:   解决: 这个方法写的没有问题,也...

     问题:利用ArcGIS平台开发项目中有个需求,用GPS采集到两个点的经纬度,求两点的距离

    代码:  

    public static void main(String [] args)

    {

      后面再添加代码

    }

    报错:

       

    解决:

    这个方法写的没有问题,也没有报错,运行就出错,整了老半天啊,很郁闷的!

    原来是我的AO包引的时候是来自从别人机器拷来的arcobjects.jar包,而不是自己安装ArcInfo下的jar包(D:\Program Files\ArcGIS\Desktop10.0\java\lib),

    可是这个问题也太那个了,只是引用一个jar包而已,为什么非要自己安装的目录下才可以呢?

    暂时摸不透,先留个笔记先,谁知道的说声~

     

     

    展开全文
  • Python根据经纬度求两点距离

    千次阅读 2016-03-02 15:44:46
    Python程序根据经纬度求两点之间距离

    Python程序根据经纬度求两点之间距离的两种方法

    from math import *
    
    '''计算两点之间直线距离'''
    def get_distance1(lon_a, lat_a, lon_b, lat_b):
        radlat1 = radians(lat_a)
        radlat2 = radians(lat_b)
        a = radlat1 - radlat2
        b = radians(lon_a) - radians(lon_b)
        s = 2 * asin(sqrt(pow(sin(a/2),2) + cos(radlat1) * cos(radlat2)*pow(sin(b/2),2)))
        earth_radius = 6378137
        s = s * earth_radius
        return s
    
    '''计算两点之间直线距离'''
    def get_distance2(lon_a, lat_a, lon_b, lat_b):
        if abs(lon_a - lon_b) < 0.000001 and abs(lat_a - lat_b) < 0.000001:
            return 0
        re = 6378140  # 赤道半径 (m)
        rp = 6356755  # 极半径 (m)
        oblateness = (re - rp) / re  # 地球扁率
        rad_lat_a = radians(lat_a)
        rad_lon_a = radians(lon_a)
        rad_lat_b = radians(lat_b)
        rad_lon_b = radians(lon_b)
        atan_a = atan(rp / re * tan(rad_lat_a))
        atan_b = atan(rp / re * tan(rad_lat_b))
        tmp = acos(sin(atan_a) * sin(atan_b) + cos(atan_a) * cos(atan_b) * cos(rad_lon_a - rad_lon_b))
        if tmp == 0:
            return 0
        c1 = (sin(tmp) - tmp) * (sin(atan_a) + sin(atan_b)) ** 2 / cos(tmp / 2) ** 2
        c2 = (sin(tmp) + tmp) * (sin(atan_a) - sin(atan_b)) ** 2 / sin(tmp / 2) ** 2
        dr = oblateness / 8 * (c1 - c2)
        distance = re * (tmp + dr)
        return distance
    
    def main():
        lon_a = 116.320866
        lat_a = 39.814506
        lon_b = 116.301322
        lat_b = 39.87874
        print(get_distance1(lon_a, lat_a, lon_b, lat_b))
        print(get_distance2(lon_a, lat_a, lon_b, lat_b))
    
    if __name__ == '__main__':
        main()
    展开全文
  • 已知两点经纬度求两点距离

    热门讨论 2010-06-17 10:50:22
    程序可以直接下载使用; 可以根据经纬度坐标两点距离; 计算结果准确无误且精确度高
  • 根据两点经纬度获取两点距离 import java.awt.geom.Point2D; public class AmapUtils { private static final double EARTH_RADIUS = 6371393; // 平均半径,单位:m public static void main(String[] args) { ...
  • 主要介绍了js根据百度地图提供经纬度计算两点距离,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 根据两点经纬度求距离
  • C# 已知经纬度计算两点距离函数

    千次阅读 2016-09-17 11:52:03
    C# 已知经纬度计算两点距离函数
  • python 根据经纬度计算两点距离

    千次阅读 2019-05-07 13:45:40
    def calcDistance(Lng_A, Lat_A, Lng_B, Lat_B): ... 根据两个点的经纬度求两点之间的距离 :param Lng_A: 经度1 :param Lat_A: 维度1 :param Lng_B: 经度2 :param Lat_B: 维度2 :return: 单位米 """ ...
  • 前言: app可以获取当前所在位置的经纬度,根据当前经纬度,查询当前位置距离其他地点之间的距离; 方案一:高德地图(百度地图,腾讯地图等)提供api。...方案三:使用sql在代码中计算两点距离 由于地球是球体,根据:
  • js根据经纬度计算两点距离

    千次阅读 2018-05-18 11:18:35
    js根据经纬度计算两点距离1.html&lt;button type="button" onclick="distanceByLnglat(116.95400,39.95400,116.95300,39.95300);"&gt; test me &lt;/button&gt;2.js需要...
  • 经纬度计算两点距离的简单算法

    热门讨论 2009-10-30 14:34:45
    经纬度计算两点距离的简单算法,含VC、VB、Excel不同版本、
  • 经纬度 距离
  • 行业教育软件-学习软件-经纬度计算两点距离工具 1.01.zip
  • sqlserver根据经纬度计算两点距离sqlserver根据经纬度计算两点距离sqlserver根据经纬度计算两点距离sqlserver根据经纬度计算两点距离
  • 首先,你要想了解清楚经纬度的具体定义,看完后再往下看,便会一目了然。 将地球看成一个球体,A(WA,JA)、B(WB,JB)两点分别为两个点的位置,其中W为纬度,J为经度,O...添加辅助线后的两点距离示意图如图所示。
  • 该软件可用经纬度计算出两点距离,方便计算。
  • const double EarthRadiusKm = 6371.012;//地球半径 单位 :千米 .../*通过两点间的经纬度求两点间的地表距离 */ float GetDistance(float Alongitude, float Alatitude, float Blongitude, float Blati
  • python通过两点经纬度计算两点间直线距离
  • 通过两点经纬度计算两点距离 下面是具体的 代码片. // 地球半径 private static final double EARTH_RADIUS = 6370996.81; // 弧度 private static double radian(double d) { return d * Math.PI / 180.0...
  • 经纬度两点距离

    2017-08-06 21:01:18
    下面就是计算球面间两点(lat0, lng)-(lat1, lng1)之间距离的函数。 from math import sin, asin, cos, radians, fabs, sqrt EARTH_RADIUS=6371 # 地球平均半径,6371km def hav(theta): s = sin(theta / 2) ...
  • 根据两点经纬度求方位角和距离

    万次阅读 多人点赞 2018-04-17 14:43:58
    这里主要解决四个问题:1、已知两点经纬度求两点距离;2、已知两点经纬度一点相对于另一点航向;3、已知一点经纬度及与另一点距离和航向,另一点经纬度;总声明:因为地球偏心率极低,所以此处将地球看做...
  • //根据经纬度查询两地距离 private static double rad(double d) { return d * Math.PI / 180.0; } private static double EARTH_RADIUS = 6378.137; //地球半径 public static double getDistanc...
  • 假想线),在地球中腰画一个与地轴垂直的大圆圈,使圈上的每一点都和南北两极的距离相等,这个圆圈 就叫作“赤道”。在赤道的南北两边,画出许多和赤道平行的圆圈,就是“纬圈”;构成这些圆圈的线段, 叫做纬线。...
  • 地球经纬度计算两点距离

    千次阅读 2015-12-25 12:42:03
    现在利用——地球经纬度计算两点距离——的基本原理计算气辉层所对应的经纬度距离。  基本原理如下: 纬度分为60分,每一分再分为60秒以及秒的小数。没错,60进制,纬度线投射在图上看似水平的平行线,但...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,557
精华内容 5,022
关键字:

经纬度求两点距离