- Notifications
You must be signed in to change notification settings - Fork 397
/
Copy pathortho_demo.py
52 lines (47 loc) · 1.82 KB
/
ortho_demo.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
46
47
48
49
50
51
52
from __future__ import (absolute_import, division, print_function)
frommpl_toolkits.basemapimportBasemap
importnumpyasnp
importmatplotlib.pyplotasplt
importsys
defget_input(prompt):
ifsys.hexversion>0x03000000:
returninput(prompt)
else:
returnraw_input(prompt)
# create Basemap instance for Orthographic (satellite view) projection.
lon_0=float(get_input('enter reference longitude (lon_0):'))
lat_0=float(get_input('enter reference latitude (lat_0):'))
# map with land/sea mask plotted
fig=plt.figure()
resolution='l'; grid=5
m=Basemap(projection='ortho',lon_0=lon_0,lat_0=lat_0,resolution=resolution)
# land coral, oceans aqua.
# lakes=True means plot inland lakes with ocean color.
# resolution = 5 (default) means use 5 min dataset (can use 2.5)
m.drawmapboundary()
m.drawcoastlines()
m.drawlsmask(land_color='coral',ocean_color='aqua', lakes=True,\
resolution=resolution,grid=grid)
# draw parallels and meridians.
m.drawparallels(np.arange(-90.,120.,30.))
m.drawmeridians(np.arange(0.,420.,60.))
plt.title('Orthographic Map Centered on Lon=%s, Lat=%s'% (lon_0,lat_0))
# map with continents drawn and filled (continent filling fails for
# lon=-120,lat=60).
fig=plt.figure()
m=Basemap(projection='ortho',lon_0=lon_0,lat_0=lat_0,resolution=resolution)
m.drawcoastlines()
m.fillcontinents(color='coral',lake_color='aqua')
m.drawcountries()
# draw parallels and meridians.
m.drawparallels(np.arange(-90.,120.,30.))
m.drawmeridians(np.arange(0.,420.,60.))
m.drawmapboundary(fill_color='aqua')
# add a map scale.
length=5000
x1,y1=0.3*m.xmax, 0.25*m.ymax
lon1,lat1=m(x1,y1,inverse=True)
m.drawmapscale(lon1,lat1,lon1,lat1,length,fontsize=8,barstyle='fancy',\
labelstyle='fancy',units='km')
plt.title('Orthographic Map Centered on Lon=%s, Lat=%s'% (lon_0,lat_0))
plt.show()