- Notifications
You must be signed in to change notification settings - Fork 397
/
Copy pathhurrtracks.py
45 lines (45 loc) · 1.68 KB
/
hurrtracks.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
"""
draw Atlantic Hurricane Tracks for storms that reached Cat 4 or 5.
part of the track for which storm is cat 4 or 5 is shown red.
ESRI shapefile data from http://nationalatlas.gov/mld/huralll.html
"""
importos
importnumpyasnp
importmatplotlib.pyplotasplt
frommpl_toolkits.basemapimportBasemap
# Lambert Conformal Conic map.
m=Basemap(llcrnrlon=-100.,llcrnrlat=0.,urcrnrlon=-20.,urcrnrlat=57.,
projection='lcc',lat_1=20.,lat_2=40.,lon_0=-60.,
resolution='l',area_thresh=1000.)
# create figure.
fig=plt.figure()
# read shapefile.
shp_info=m.readshapefile('huralll020','hurrtracks',drawbounds=False)
# find names of storms that reached Cat 4.
names= []
forshapedictinm.hurrtracks_info:
cat=shapedict['CATEGORY']
name=shapedict['NAME']
ifcatin ['H4','H5'] andnamenotinnames:
# only use named storms.
ifname!='NOT NAMED': names.append(name)
# plot tracks of those storms.
forshapedict,shapeinzip(m.hurrtracks_info,m.hurrtracks):
name=shapedict['NAME']
cat=shapedict['CATEGORY']
ifnameinnames:
xx,yy=zip(*shape)
# show part of track where storm > Cat 4 as thick red.
ifcatin ['H4','H5']:
m.plot(xx,yy,linewidth=1.5,color='r')
elifcatin ['H1','H2','H3']:
m.plot(xx,yy,color='k')
# draw coastlines, meridians and parallels.
m.drawcoastlines()
m.drawcountries()
m.drawmapboundary(fill_color='#99ffff')
m.fillcontinents(color='#cc9966',lake_color='#99ffff')
m.drawparallels(np.arange(10,70,20),labels=[1,1,0,0])
m.drawmeridians(np.arange(-100,0,20),labels=[0,0,0,1])
plt.title('Atlantic Hurricane Tracks (Storms Reaching Category 4, 1851-2004)')
plt.show()