本项目使用的数据是加拿大某城市的,加拿大位于北美洲北部,西临太平洋,东濒大西洋,在北纬41°~83°、西经52°~141°之间。 根据提示,在右侧编辑器补充代码,逐行读取文件中的数据,并将数据存储于二维列表中,将每个子列表中可转为数值类型的数据均转为数值类型。输入一个正整数做为随机数种子,随机抽取两个站点的数据,应用本关提供的计算方法计算并这两个站点之间的距离。 输入一个整数做随机数种子,输出抽取到的点的经纬度和两点间距离。
时间: 2023-06-15 18:04:19 浏览: 170
```python
import random
# 读取文件中的数据
data = []
with open('data.txt', 'r') as f:
for line in f:
row = line.strip().split(',')
data.append(row)
# 将每个子列表中可转为数值类型的数据均转为数值类型
for i in range(len(data)):
for j in range(len(data[i])):
if data[i][j].isdigit():
data[i][j] = int(data[i][j])
else:
try:
data[i][j] = float(data[i][j])
except ValueError:
pass
# 输入随机数种子,随机抽取两个站点的数据
random.seed(2022) # 此处的随机数种子为2022,可以根据需要修改
station1 = random.choice(data)
station2 = random.choice(data)
# 计算两个站点之间的距离
lat1, lon1 = station1[1], station1[2]
lat2, lon2 = station2[1], station2[2]
R = 6371 # 地球半径,单位为千米
dLat = (lat2 - lat1) * (3.1415926 / 180)
dLon = (lon2 - lon1) * (3.1415926 / 180)
a = math.sin(dLat / 2) * math.sin(dLat / 2) + math.cos(lat1 * (3.1415926 / 180)) * math.cos(lat2 * (3.1415926 / 180)) * math.sin(dLon / 2) * math.sin(dLon / 2)
c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a))
distance = R * c
# 输出抽取到的点的经纬度和两点间距离
print("站点1:({:.2f}, {:.2f})".format(lat1, lon1))
print("站点2:({:.2f}, {:.2f})".format(lat2, lon2))
print("两站点之间的距离为:{:.2f}千米".format(distance))
```
需要注意的是,此处计算两点间距离的公式是 Haversine Formula,其中涉及到的常数值可能需要根据实际情况调整。
阅读全文