请用python写一段代码,要求在一定经纬度范围内随机生成五个点,设这五个点的移动速度为70m/min,让这些点在该经纬度范围内随机走1h,求出在每个点每分钟的经纬度坐标,并将结果写入excel表格,excel表格一列为节点标号,一列为时间,一列为纬度坐标,一列为经度坐标。
时间: 2024-04-29 08:27:09 浏览: 174
基于python实现在excel中读取与生成随机数写入excel中
可以使用Python的random库来生成随机经纬度,然后使用for循环来模拟每个节点在1小时内的随机行走路径。下面是一个样例代码:
```python
import random
import pandas as pd
# 经纬度范围
min_lat, max_lat = 30, 31
min_lon, max_lon = 120, 121
# 生成5个随机节点
nodes = [i+1 for i in range(5)]
locs = [(random.uniform(min_lat, max_lat), random.uniform(min_lon, max_lon)) for _ in range(5)]
# 节点的速度为 70m/min
speed = 70
# 模拟节点在1小时内的随机行走
num_steps = 60 # 模拟1小时,每分钟模拟一个步长
coords = {n: [] for n in nodes}
for i in range(num_steps):
for n, loc in zip(nodes, locs):
# 每次随机生成一个步长
d_lat = random.uniform(-1, 1) / 1000 # 0.01度相当于1.1km
d_lon = random.uniform(-1, 1) / 1000
lat, lon = loc
# 更新节点位置
new_lat = lat + d_lat
new_lon = lon + d_lon
if new_lat > max_lat or new_lat < min_lat:
new_lat = lat - d_lat # 越界则往回走
if new_lon > max_lon or new_lon < min_lon:
new_lon = lon - d_lon
locs[n-1] = (new_lat, new_lon)
# 记录节点坐标
coords[n].append((new_lat, new_lon))
# 将结果写入excel表格
data = []
for n in nodes:
for i in range(num_steps):
time = f"{i+1:02d}:00"
lat, lon = coords[n][i]
data.append((n, time, lat, lon))
df = pd.DataFrame(data, columns=["Node", "Time", "Latitude", "Longitude"])
df.to_excel("node_coords.xlsx", index=False)
print("结果已写入:node_coords.xlsx")
```
这段代码会生成5个随机节点,并模拟它们在1小时内的随机行走轨迹,将轨迹以每分钟的经纬度坐标记录在excel表格中。注意需要安装pandas库以写入excel表格。
阅读全文