Python根据经纬度算出正方形的四个角的经纬度

Python根据经纬度算出正方形的四个角的经纬度

参考资料

https://blog.csdn.net/u012539364/article/details/74059679

可用于的地图厂商

由于我是用百度地图做项目,目前只在百度地图上做过准确性测试
其他地图厂商没试过

涉及到的公式

地球半径:6378137米
任意地球经度周长:2 * 6378137米 * Math.PI = 40075016.68557849 米
南纬38度地球周长: 40075016.68557849 * Math.cos(38) = 38274592.22115159 米

问:任意经度,纬度38度处1米等于几度

答:

南北方向1米等于:360 / 40075016.68557849 =0.000008983152841195214 度(注:任意经度地球周长 40075016.68557849米)
东西方向1米等于:360 / 38274592.22115159 =0.000009405717451407729 度(注:38纬度地球周长 38274592.22115159 米)
————————————————
参考资料里的

直接贴代码吧

import math

def square(lon, lat, dis):
    '''

    :param lon:经度
    :param lat:纬度
    :param dis:需要的正方形边长
    :return:4个角经纬度的列表  [(),(),(),()]
    '''
    L = []
    dis = dis/2
    perimeter_lon = 2 * 6378137  * math.pi
    north_south_lon_m = 360/perimeter_lon	# 南北方向一米,单位(度)

    perimeter_lat = 40075016.68557849 * math.cos(lon)
    east_west_lat_m = 360/perimeter_lat			# 东西方向一米,单位(度on
    point_lat_1 = lat + north_south_lon_m*dis
    point_lon_1 = lon - east_west_lat_m*dis
    point_1 = (point_lon_1,point_lat_1)

    point_lat_2 = lat + north_south_lon_m*dis
    point_lon_2 = lon + east_west_lat_m*dis
    point_2 = (point_lon_2,point_lat_2)

    point_lat_3 = lat - north_south_lon_m*dis
    point_lon_3 = lon + east_west_lat_m*dis
    point_3 = (point_lon_3,point_lat_3)

    point_lat_4 = lat - north_south_lon_m*dis
    point_lon_4 = lon - east_west_lat_m*dis
    point_4 = (point_lon_4,point_lat_4)
    L.append(point_1)
    L.append(point_2)
    L.append(point_3)
    L.append(point_4)
    return L


lon = 104.14448021513333
lat = 30.66940441906869
dis = 20
L = square(lon, lat, dis)
for i in L:
    print(i)

perimeter_lat = 40075016.68557849 * math.cos(lon)这个位置其实应该是perimeter_lat = 40075016.68557849 * math.cos(lat),但这样算出来他是一个长方形,于是改成了lon

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值