source: cows/trunk/cows/service/imps/data_reader_geoplot_backend/geoplot_slabs/geoplot_slab_grid.py @ 6123

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/cows/trunk/cows/service/imps/data_reader_geoplot_backend/geoplot_slabs/geoplot_slab_grid.py@6123
Revision 6123, 3.1 KB checked in by pnorton, 12 years ago (diff)

Added the interval geoplot renderer, also improved the slab option parser and moved the responsibility for generating the colour bars to the slabs.

Line 
1import time
2import numpy
3import logging
4
5import geoplot.colour_bar
6from geoplot.layer_drawer_grid import LayerDrawerGrid
7from geoplot.layer_drawer_grid_fast import LayerDrawerGridFast
8
9from cows.service.imps.data_reader_geoplot_backend.rendering_option import RenderingOption
10from cows.service.imps.data_reader_geoplot_backend.geoplot_slabs.geoplot_slab_base import GeoplotSlabBase
11from cows.service.imps.data_reader_geoplot_backend.slab_options_parser import SlabOptionsParser
12
13log = logging.getLogger(__name__)
14
15class GeoplotSlabGrid(GeoplotSlabBase):
16
17    style = 'grid'
18    title = 'Grid Boxes'
19                       
20    renderingOptions = GeoplotSlabBase.renderingOptions +[     
21        RenderingOption('disable_subset', "Disable Subsetting" ,bool,False),
22        RenderingOption('show_grid_lines', "Draw Grid Boxes" ,bool,False),
23        RenderingOption('hide_outside', "Mask Data Outside Bounds" , bool ,False),
24    ]
25       
26    def _setupLayerDrawer(self):
27       
28        cmapMin = self.parser.getOption('cmap_min')
29        cmapMax = self.parser.getOption('cmap_max')
30                       
31        if self.parser.getOption('disable_subset'):
32            ldClass = LayerDrawerGrid
33        else:
34            ldClass = LayerDrawerGridFast
35   
36        ld = ldClass(self.variable, 
37                     cmap=self.parser.getOption('cmap'), 
38                     showGridLines=self.parser.getOption('show_grid_lines'), 
39                     colourBarMin=cmapMin,
40                     colourBarMax=cmapMax,
41                     colourBarScale = self.parser.getOption('cmap_scale'),
42                     hideOutside = self.parser.getOption('hide_outside'),
43                     bgcolor = self.bgcolor,
44                     transparent=self.transparent,
45                     drawIntervals=False,)
46       
47        return ld
48   
49    @staticmethod
50    def makeColourBar(width , height, orientation, units, renderOpts, variable):
51       
52        parser = SlabOptionsParser(GeoplotSlabGrid.renderingOptions, renderOpts)
53               
54        minval = parser.getOption('cmap_min')
55        if minval == None:
56            minval = variable.min()
57           
58        maxval = parser.getOption('cmap_max')
59        if maxval == None:
60            maxval = variable.max()
61           
62            # can't have a colourbar with an infinite maximum, take the highest
63            # non-inf value.
64            if maxval == numpy.inf:
65                maxval = numpy.ma.masked_equal(variable, numpy.inf).max()
66
67        im = geoplot.colour_bar.getColourBarImage(width, height, 
68                                             label='Units of measure: %s' % str(units),
69                                             cmap=parser.getOption('cmap'), 
70                                             colourBarMin=minval,
71                                             colourBarMax=maxval,
72                                             colourBarScale=parser.getOption('cmap_scale'), 
73                                             orientation=orientation,
74                                             colourBarStyle='continuous',
75                                             )
76   
77        return im   
78 
Note: See TracBrowser for help on using the repository browser.