Example #1
0
  def draw_projection(self):
    #if not self.config['proj.name']:
    #  self.map=False
    #  return
    if not self.map: return

    if self.map_info_get()!=self.map_info_current:
      self.init_projection()

    # there is a bug in set_axes_limits, called at the end of drawcoastlines,
    # fillcontinents, etc, here:
    #     first draw boundary, no fill
    #     limb1 = self.drawmapboundary(fill_color='none')
    # argument ax is missing! So, boundary will go the the latest axes, which can be self.cbax!!
    # my current version is 1.0.7
    # To avoid it:
    pl.axes(self.ax)

    # better do this before draw anything else, otherwise the drawmapboundary will be
    # called many times (by set_axes_limits, depending on the projection used)
    if self.config['proj.oceans_add']:
      self.map.drawmapboundary(ax=self.ax,**self.config['proj.oceans'])

    if self.config['proj.coast_add']:
      self.map.drawcoastlines(ax=self.ax,**self.config['proj.coast'])


    if self.config['proj.continents_add']:
      self.map.fillcontinents(ax=self.ax,**self.config['proj.continents'])


    if self.config['proj.countries_add']:
      self.map.drawcountries(ax=self.ax,**self.config['proj.countries'])

    if self.config['proj.states_add']:
      self.map.drawstates(ax=self.ax,**self.config['proj.states'])

    if self.config['proj.rivers_add']:
      self.map.drawrivers(ax=self.ax,**self.config['proj.rivers'])

    if self.config['proj.meridians_add']:
      if self.config['proj.meridians_vals']=='auto':
        if self.map_info_current['proj'].endswith('stere'):
          meridians=range(0,360,45)
        else:
          xlim=self.map.llcrnrlon,self.map.urcrnrlon
          xlim=self.map.lonmin,self.map.lonmax
          meridians=ticks.loose_label(xlim[0],xlim[1])
      else: meridians=self.config['proj.meridians_vals']
      self.map.drawmeridians(meridians,ax=self.ax,**self.config['proj.meridians'])

    if self.config['proj.parallels_add']:
      if self.config['proj.parallels_vals']=='auto':
        ylim=self.map.llcrnrlat,self.map.urcrnrlat
        ylim=self.map.latmin,self.map.latmax
        parallels=ticks.loose_label(ylim[0],ylim[1])
      else: parallels=self.config['proj.parallels_vals']
      self.map.drawparallels(parallels,ax=self.ax,**self.config['proj.parallels'])
Example #2
0
    def draw_projection(self):
        if not self.config['proj.name']:
            self.map = False
            return

        if self.map_info_get() != self.map_info_current:
            self.init_projection()

        if self.config['proj.coast_add']:
            self.map.drawcoastlines(ax=self.ax, **self.config['proj.coast'])

        if self.config['proj.continents_add']:
            self.map.fillcontinents(ax=self.ax,
                                    **self.config['proj.continents'])

        if self.config['proj.countries_add']:
            self.map.drawcountries(ax=self.ax, **self.config['proj.countries'])

        if self.config['proj.states_add']:
            self.map.drawstates(ax=self.ax, **self.config['proj.states'])

        print 'ADDING RIVERS !!! ', self.config['proj.rivers_add']
        if self.config['proj.rivers_add']:
            self.map.drawrivers(ax=self.ax, **self.config['proj.rivers'])

        if self.config['proj.meridians_add']:
            if self.config['proj.meridians_vals'] == 'auto':
                xlim = self.map.llcrnrlon, self.map.urcrnrlon
                meridians = ticks.loose_label(xlim[0], xlim[1])
            else:
                meridians = self.config['proj.meridians_vals']
            self.map.drawmeridians(meridians,
                                   ax=self.ax,
                                   **self.config['proj.meridians'])

        if self.config['proj.parallels_add']:
            if self.config['proj.parallels_vals'] == 'auto':
                ylim = self.map.llcrnrlat, self.map.urcrnrlat
                parallels = ticks.loose_label(ylim[0], ylim[1])
            else:
                parllels = self.config['proj.parallels_vals']
            self.map.drawparallels(parallels,
                                   ax=self.ax,
                                   **self.config['proj.parallels'])
