python3产生随机经纬度

import random
import math

# 这里的参数包括一个基准点,和一个距离基准点的距离
def generate_random_gps(base_log=None, base_lat=None, radius=None):
    radius_in_degrees = radius / 111300
    u = float(random.uniform(0.0, 1.0))
    v = float(random.uniform(0.0, 1.0))
    w = radius_in_degrees * math.sqrt(u)
    t = 2 * math.pi * v
    x = w * math.cos(t)
    y = w * math.sin(t)
    longitude = y + base_log
    latitude = x + base_lat
    # 这里是想保留6位小数点
    loga = '%.6f' % longitude
    lata = '%.6f' % latitude
    return loga, lata
    
log1, lat1 = generate_random_gps(base_log=120.7, base_lat=30, radius=1000000)
print(log1)
好的,您的要求已经收到。以下是 Python 代码实现: ```python import random import math # 给定经纬度范围(上下界) lat_range = [30.0, 31.0] lon_range = [120.0, 121.0] # 给定移动速度,单位 m/min speed = 70 # 生成 5 个初始位置,随机分布在经纬度范围内 points = [] for i in range(5): lat = random.uniform(lat_range[0], lat_range[1]) lon = random.uniform(lon_range[0], lon_range[1]) points.append((lat, lon)) # 计算每个点每分钟的经纬度变化量,按斜率模拟直线运动 deltas = [] for i in range(5): angle = random.uniform(0, 2 * math.pi) # 随机生成一个角度 dx = speed * math.cos(angle) / 60 # 计算由该角度决定的经度增量 dy = speed * math.sin(angle) / 60 # 计算由该角度决定的纬度增量 deltas.append((dy, dx)) # 模拟一小时内每分钟的运动,更新每个点的坐标 for t in range(60): for i in range(5): lat, lon = points[i] dy, dx = deltas[i] lat += dy # 更新纬度坐标 lon += dx # 更新经度坐标 # 检查是否越界,如果越界则反弹(反向移动) if lat < lat_range[0] or lat > lat_range[1]: dy = -dy if lon < lon_range[0] or lon > lon_range[1]: dx = -dx deltas[i] = (dy, dx) # 更新经纬度增量 points[i] = (lat, lon) # 更新坐标 # 输出每分钟每个点的经纬度坐标 print(f"{t+1} min:") for i in range(5): print(f"Point {i+1}: {points[i]}") ``` 每个点的初始位置、运动路径和终止位置都是随机的,所以每次运行的结果都可能不同。结果中每个点的经度和纬度是一对浮点数,表示该点在当前分钟的位置。每个点每分钟的移动距离是固定的,为 $70/60$ 米,如果该点越出了经纬度范围,则会反弹回来。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值