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

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@6102
Revision 6102, 4.2 KB checked in by pnorton, 12 years ago (diff)

Removed the old modis data reader class. Also modified COWS to pass the style parameter to the GetLegendImage? methods on the layer objects.

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('intervals', "intervals" ,str,None),
24        RenderingOption('intervalNames', "intervalNames" ,str,None),
25        RenderingOption('num_intervals', 'Default Num Intervals', int, 6),
26        RenderingOption('hide_outside', "Mask Data Outside Bounds" , bool ,False),
27        RenderingOption('cbar_style', 'Colour Bar Style', str, 'continuous', ['continuous','legend']),
28    ]
29       
30    def _setupLayerDrawer(self):
31       
32        cmapMin = self.parser.getOption('cmap_min')
33        cmapMax = self.parser.getOption('cmap_max')
34           
35        intervalNames = self.parser.getOption('intervalNames')
36        if intervalNames != None:
37            intervalNames = intervalNames.split(',')
38       
39        log.debug("self.transparent = %s" % (self.transparent,))
40        log.debug("self.bgcolour = %s" % (self.bgcolour,))
41   
42        if self.parser.getOption('disable_subset'):
43            ldClass = LayerDrawerGrid
44        else:
45            ldClass = LayerDrawerGridFast
46   
47   
48        ld = ldClass(self.variable, 
49                     cmap=self.parser.getOption('cmap'), 
50                     showGridLines=self.parser.getOption('show_grid_lines'), 
51                     colourBarMin=cmapMin,
52                     colourBarMax=cmapMax,
53                     numIntervals = self.parser.getOption('num_intervals'),
54                     colourBarStyle = self.parser.getOption('cbar_style'),
55                     colourBarScale = self.parser.getOption('cmap_scale'),
56                     hideOutside = self.parser.getOption('hide_outside'),
57                     bgcolour = self.bgcolour,
58                     intervals = self.parser.getOption('intervals'),   
59                     transparent=self.transparent)
60       
61        return ld
62   
63    @staticmethod
64    def makeColourBar(width , height, orientation, units, renderOpts, variable):
65       
66        parser = SlabOptionsParser(GeoplotSlabGrid.renderingOptions, renderOpts)
67               
68        minval = parser.getOption('cmap_min')
69        if minval == None:
70            minval = variable.min()
71           
72        maxval = parser.getOption('cmap_max')
73        if maxval == None:
74            maxval = variable.max()
75           
76            # can't have a colourbar with an infinite maximum, take the highest
77            # non-inf value.
78            if maxval == numpy.inf:
79                maxval = numpy.ma.masked_equal(variable, numpy.inf).max()
80       
81        im = geoplot.colour_bar.getColourBarImage(width, height, 
82                                             label='Units of measure: %s' % str(units),
83                                             cmap=parser.getOption('cmap'), 
84                                             colourBarMin=minval,
85                                             colourBarMax=maxval,
86                                             colourBarScale=parser.getOption('cmap_scale'),
87                                             numIntervals=parser.getOption('num_intervals'), 
88                                             orientation=orientation,
89                                             intervals=parser.getOption('intervals'),
90                                             intervalNames=parser.getOption('intervalNames'),
91                                             colourBarStyle=parser.getOption('cbar_style'),
92                                             )
93   
94        return im   
95 
Note: See TracBrowser for help on using the repository browser.