source: cows/trunk/cows/service/imps/geoplot_wms_backend/slabs/slab_contour.py @ 6520

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/cows/trunk/cows/service/imps/geoplot_wms_backend/slabs/slab_contour.py@6520
Revision 6520, 3.4 KB checked in by pnorton, 10 years ago (diff)

Modified the geoplot layer legend size and added an additional contour rendering option.

Line 
1import logging
2import time
3import numpy
4
5import geoplot.colour_bar
6from geoplot.layer_drawer_contour import LayerDrawerContour
7
8from cows.service.imps.geoplot_wms_backend.slabs.slab_base import SlabBase
9from cows.service.imps.geoplot_wms_backend.slab_options_parser import SlabOptionsParser
10from cows.service.imps.geoplot_wms_backend.rendering_option import RenderingOption
11
12log = logging.getLogger(__name__)
13
14class SlabContour(SlabBase):
15
16    style = 'contour'
17    title = 'Contour Lines'
18                     
19    renderingOptions = SlabBase.renderingOptions + [       
20        RenderingOption('num_contour_lines', "Number of Contour Lines" ,int,10),
21        RenderingOption('contour_font_size', "Contour Label Size" ,str,'medium',["small","medium", "large",]),
22        RenderingOption('contour_label_interval', "Interval Between Labels" ,int,1),
23        RenderingOption('intervals', "Contour Lines" ,str,None),
24    ]
25
26    def _setupLayerDrawer(self):
27       
28        ld = LayerDrawerContour(self.variable, 
29                                 cmap=self.parser.getOption('cmap'), 
30                                 colourBarMin=self.parser.getOption('cmap_min'),
31                                 colourBarMax=self.parser.getOption('cmap_max'),
32                                 bgcolor = self.bgcolor,
33                                 colourBarScale = self.parser.getOption('cmap_scale'),
34                                 labelInterval= self.parser.getOption('contour_label_interval'),
35                                 numLines = self.parser.getOption('num_contour_lines'),
36                                 fontSize = self.parser.getOption('contour_font_size'),
37                                 intervals = self.parser.getOption('intervals'),
38                                 transparent=self.transparent)
39       
40        return ld
41
42
43    @staticmethod
44    def makeColourBar(width , height, orientation, units, renderOpts, variable):
45       
46        parser = SlabOptionsParser(SlabContour.renderingOptions, renderOpts)
47               
48        minval = parser.getOption('cmap_min')
49        if minval == None:
50            minval = variable.min()
51           
52        maxval = parser.getOption('cmap_max')
53        if maxval == None:
54            maxval = variable.max()
55           
56            # can't have a colourbar with an infinite maximum, take the highest
57            # non-inf value.
58            if maxval == numpy.inf:
59                maxval = numpy.ma.masked_equal(variable, numpy.inf).max()
60       
61        im = geoplot.colour_bar.getColourBarImage(width, height, 
62                                             label='Units of measure: %s' % str(units),
63                                             cmap=parser.getOption('cmap'), 
64                                             colourBarMin=minval,
65                                             colourBarMax=maxval,
66                                             colourBarScale=parser.getOption('cmap_scale'),
67                                             numIntervals=parser.getOption('num_contour_lines') - 1, 
68                                             orientation=orientation,
69                                             intervals=parser.getOption('intervals'),
70                                             intervalNames=parser.getOption('intervalNames'),
71                                             colourBarStyle='line',
72                                             )
73   
74        return im
Note: See TracBrowser for help on using the repository browser.