Example #3
0
  def draw_projection(self):
    if not self.config['proj.name']:
      self.map=False
      return

    if self.map_info_get()!=self.map_info_current:
      self.init_projection()

    if self.config['proj.coast_add']:
      self.map.drawcoastlines(ax=self.ax,**self.config['proj.coast'])

    if self.config['proj.continents_add']:
      self.map.fillcontinents(ax=self.ax,**self.config['proj.continents'])

    if self.config['proj.countries_add']:
      self.map.drawcountries(ax=self.ax,**self.config['proj.countries'])

    if self.config['proj.states_add']:
      self.map.drawstates(ax=self.ax,**self.config['proj.states'])

    print 'ADDING RIVERS !!! ',self.config['proj.rivers_add']
    if self.config['proj.rivers_add']:
      self.map.drawrivers(ax=self.ax,**self.config['proj.rivers'])

    if self.config['proj.meridians_add']:
      if self.config['proj.meridians_vals']=='auto':
        xlim=self.map.llcrnrlon,self.map.urcrnrlon
        meridians=ticks.loose_label(xlim[0],xlim[1])
      else: meridians=self.config['proj.meridians_vals']
      self.map.drawmeridians(meridians,ax=self.ax,**self.config['proj.meridians'])

    if self.config['proj.parallels_add']:
      if self.config['proj.parallels_vals']=='auto':
        ylim=self.map.llcrnrlat,self.map.urcrnrlat
        parallels=ticks.loose_label(ylim[0],ylim[1])
      else: parllels=self.config['proj.parallels_vals']
      self.map.drawparallels(parallels,ax=self.ax,**self.config['proj.parallels'])
Example #4
0
  def plot(self,**kargs):
    bathy      = kargs.get('bathy','contourf')
    hvals      = kargs.get('hvals','auto')
    resolution = kargs.get('res','i')
    rivers     = kargs.get('rivers',False)
    parallels  = kargs.get('parallels','auto')
    meridians  = kargs.get('meridians','auto')
    scale      = kargs.get('scale',False)
    states     = kargs.get('states',False)
    xlim       = kargs.get('xlim',False)
    ylim       = kargs.get('ylim',False)
    title      = kargs.get('title','auto')
    cmap       = kargs.get('cmap',pylab.cm.gist_earth_r)
    proj       = kargs.get('proj','merc')
    ax         = kargs.get('ax',False)

    if not ax:
      fig=pylab.figure()
      ax=pylab.axes()
    else: fig=ax.figure

    h=np.ma.masked_where(self.mask==0,self.h)
    xb,yb=self.border()

    xt=ticks.loose_label(self.lon.min(),self.lon.max())
    yt=ticks.loose_label(self.lat.min(),self.lat.max())
    ht=ticks.loose_label_n(self.h.min(),self.h.max(),7)

    if xlim: Lonlims=xlim
    else:  Lonlims=xt[0],xt[-1]

    if ylim: Latlims=ylim
    else: Latlims=yt[0],yt[-1]

    if hvals=='auto': hvals=ht

    if parallels=='auto': parallels=yt
    if meridians=='auto': meridians=xt

    if Basemap and proj:
      m = Basemap(projection=proj,lat_ts=0.0,
                  #lon_0=self.lon[0].mean(),
                  resolution=resolution,
                  urcrnrlon=Lonlims[1], urcrnrlat=Latlims[1],
                  llcrnrlon=Lonlims[0], llcrnrlat=Latlims[0])

      m.drawcoastlines(ax=ax)
      m.fillcontinents(ax=ax,color=(0.7604,    1.0000,    0.7459))
      if rivers: m.drawrivers(color='b')

      m.drawcountries(ax=ax)
      # m.drawlsmask()
      # m.drawmapboundary()
      if scale:
        dx=Lonlims[1]-Lonlims[0]
        dy=Latlims[1]-Latlims[0]
        lon=Lonlims[1]-dx/10
        lat=Latlims[0]+dy/10
        lon0=lon
        lat0=lat
        length=100

        m.drawmapscale(lon,lat,lon0,lat0,length,ax=ax)

      if states: m.drawstates(ax=ax)

      m.drawparallels(parallels, labels=[1,0,0,0],ax=ax)
      m.drawmeridians(meridians, labels=[0,0,0,1],ax=ax)

      x, y = m(self.lon, self.lat)
      pch=False
      if bathy in ['pcolor','pcolormesh']:
        pch = ax.pcolormesh(x,y,h,cmap=cmap)
      elif bathy=='contour':
        pch = ax.contour(x,y,h,hvals,cmap=cmap)
      elif bathy=='contourf':
        pch = ax.contourf(x,y,h,hvals,cmap=cmap)

      if pch:
        if m.xmax-m.xmin<m.ymax-m.ymin: orientation='horizontal'
        else: orientation='vetical'

        cbh = pylab.colorbar(pch,orientation=orientation,ax=ax)
        cbh.set_label('Depth')
        if title=='auto': ax.set_title(self.name)
        elif title: ax.set_title(title)

      xb, yb = m(xb,yb)
      ax.plot(xb,yb)
      ax.axis([m.xmin, m.xmax, m.ymin, m.ymax])
      return m

    else:
      ax.pcolormesh(self.lon,self.lat,h,cmap=cmap)
      ax.contour(self.lon,self.lat,self.h,hvals,colors='w')
      ax.plot(xb,yb)
