怎么用python自制计算公式_自制计算经纬度位移 python 程序

前两天,我的老同学发邮件给我,希望我能制作一个能多点定位的,可以计算经度和纬度距离的在线计算器来帮助他的工作。当然还不止这些,同时他还希望能做以下相对的排序。

比如说,同一个位置的经纬度开始,移动向东南西北等不同方向位移的经纬度位置。

呵呵,真是个麻烦的家伙,现在虽然在做 IT,但荒废了的地理知识还是记得些的,好吧,马上有了思路,于是便答应了他。

说干就干,我想语言就选择精于计算的 Python 来编码,首先我先要推导一个完整的理论,然后再将它们变成代码。

经和纬通常会以度作为计算单位,但在实际的计算中运用更多的是弧度的净值。 Python 可以默认度的条件;弧度将只能用于内部功能实现。我将使用一个实例,即现在有一个半径为 r,弧度的角度为 θ 长度为 rθ 的圆。好吧,我们假设地球是一个完美的球体,其实地理的运算,通常是把地球作为一个完美圆体的。

移动向北或南

设 R 是地球的半径,弧度的角 φ 相对地球表面的弧长为 M=Rφ,因此一公里的弧长 M 对应 φ = m/R 角度。那么理想情况下,向正南正北移动将不改变经度。

移动向东或西

这个计算相对复杂一些,如果是平行于赤道,除了经纬度,那么计算方式就同上。但经纬度一旦发生变化,这种距离相对的经纬度也将发生剧烈变化。例如,一个沿着北极圈行进的经度,几乎不可能像在赤道行进一样。

那么假设你是在赤道以北的北纬 φ 度。按等价纬度 φ 为周长的圆,此圆定平行于赤道,是 COSφ 倍或以上的赤道周长大小。因此,在纬度 φθ 弧度的角度描画出一个长度为 θ,M = R^COSφ的弧线。那么一公里的距离 m 向东或向西应对应 θ = M/(R COSφ) 的经度变化,向正东正西移动不会改变这个值。

这个就是这个工程与弧度角度的推导,Python 的余弦函数也会是在一个弧度上。Rikku 之所以像一个名侦探一样道出精彩的推理,是为 Rikku 曾经没少为这个遗忘已久的知识和运算绞尽脑汁所做的掩饰而已。

哦对了,经度和纬度,通常表示为度,所以 Python 的函数输入和输出需要做一些调整。

import math

earth_radius = 3960.0

degrees_to_radians = math.pi/180.0

radians_to_degrees = 180.0/math.pi

def change_in_latitude(miles):

"Given a distance north, return the change in latitude."

return (miles/earth_radius)*radians_to_degrees

def change_in_longitude(latitude, miles):

"Given a latitude and a distance west, return the change in longitude."

# Find the radius of a circle around the earth at given latitude.

r = earth_radius*math.cos(latitude*degrees_to_radians)

return (miles/r)*radians_to_degrees

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值