日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Python繪圖實現臺風路徑可視化代碼實例

瀏覽:46日期:2022-07-07 13:15:50

臺風是重大災害性天氣,臺風引起的直接災害通常由三方面造成,狂風、暴雨、風暴潮,除此以外臺風的這些災害極易誘發城市內澇、房屋倒塌、山洪、泥石流等次生災害。正因如此,臺風在科研和業務工作中是研究的重點。希望這次臺風路徑可視化可以給予大家一點點幫助。

臺風路徑的獲取

中國氣象局(CMA)

中國氣象局(CMA)的臺風最佳路徑數據集(BST),BST是之后對歷史臺風路徑進行校正后發布的,其經緯度、強度、氣壓具有更高的可靠性,但是時間分辨率為6小時,部分3小時,這一點不如觀測數據。下載地址:

http://tcdata.typhoon.org.cn/

溫州臺風網

溫州臺風網的數據是實時發布數據的記錄,時間分辨率最高達1小時,對于臺風軌跡具有更加精細化的表述。下載地址:

http://www.wztf121.com/

示例

導入模塊并讀取數據,使用BST的2018年臺風路徑數據作為示例,已經將原始的txt文件轉換為xls文件。

import os, globimport pandas as pdimport numpy as npimport shapely.geometry as sgeomimport matplotlib.pyplot as pltfrom matplotlib.image import imreadfrom matplotlib.animation import FuncAnimationimport matplotlib.lines as mlinesimport cartopy.crs as ccrsimport cartopy.feature as cfeatfrom cartopy.mpl.ticker import LongitudeFormatter,LatitudeFormatterimport cartopy.io.shapereader as shpreaderimport cartopy.io.img_tiles as cimgtfrom PIL import Imageimport warnings warnings.filterwarnings(’ignore’)df = pd.read_csv(’./2018typhoon.csv’)

定義等級色標

def get_color(level): global color if level == ’熱帶低壓’ or level == ’熱帶擾動’: color=’#FFFF00’ elif level == ’熱帶風暴’: color=’#6495ED’ elif level == ’強熱帶風暴’: color=’#3CB371’ elif level == ’臺風’: color=’#FFA500’ elif level == ’強臺風’: color=’#FF00FF’ elif level == ’超強臺風’: color=’#DC143C’ return color

定義底圖函數

def create_map(title, extent): fig = plt.figure(figsize=(12, 8)) ax = fig.add_subplot(1, 1, 1, projection=ccrs.PlateCarree()) url = ’http://map1c.vis.earthdata.nasa.gov/wmts-geo/wmts.cgi’ layer = ’BlueMarble_ShadedRelief’ ax.add_wmts(url, layer) ax.set_extent(extent,crs=ccrs.PlateCarree()) gl = ax.gridlines(draw_labels=False, linewidth=1, color=’k’, alpha=0.5, linestyle=’--’) gl.xlabels_top = gl.ylabels_right = False ax.set_xticks(np.arange(extent[0], extent[1]+5, 5)) ax.set_yticks(np.arange(extent[2], extent[3]+5, 5)) ax.xaxis.set_major_formatter(LongitudeFormatter()) ax.xaxis.set_minor_locator(plt.MultipleLocator(1)) ax.yaxis.set_major_formatter(LatitudeFormatter()) ax.yaxis.set_minor_locator(plt.MultipleLocator(1)) ax.tick_params(axis=’both’, labelsize=10, direction=’out’) a = mlines.Line2D([],[],color=’#FFFF00’,marker=’o’,markersize=7, label=’TD’,ls=’’) b = mlines.Line2D([],[],color=’#6495ED’, marker=’o’,markersize=7, label=’TS’,ls=’’) c = mlines.Line2D([],[],color=’#3CB371’, marker=’o’,markersize=7, label=’STS’,ls=’’) d = mlines.Line2D([],[],color=’#FFA500’, marker=’o’,markersize=7, label=’TY’,ls=’’) e = mlines.Line2D([],[],color=’#FF00FF’, marker=’o’,markersize=7, label=’STY’,ls=’’) f = mlines.Line2D([],[],color=’#DC143C’, marker=’o’,markersize=7, label=’SSTY’,ls=’’) ax.legend(handles=[a,b,c,d,e,f], numpoints=1, handletextpad=0, loc=’upper left’, shadow=True) plt.title(f’{title} Typhoon Track’, fontsize=15) return ax

定義繪制單個臺風路徑方法,并繪制2018年第18號臺風溫比亞。

