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

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

Major refactoring of the wms code. the csml wms code is now based on the geoplot wms code. I've also increased the use of inheritance in the geoplot wms code to reduce duplication.

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    ]
24
25    def _setupLayerDrawer(self):
26       
27        ld = LayerDrawerContour(self.variable, 
28                                 cmap=self.parser.getOption('cmap'), 
29                                 colourBarMin=self.parser.getOption('cmap_min'),
30                                 colourBarMax=self.parser.getOption('cmap_max'),
31                                 bgcolor = self.bgcolor,
32                                 colourBarScale = self.parser.getOption('cmap_scale'),
33                                 labelInterval= self.parser.getOption('contour_label_interval'),
34                                 numLines = self.parser.getOption('num_contour_lines'),
35                                 fontSize = self.parser.getOption('contour_font_size'),
36                                 intervals = self.parser.getOption('intervals'),
37                                 transparent=self.transparent)
38       
39        return ld
40
41
42    @staticmethod
43    def makeColourBar(width , height, orientation, units, renderOpts, variable):
44       
45        parser = SlabOptionsParser(SlabContour.renderingOptions, renderOpts)
46               
47        minval = parser.getOption('cmap_min')
48        if minval == None:
49            minval = variable.min()
50           
51        maxval = parser.getOption('cmap_max')
52        if maxval == None:
53            maxval = variable.max()
54           
55            # can't have a colourbar with an infinite maximum, take the highest
56            # non-inf value.
57            if maxval == numpy.inf:
58                maxval = numpy.ma.masked_equal(variable, numpy.inf).max()
59       
60        im = geoplot.colour_bar.getColourBarImage(width, height, 
61                                             label='Units of measure: %s' % str(units),
62                                             cmap=parser.getOption('cmap'), 
63                                             colourBarMin=minval,
64                                             colourBarMax=maxval,
65                                             colourBarScale=parser.getOption('cmap_scale'),
66                                             numIntervals=parser.getOption('num_contour_lines') - 1, 
67                                             orientation=orientation,
68                                             intervals=parser.getOption('intervals'),
69                                             intervalNames=parser.getOption('intervalNames'),
70                                             colourBarStyle='line',
71                                             )
72   
73        return im
Note: See TracBrowser for help on using the repository browser.