运用python读取CMA的台风路径数据(txt格式),绘制台风路径,并有全球地图作底图、经纬度划分。
数据集在此
链接:https://pan.baidu.com/s/1pYvefPpyHw0Nr3s_J-7PKA
提取码:93yz
你具体碰到了什么问题呢? 你是否可以从一个最小的 txt 文件出发,写一个解决方案?
首先需要安装相应的库,包括numpy、pandas、matplotlib和basemap等。安装方式可以使用pip命令或者anaconda安装包。然后根据数据集中提供的txt文件数据格式进行读取和处理,建议参考pandas库。读取之后需要提取出数据中需要的经纬度信息,可以使用正则表达式来提取。最后使用basemap库绘制全球地图,并在上面添加经纬度划分,并将台风路径数据绘制于地图上。具体的代码实现可以参考下面的范例:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
# 读取数据文件,并处理BOM头
data = pd.read_csv('typhoon_path.txt', encoding='utf-8-sig')
# 提取经纬度信息
lat_list = []
lon_list = []
for i in range(len(data)):
lat = float(data.loc[i]['纬度(°)'][:-1])
lat_list.append(lat)
lon = float(data.loc[i]['经度(°)'][:-1])
lon_list.append(lon)
# 绘制台风路径图
fig = plt.figure(figsize=(10, 8))
plt.title("Typhoon Path")
map = Basemap(llcrnrlon=70, llcrnrlat=0, urcrnrlon=180, urcrnrlat=60, projection='mill')
map.drawcoastlines(linewidth=0.5)
map.drawcountries(linewidth=0.5)
map.drawmeridians(np.arange(0, 360, 30), labels=[0, 0, 0, 1], linewidth=0.5, fontsize=10)
map.drawparallels(np.arange(-90, 90, 30), labels=[1, 0, 0, 0], linewidth=0.5, fontsize=10)
map.drawmapboundary(fill_color='#3A9FE7')
map.fillcontinents(color='white', lake_color='#3A9FE7')
x, y = map(lon_list, lat_list)
map.plot(x, y, marker='o', color='r')
plt.show()