Example #5
0
    def plot(self, **kargs):
        bathy = kargs.get("bathy", "contourf")
        hvals = kargs.get("hvals", "auto")
        resolution = kargs.get("res", "i")
        rivers = kargs.get("rivers", False)
        parallels = kargs.get("parallels", "auto")
        meridians = kargs.get("meridians", "auto")
        scale = kargs.get("scale", False)
        states = kargs.get("states", False)
        xlim = kargs.get("xlim", False)
        ylim = kargs.get("ylim", False)
        title = kargs.get("title", "auto")
        cmap = kargs.get("cmap", pylab.cm.gist_earth_r)
        proj = kargs.get("proj", "merc")
        ax = kargs.get("ax", False)

        if not ax:
            fig = pylab.figure()
            ax = pylab.axes()
        else:
            fig = ax.figure

        h = np.ma.masked_where(self.mask == 0, self.h)
        xb, yb = self.border()

        xt = ticks.loose_label(self.lon.min(), self.lon.max())
        yt = ticks.loose_label(self.lat.min(), self.lat.max())
        ht = ticks.loose_label_n(self.h.min(), self.h.max(), 7)

        if xlim:
            Lonlims = xlim
        else:
            Lonlims = xt[0], xt[-1]

        if ylim:
            Latlims = ylim
        else:
            Latlims = yt[0], yt[-1]

        if hvals == "auto":
            hvals = ht

        if parallels == "auto":
            parallels = yt
        if meridians == "auto":
            meridians = xt

        if Basemap and proj:
            m = Basemap(
                projection=proj,
                lat_ts=0.0,
                # lon_0=self.lon[0].mean(),
                resolution=resolution,
                urcrnrlon=Lonlims[1],
                urcrnrlat=Latlims[1],
                llcrnrlon=Lonlims[0],
                llcrnrlat=Latlims[0],
            )

            m.drawcoastlines(ax=ax)
            m.fillcontinents(ax=ax, color=(0.7604, 1.0000, 0.7459))
            if rivers:
                m.drawrivers(color="b")

            m.drawcountries(ax=ax)
            # m.drawlsmask()
            # m.drawmapboundary()
            if scale:
                dx = Lonlims[1] - Lonlims[0]
                dy = Latlims[1] - Latlims[0]
                lon = Lonlims[1] - dx / 10
                lat = Latlims[0] + dy / 10
                lon0 = lon
                lat0 = lat
                length = 100

                m.drawmapscale(lon, lat, lon0, lat0, length, ax=ax)

            if states:
                m.drawstates(ax=ax)

            m.drawparallels(parallels, labels=[1, 0, 0, 0], ax=ax)
            m.drawmeridians(meridians, labels=[0, 0, 0, 1], ax=ax)

            x, y = m(self.lon, self.lat)
            pch = False
            if bathy in ["pcolor", "pcolormesh"]:
                pch = ax.pcolormesh(x, y, h, cmap=cmap)
            elif bathy == "contour":
                pch = ax.contour(x, y, h, hvals, cmap=cmap)
            elif bathy == "contourf":
                pch = ax.contourf(x, y, h, hvals, cmap=cmap)

            if pch:
                if m.xmax - m.xmin < m.ymax - m.ymin:
                    orientation = "horizontal"
                else:
                    orientation = "vetical"

                cbh = pylab.colorbar(pch, orientation=orientation, ax=ax)
                cbh.set_label("Depth")
                if title == "auto":
                    ax.set_title(self.name)
                elif title:
                    ax.set_title(title)

            xb, yb = m(xb, yb)
            ax.plot(xb, yb)
            ax.axis([m.xmin, m.xmax, m.ymin, m.ymax])
            return m

        else:
            ax.pcolormesh(self.lon, self.lat, h, cmap=cmap)
            ax.contour(self.lon, self.lat, self.h, hvals, colors="w")
            ax.plot(xb, yb)
