In [2]:
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np
import datetime
#d = datetime.date(2015,12,15); t = datetime.time(11,14,0) #TMA-19M
#d = datetime.date(2017,7,28); t = datetime.time(15,45,0) #MS-05
d = datetime.date(2017,9,12); t = datetime.time(21,17,0) #MS-06
dt = datetime.datetime.combine(d, t)
plt.figure(figsize=(120,100))
m = Basemap(projection='merc',resolution='h',lat_0=45,lon_0=96,llcrnrlon=60,llcrnrlat=45,urcrnrlon=100,urcrnrlat=55)
#m.shadedrelief()
m.bluemarble()
lon3=88.0; lat3=52.0; r=6371.0; r1=6570.0; rr=r/r1
latv = np.linspace(45.0,55.0,100);
lonv = np.linspace(60.0,100.0,200);
lons, lats = np.meshgrid(lonv,latv)
t = np.arccos(np.cos(np.deg2rad(lons-lon3))*np.cos(np.deg2rad(lats-lat3)));
d = np.rad2deg(np.arctan((np.cos(t)-rr)/np.sin(t)))
levels = [0,5,10,15,20,25,30]
cs=m.contour(lons,lats,d,levels,colors='y',linewidth=6,latlon=True)
plt.clabel(cs, inline=True, fmt='%1.0f', fontsize=60, colors='y')
m.drawcountries(linewidth=4)
m.drawcoastlines(linewidth=3,color='k')
m.drawparallels(np.arange(40,70,5),labels=[1,0,0,0],fontsize=50,dashes=[3,2],linewidth=1,color='c')
m.drawmeridians(np.arange(50,110,5),labels=[0,0,0,1],fontsize=50,dashes=[3,2],linewidth=1,color='c')
m.drawrivers(color='b')
m.nightshade(dt,delta=0.1)
#m.fillcontinents(color='coral',lake_color='aqua')
#m.drawmapboundary(fill_color='aqua')
m.drawgreatcircle(63.305, 45.965, 88, 52,linewidth=6,color='r')
m.plot(89.97,48.97,'b*',latlon=True,markersize=50) #Ulgii
m.plot(91.64,48.00,'b*',latlon=True,markersize=50) #Khovd
m.plot(92.07,49.98,'b*',latlon=True,markersize=50) #Ulaangom
m.plot(96.26,46.37,'b*',latlon=True,markersize=50) #Altai
m.plot(96.84,47.74,'b*',latlon=True,markersize=50) #Uliastai
m.plot(100.16,50.44,'b*',latlon=True,markersize=50) #Khatgal
m.plot(100.72,46.19,'b*',latlon=True,markersize=50) #Bayankhongor
m.plot(101.45,47.48,'b*',latlon=True,markersize=50) #Tsetserleg
plt.show()