经纬度计算点对点距离

纬度1度大约111km
纬度1分大约1.85km
纬度1秒大约30.9km
经线上跨纬度1度=111km
纬线上跨经度1度=111*cosAkm,其中A是纬度

地球半径R=6370.996km,地球上的点(x1,y1),(x2,y2)

两点间的距离

d=R*arcos[cos(y1)*cos(y2)*cos(x1-x2)+sin(y1)*sin(y2)]

创建测试表

CREATE TABLE DEMO(
    name varchar(50) NOT NULL,
    log varchar(50) NOT NULL,
    lat varchar(50) NOT NULL
)

添加测试数据

INSERT INTO
    DEMO(
        name,
        log,
        lat
    ) values
('上海肯德基',121.439926,31.331578),
('星巴克',121.511039,31.261306),
('避风塘',121.527496,31.230014);

db2中计算地球上点和点的距离计算公式

radians将度转换为弧度,测试数据库类型是varchar,CAST是DB2或oracle中强制类型转换函数,使用方法如下:

CAST ( expression AS data_type )
SELECT
    name,log,lat,DISTANCE
FROM
    (SELECT name,log,lat,
        6370.996*(
            ACOS(
                cos(radians(CAST(31.331578 as DECIMAL(15,6))))*
                cos(radians(CAST(lat as DECIMAL(15,6))))*
                cos(radians(CAST(121.439926 as DECIMAL(15,6)))-radians(CAST(log as DECIMAL(15,6))))+
                sin(radians(CAST(31.331578 as DECIMAL(15,6))))*
                sin(radians(CAST(lat as DECIMAL(15,6))))
            )
        )AS DISTANCE
    FROM
        DEMO
    )

查询结果

经纬度.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容