Example #6
0
    def plot(self, **kargs):
        bathy = kargs.get('bathy', 'contourf')
        hvals = kargs.get('hvals', 'auto')
        resolution = kargs.get('res', 'i')
        rivers = kargs.get('rivers', False)
        parallels = kargs.get('parallels', 'auto')
        meridians = kargs.get('meridians', 'auto')
        scale = kargs.get('scale', False)
        states = kargs.get('states', False)
        xlim = kargs.get('xlim', False)
        ylim = kargs.get('ylim', False)
        title = kargs.get('title', 'auto')
        cmap = kargs.get('cmap', pylab.cm.gist_earth_r)
        proj = kargs.get('proj', 'merc')
        ax = kargs.get('ax', False)

        if not ax:
            fig = pylab.figure()
            ax = pylab.axes()
        else:
            fig = ax.figure

        h = np.ma.masked_where(self.mask == 0, self.h)
        xb, yb = self.border()

        xt = ticks.loose_label(self.lon.min(), self.lon.max())
        yt = ticks.loose_label(self.lat.min(), self.lat.max())
        ht = ticks.loose_label_n(self.h.min(), self.h.max(), 7)

        if xlim: Lonlims = xlim
        else: Lonlims = xt[0], xt[-1]

        if ylim: Latlims = ylim
        else: Latlims = yt[0], yt[-1]

        if hvals == 'auto': hvals = ht

        if parallels == 'auto': parallels = yt
        if meridians == 'auto': meridians = xt

        if Basemap and proj:
            m = Basemap(
                projection=proj,
                lat_ts=0.0,
                #lon_0=self.lon[0].mean(),
                resolution=resolution,
                urcrnrlon=Lonlims[1],
                urcrnrlat=Latlims[1],
                llcrnrlon=Lonlims[0],
                llcrnrlat=Latlims[0])

            m.drawcoastlines(ax=ax)
            m.fillcontinents(ax=ax, color=(0.7604, 1.0000, 0.7459))
            if rivers: m.drawrivers(color='b')

            m.drawcountries(ax=ax)
            # m.drawlsmask()
            # m.drawmapboundary()
            if scale:
                dx = Lonlims[1] - Lonlims[0]
                dy = Latlims[1] - Latlims[0]
                lon = Lonlims[1] - dx / 10
                lat = Latlims[0] + dy / 10
                lon0 = lon
                lat0 = lat
                length = 100

                m.drawmapscale(lon, lat, lon0, lat0, length, ax=ax)

            if states: m.drawstates(ax=ax)

            m.drawparallels(parallels, labels=[1, 0, 0, 0], ax=ax)
            m.drawmeridians(meridians, labels=[0, 0, 0, 1], ax=ax)

            x, y = m(self.lon, self.lat)
            pch = False
            if bathy in ['pcolor', 'pcolormesh']:
                pch = ax.pcolormesh(x, y, h, cmap=cmap)
            elif bathy == 'contour':
                pch = ax.contour(x, y, h, hvals, cmap=cmap)
            elif bathy == 'contourf':
                pch = ax.contourf(x, y, h, hvals, cmap=cmap)

            if pch:
                if m.xmax - m.xmin < m.ymax - m.ymin:
                    orientation = 'horizontal'
                else:
                    orientation = 'vetical'

                cbh = pylab.colorbar(pch, orientation=orientation, ax=ax)
                cbh.set_label('Depth')
                if title == 'auto': ax.set_title(self.name)
                elif title: ax.set_title(title)

            xb, yb = m(xb, yb)
            ax.plot(xb, yb)
            ax.axis([m.xmin, m.xmax, m.ymin, m.ymax])
            return m

        else:
            ax.pcolormesh(self.lon, self.lat, h, cmap=cmap)
            ax.contour(self.lon, self.lat, self.h, hvals, colors='w')
            ax.plot(xb, yb)