def draw_single(df): ax = create_map(df[’名字’].iloc[0], [110, 135, 20, 45]) for i in range(len(df)): ax.scatter(list(df[’經度’])[i], list(df[’緯度’])[i], marker=’o’, s=20, color=get_color(list(df[’強度’])[i])) for i in range(len(df)-1): pointA = list(df[’經度’])[i],list(df[’緯度’])[i] pointB = list(df[’經度’])[i+1],list(df[’緯度’])[i+1] ax.add_geometries([sgeom.LineString([pointA, pointB])], color=get_color(list(df[’強度’])[i+1]),crs=ccrs.PlateCarree()) plt.savefig(’./typhoon_one.png’)draw_single(df[df[’編號’]==1818])

Python繪圖實現臺風路徑可視化代碼實例

定義繪制多個臺風路徑方法,并繪制2018年全年的全部臺風路徑。

def draw_multi(df): L = list(set(df[’編號’])) L.sort(key=list(df[’編號’]).index) ax = create_map(’2018’, [100, 180, 0, 45]) for number in L: df1 = df[df[’編號’]==number] for i in range(len(df1)-1): pointA = list(df1[’經度’])[i],list(df1[’緯度’])[i] pointB = list(df1[’經度’])[i+1],list(df1[’緯度’])[i+1] ax.add_geometries([sgeom.LineString([pointA, pointB])], color=get_color(list(df1[’強度’])[i+1]),crs=ccrs.PlateCarree()) plt.savefig(’./typhoon_multi.png’)draw_multi(df)

Python繪圖實現臺風路徑可視化代碼實例

定義繪制單個臺風gif路徑演變方法,并繪制2018年第18號臺風的gif路徑圖。

def draw_single_gif(df): for state in range(len(df.index))[:]: ax = create_map(f’{df['名字'].iloc[0]} {df['時間'].iloc[state]}’, [110, 135, 20, 45]) for i in range(len(df[:state])): ax.scatter(df[’經度’].iloc[i], df[’緯度’].iloc[i], marker=’o’, s=20, color=get_color(df[’強度’].iloc[i])) for i in range(len(df[:state])-1): pointA = df[’經度’].iloc[i],df[’緯度’].iloc[i] pointB = df[’經度’].iloc[i+1],df[’緯度’].iloc[i+1] ax.add_geometries([sgeom.LineString([pointA, pointB])], color=get_color(df[’強度’].iloc[i+1]),crs=ccrs.PlateCarree()) print(f’正在繪制第{state}張軌跡圖’) plt.savefig(f’./{df['名字'].iloc[0]}{str(state).zfill(3)}.png’, bbox_inches=’tight’) # 將圖片拼接成動畫 imgFiles = list(glob.glob(f’./{df['名字'].iloc[0]}*.png’)) images = [Image.open(fn) for fn in imgFiles] im = images[0] filename = f’./track_{df['名字'].iloc[0]}.gif’ im.save(fp=filename, format=’gif’, save_all=True, append_images=images[1:], duration=500)draw_single_gif(df[df[’編號’]==1818])

