逐行读取文件中的数据,并将数据存储于二维列表中,将每个子列表中可转为数值类型的数据均转为数值类型。输入一个正整数做为随机数种子,随机抽取两个站点的数据,应用本关提供的计算方法计算并这两个站点之间的距离。 输入一个整数做随机数种子,输出抽取到的点的经纬度和两点间距离。
时间: 2024-02-18 21:06:10 浏览: 64
好的,我可以帮你解决这个问题。
首先,我需要明确你的文件格式。假设你的数据文件每行包含站点名称、经度、纬度和其他信息,以逗号分隔。那么你可以按照以下代码读取并处理数据:
```python
import random
# 读取数据文件
data = []
with open('data.txt', 'r') as f:
for line in f:
fields = line.strip().split(',')
# 将可转为数值类型的数据转为数值类型
data.append([fields[0], float(fields[1]), float(fields[2]), fields[3:]])
# 随机抽取两个站点
random.seed(123) # 设置随机数种子
idx1, idx2 = random.sample(range(len(data)), 2)
site1, site2 = data[idx1], data[idx2]
# 计算两点间距离
def distance(lat1, lon1, lat2, lon2):
R = 6371 # 地球半径,单位为公里
dlat = (lat2 - lat1) * math.pi / 180
dlon = (lon2 - lon1) * math.pi / 180
a = math.sin(dlat / 2) * math.sin(dlat / 2) + \
math.cos(lat1 * math.pi / 180) * math.cos(lat2 * math.pi / 180) * \
math.sin(dlon / 2) * math.sin(dlon / 2)
c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a))
return R * c
lat1, lon1 = site1[2], site1[1]
lat2, lon2 = site2[2], site2[1]
dist = distance(lat1, lon1, lat2, lon2)
# 输出结果
print('站点1:{},经度:{},纬度:{}'.format(site1[0], lat1, lon1))
print('站点2:{},经度:{},纬度:{}'.format(site2[0], lat2, lon2))
print('两点间距离:{:.2f} km'.format(dist))
```
在上面的代码中,我使用了 Python 自带的 `random` 模块来随机抽取两个站点,使用了 `math` 模块来计算两点间距离。请将代码中的 `'data.txt'` 替换为你的数据文件名,并将随机数种子改为你需要的值。运行代码后,你将获得抽取的两个站点的经纬度和它们之间的距离。
阅读全文