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

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

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

瀏覽:40日期: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久久,三上悠亚国产精品一区二区三区
国产视频一区欧美| 国产精品高潮呻吟久久久久| 日韩av中文在线观看| 日韩中文字幕一区二区三区| 久久狠狠婷婷| 欧洲一级精品| 日韩影院二区| 免费污视频在线一区| 不卡视频在线| 美女精品网站| 日本91福利区| 日韩av一区二区三区| 日本不卡视频在线| 欧美亚洲tv| 精品国产一区二区三区av片| 久久久久伊人| 欧美sss在线视频| 亚洲欧美日韩国产一区二区| 亚洲精品免费观看| 麻豆精品新av中文字幕| 色老板在线视频一区二区| 神马午夜在线视频| 亚洲少妇一区| 欧美日韩一区二区高清| 国产精品久久| 成人久久一区| 日韩中文字幕在线一区| 国精品产品一区| 在线一区视频| 久久久久黄色| 国产亚洲一级| 97精品一区| 亚洲精品在线国产| 91精品精品| 久久99精品久久久野外观看| 免费久久精品| 天堂va欧美ⅴa亚洲va一国产| 黄色精品视频| 日韩在线观看中文字幕| 久久一区二区中文字幕| 久久一区国产| 日韩精品久久理论片| 日韩免费av| 久久99影视| 91精品麻豆| 蜜桃一区二区三区在线观看| 日韩高清成人| 欧美黄色一区二区| 日本中文字幕视频一区| 欧美特黄一区| 水蜜桃精品av一区二区| 免费成人av在线播放| 国产a亚洲精品| 国产精品一区二区av日韩在线 | 美女网站一区| 久久男人av资源站| 精品视频国内| 红杏一区二区三区| 麻豆成人综合网| 国产精品xxxav免费视频| 美国三级日本三级久久99| 999精品一区| av一区在线| 国产精品蜜芽在线观看| 国产一区二区三区四区| 国产黄色精品| 高清不卡一区| 久久三级视频| 欧美特黄视频| 亚洲资源av| 在线视频免费在线观看一区二区| 亚洲无线一线二线三线区别av| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 亚洲精品大全| 亚洲精品动态| 免费亚洲婷婷| 在线看片福利| 免费在线小视频| 午夜久久美女| 91av一区| 久久激情一区| 亚洲精品综合| 精品美女视频| 国产一区二区三区自拍| 中文无码日韩欧| 亚洲精品日本| 麻豆成人91精品二区三区| 日韩一区亚洲二区| 亚洲制服欧美另类| 国产v日韩v欧美v| 亚洲免费精品| 精品国产aⅴ| 在线日韩视频| 国产日韩免费| 亚州av乱码久久精品蜜桃| 日韩成人午夜精品| 欧美日韩精品在线一区| 欧美午夜三级| 亚洲色诱最新| 日韩在线二区| 91av一区| 91成人超碰| 国产一区二区三区四区| 午夜电影一区| 香蕉精品久久| 精品视频亚洲| 欧美天堂一区二区| 日韩在线短视频| 国产精品美女在线观看直播| 一区二区自拍| 日韩精品永久网址| 国产精品乱战久久久| 老牛影视一区二区三区| 韩国久久久久久| 欧美亚洲色图校园春色| 视频一区国产视频| 亚洲午夜黄色| 久久婷婷丁香| 日本精品影院| 99久久亚洲精品蜜臀| 亚洲综合电影| 国产色播av在线| 国产亚洲字幕| 国产美女久久| 国产精品一区二区三区av| 久久精品99久久久| 日韩高清成人在线| 欧美色综合网| 国产精品66| 国产精品美女在线观看直播| 97精品国产99久久久久久免费| 日韩中文字幕在线一区| 日韩福利视频网| 麻豆精品少妇| 色偷偷偷在线视频播放| 国产 日韩 欧美一区| 欧美在线亚洲| 91久久午夜| 欧美一级网站| 风间由美中文字幕在线看视频国产欧美 | 日韩成人a**站| 日本久久成人网| 免播放器亚洲| 国产精品一区二区三区www| 国产盗摄——sm在线视频| 99精品综合| 亚洲精品成a人ⅴ香蕉片| 国产另类在线| 久久精品免费一区二区三区 | 1000部精品久久久久久久久| 蜜桃视频一区二区三区在线观看| 欧美自拍一区| 亚洲欧洲美洲av| 蜜臀av在线播放一区二区三区| 91综合久久爱com| 久久国产电影| 奇米狠狠一区二区三区| 黄色aa久久| 亚洲精品一区二区在线播放∴| 国产精品v日韩精品v欧美精品网站| 日韩欧美看国产| 欧美日韩 国产精品| 欧美午夜精品一区二区三区电影| 国产精品丝袜xxxxxxx| 国产欧美日韩在线观看视频| 午夜免费一区| 午夜久久中文| 国产精品一区二区av交换| 午夜久久黄色| 日韩三区免费| 国产成人久久精品麻豆二区 | 999国产精品| 国内在线观看一区二区三区 | 性欧美xxxx免费岛国不卡电影| 久久国产99| 亲子伦视频一区二区三区| 国产精品久久久亚洲一区| 综合视频一区| 亚洲欧美日韩国产一区二区| 日韩精品不卡一区二区| 久久久精品国产**网站| 在线精品观看| 蜜臀av性久久久久蜜臀aⅴ四虎 | 日韩欧美四区| 亚洲一区有码| 丝袜国产日韩另类美女| 久久国产亚洲精品| 国产精品玖玖玖在线资源| 国产区精品区| 国产乱人伦丫前精品视频 | 日韩欧美一区二区三区免费观看| 美女毛片一区二区三区四区最新中文字幕亚洲 | 久久久久网站| 欧美日韩在线二区| 亚洲成人二区| 成人三级高清视频在线看| 国产福利91精品一区二区| 在线天堂中文资源最新版| 久久中文字幕一区二区三区| 麻豆免费精品视频|