Python繪圖實現臺風路徑可視化代碼實例

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
电影91久久久| 麻豆精品av| 98精品久久久久久久| 六月丁香综合在线视频| 国产调教精品| 久久wwww| 黄色精品视频| 美女福利一区二区三区| 国产在线看片免费视频在线观看| 麻豆精品在线视频| 精品国产一级| 91综合视频| 国产在线看片免费视频在线观看| 国产精品久久久一区二区| 国产精品久久久网站| 精品免费在线| 久久毛片亚洲| 欧美日韩国产高清电影| 免费日韩av片| 日韩精品导航| 国产精品久久久网站| 国产在线一区不卡| 国产精品亚洲一区二区三区在线观看| 91精品精品| 日韩专区欧美专区| 欧美在线看片| 国产高潮在线| 亚洲国产综合在线看不卡| 亚洲一区二区三区免费在线观看| 日韩影院精彩在线| 国产欧美二区| 日本蜜桃在线观看视频| 国产韩日影视精品| 亚洲一二三区视频| 国产精品美女在线观看直播| 国产aⅴ精品一区二区四区| 香蕉成人av| 午夜在线精品偷拍| 国产精品一区毛片| 日韩中文欧美| 一区二区电影在线观看| 国产精品毛片视频| 久久久久国产精品一区二区| 亚洲一区日韩| 欧美三级第一页| 成人小电影网站| 亚洲久久一区| 精品国产精品国产偷麻豆 | 亚洲综合电影一区二区三区| 日韩精品a在线观看91| 精品少妇一区| 一本一本久久| 美女久久精品| 在线一区电影| 免费在线亚洲| 国产亚洲永久域名| 国产精品久久久一区二区| 欧美精品资源| 亚洲狼人精品一区二区三区| 九九久久国产| 亚洲专区欧美专区| 久久中文欧美| 日本欧洲一区二区| 水蜜桃精品av一区二区| 日韩中文字幕av电影| 久久免费精品| 最近国产精品视频| 日韩精品影视| 久久99久久久精品欧美| 中文欧美日韩| 手机在线电影一区| 日韩avvvv在线播放| 久久青草久久| 国产精品15p| 在线看片日韩| 成人免费网站www网站高清| 97精品久久| 欧美日韩国产在线一区| 欧美a在线观看| 亚洲日产av中文字幕| 日韩精品一区二区三区免费观看| 国产精品一区二区中文字幕| 久久亚洲视频| 国模 一区 二区 三区| 国产一区二区三区网| 亚洲精选91| 国产婷婷精品| 日韩精品久久久久久久电影99爱| 国产精品99久久免费| 中文字幕一区二区三区四区久久| 999久久久精品国产| 久久精品国产福利| 日本成人中文字幕在线视频| 黄色亚洲大片免费在线观看| a国产在线视频| 国产精品v日韩精品v欧美精品网站| 综合国产精品| 日韩中文欧美在线| 伊人影院久久| 欧美特黄一级大片| 国产网站在线| 久久久久久久欧美精品| 久久精品国产精品亚洲毛片| 日韩有吗在线观看| 少妇精品导航| 免费看av不卡| 国产高清不卡| 欧美成人精品午夜一区二区| 日本亚洲欧洲无免费码在线| 中文亚洲欧美| 亚洲激情五月| 欧美亚洲在线日韩| 日韩专区精品| 国产成人久久精品一区二区三区| 国产精品三级| 欧美伊人久久| 日本va欧美va欧美va精品| 中文字幕日本一区二区| 日韩精品一级中文字幕精品视频免费观看| 免费不卡中文字幕在线| 亚洲天堂av影院| 一本大道色婷婷在线| 久久字幕精品一区| 精品久久电影| 97在线精品| 波多野结衣久久精品| 日本不良网站在线观看| 亚洲女同av| 久久久久久久久久久妇女| 久久精品国产99久久| 久久国产精品成人免费观看的软件| 日韩国产一区二区| 欧美日韩视频网站| 久久人人99| 国产亚洲永久域名| 亚洲网址在线观看| 青青国产91久久久久久| 日韩精彩视频在线观看| 国产欧美日韩精品一区二区三区| 国产精品主播| 麻豆高清免费国产一区| 粉嫩av一区二区三区四区五区| 国产伦久视频在线观看| 日韩在线短视频| 女同性一区二区三区人了人一| 99re国产精品| 色8久久久久| 国产精品红桃| 精品国产午夜肉伦伦影院 | 欧美黑人巨大videos精品| 老司机精品视频网| 中文一区一区三区高中清不卡免费| 欧美成人基地| 亚洲一区欧美二区| 欧美伊人久久| 国产一区二区三区91| 欧美天堂视频| 亚洲资源av| 国产精品亚洲四区在线观看| 国产精品99一区二区三| 在线精品小视频| 日韩欧美精品一区二区综合视频| 久久国产精品免费精品3p| 精品国产成人| 99pao成人国产永久免费视频| 日韩不卡在线观看日韩不卡视频| 国产欧美日韩在线观看视频| 国产一区2区| re久久精品视频| 欧美日韩精品一区二区三区视频 | 国产精品亚洲人成在99www| 久久电影tv| 狠狠色综合网| 国产精品视频一区二区三区 | 国产 日韩 欧美一区| 午夜在线精品| 麻豆传媒一区二区三区| 久久国产精品成人免费观看的软件| 蜜臀精品一区二区三区在线观看 | 欧美成人高清| 欧美日韩 国产精品| 欧美不卡高清一区二区三区| 日产欧产美韩系列久久99| 精品三级在线观看视频| 日韩视频一区| 国产日韩在线观看视频| 久久网站免费观看| 国产欧美一区二区三区精品观看| 欧美日韩在线观看首页| 亚洲精品观看| 桃色一区二区| 国产日韩一区二区三区在线播放| 香蕉成人av| 欧美日韩亚洲一区| av亚洲免费| 精品中文字幕一区二区三区四区| 午夜宅男久久久| 91偷拍一区二区三区精品| 日韩精品一区二区三区免费视频| 欧美日韩免费看片|