class Mapfigure_Nicolas: """ Class based on Basemap with additional functionallity such as plot_trajectories """ def __init__(self, resolution='i', projection='cyl', domain=None, lon=None, lat=None, basemap=None, **kwargs): if basemap is None: if (domain is None) & (lon is not None): domain = [lon.min(), lon.max(), lat.min(), lat.max()] if projection == 'eqc': projection = 'cyl' if domain is not None: kwargs['llcrnrlon'] = domain[0] kwargs['urcrnrlon'] = domain[1] kwargs['llcrnrlat'] = domain[2] kwargs['urcrnrlat'] = domain[3] kwargs['resolution'] = resolution kwargs['projection'] = projection self.m = Basemap(**kwargs) else: self.m = basemap if lon is not None: self.x, self.y = self.m(lon, lat) def __getattr__(self, item): return getattr(self.m, item) def __call__(self, *args, **kwargs): return self.m(*args, **kwargs) def __dir__(self): return self.m.__dir__() + ['drawmap', 'plot_traj'] def drawmap(self, continent=False, nbrem=5, nbrep=5, coastargs={}, countryargs={}, meridiansargs={}, parallelsargs={}): """ draw basic features on the map nbrem: interval bewteen meridians nbrep: interval between parallels """ self.drawcoastlines(**coastargs) self.drawcountries(**countryargs) merid = np.arange(-180, 180, nbrem) parall = np.arange(-90, 90, nbrep) self.drawmeridians(merid, labels=[0, 0, 0, 1], **meridiansargs) self.drawparallels(parall, labels=[1, 0, 0, 0], **parallelsargs) if continent: self.fillcontinents(color='lightgrey')