Changeset 5692 for cows


Ignore:
Timestamp:
07/09/09 13:13:31 (10 years ago)
Author:
pnorton
Message:

Made some modifications to the data renderer backend. The display options are now attached to each of the slabs rather than being stored in the shared option parser and the controller.

I've also added some code to generate the display options JSON string.

Location:
cows/trunk/cows/service/imps/data_reader_geoplot_backend
Files:
8 added
2 deleted
4 edited

Legend:

Unmodified
Added
Removed
  • cows/trunk/cows/service/imps/data_reader_geoplot_backend/data_reader_geoplot_layer_mapper.py

    r5684 r5692  
    1414from cows.service.imps.data_reader_geoplot_backend.data_readers.csml_data_reader import CSMLDataReader 
    1515from cows.service.imps.data_reader_geoplot_backend.data_readers.modis_file_reader import ModisFileReader 
     16 
    1617 
    1718log = logging.getLogger(__name__) 
  • cows/trunk/cows/service/imps/data_reader_geoplot_backend/data_reader_geoplot_wms_layer.py

    r5684 r5692  
    1717log = logging.getLogger(__name__) 
    1818 
    19 from cows.service.imps.data_reader_geoplot_backend.data_reader_geoplot_wms_layer_slab import DRGeoplotWmsLayerSlab, STYLES 
    20 from cows.service.imps.data_reader_geoplot_backend.data_reader_geoplot_render_options_parser import DRGeoplotRenderOptionsParser  
    21  
    2219import geoplot.colour_bar 
    2320 
     
    2724from routes import url_for 
    2825 
     26from cows.service.imps.data_reader_geoplot_backend.geoplot_slabs.geoplot_slab_contour import GeoplotSlabContour 
     27from cows.service.imps.data_reader_geoplot_backend.geoplot_slabs.geoplot_slab_grid import GeoplotSlabGrid 
     28 
     29 
    2930class DRGeoplotWmsLayer(IwmsLayer): 
     31 
     32    slab_classes = [GeoplotSlabGrid, GeoplotSlabContour] 
     33    default_slab_class = GeoplotSlabGrid 
    3034     
    3135    EnableDisplayOptions = False 
     
    103107        log.debug("got netcdf in %ss" % (time.time() - st,)) 
    104108         
     109        slabClass = self._getSlabClass(style) 
     110         
    105111        bbox=self.getBBox(crs) 
    106112         
    107         slab = DRGeoplotWmsLayerSlab(netcdfVar, self.title, style, crs, dimValues, transparent, bbox, additionalParams) 
     113        slab = slabClass(netcdfVar, self.title, crs, dimValues, transparent, bbox, additionalParams) 
    108114                
    109115        return slab 
     
    126132 
    127133        #set the default style if none provided 
    128         if style == None or style == "": 
    129             s = STYLES.DEFAULT 
    130         else: 
    131             s = style 
     134        s = self._getActualStyle(style) 
    132135             
    133136        return '%s:%s:%s:%s:%s:%s:%s' % (self.name, crs, s, dimList, 
    134137                                      transparent, bgcolor, additionalParams) 
     138 
     139    def _getActualStyle(self, style=None): 
     140        actualStyle = None 
     141         
     142        if style == 'default' or style == '': 
     143            actualStyle = DRGeoplotWmsLayer.default_slab_class.style 
     144        else: 
     145            actualStyle = style 
     146         
     147        if actualStyle not in [x.style for x in DRGeoplotWmsLayer.slab_classes]: 
     148             Exception("No slab class found for style = %s"  % (style,)) 
     149              
     150        return actualStyle 
     151     
     152    def _getSlabClass(self, style): 
     153        slabClass = None 
     154         
     155        s = self._getActualStyle(style) 
     156         
     157        for klass in DRGeoplotWmsLayer.slab_classes: 
     158            if klass.style == s: 
     159                slabClass = klass 
     160                break 
     161         
     162        if slabClass == None: 
     163             Exception("No slab class found for style = %s"  % (style,)) 
     164         
     165        return slabClass 
    135166 
    136167    def getFeatureInfo(self, format, crs, point, dimValues): 
     
    238269        legendURL = LegendURL(630, 80, format='img/png', onlineResource=onlineRes ) 
    239270         
    240         gridStyle = Style(STYLES.GRID, 'Grid Boxes', legendURLs=[legendURL] ) 
    241         contourStyle = Style(STYLES.CONTOUR, 'Contour Lines', legendURLs=[legendURL] ) 
    242          
    243         return [gridStyle, contourStyle] 
     271        styles = [] 
     272        for klass in DRGeoplotWmsLayer.slab_classes: 
     273             
     274            styleName = klass.style 
     275             
     276            title = getattr(klass, 'title', None) 
     277             
     278            if title is None: 
     279                title = styleName 
     280             
     281            s = Style(styleName, title, legendURLs=[legendURL] ) 
     282             
     283            styles.append(s) 
     284         
     285        return styles 
    244286     
    245287    def _buildMetadataURL(self): 
  • cows/trunk/cows/service/imps/data_reader_geoplot_backend/data_readers/csml_data_reader.py

    r5682 r5692  
    107107        "Opens up the csml and retrieves the variable described by the dimensions" 
    108108         
     109 
     110        log.debug("featureId = %s, dimValues = %s" % (featureId, dimValues)) 
    109111         
    110112        dimList = list(dimValues.items()) 
     
    146148            variable = self.varcache[cacheKey] 
    147149         
    148          
    149         log.debug("variable.getAxisList() = %s" % (variable.getAxisList(),)) 
    150          
    151150        return variable 
    152151     
  • cows/trunk/cows/service/imps/data_reader_geoplot_backend/data_readers/modis_file_reader.py

    r5684 r5692  
    5757         
    5858        convertedDimVals = self._convertDimValues(dimValues) 
    59          
     59 
    6060        if name == 'landtype_common': 
    6161            var = self._getLandtypeCommon(convertedDimVals) 
     
    123123        mask = sumArr == 0.0 
    124124         
     125#        log.debug("sumArr.max() = %s" % (sumArr.max(),)) 
     126#        log.debug("sumArr.min() = %s" % (sumArr.min(),)) 
     127         
     128        #mask = sumArr < 0.9 
     129         
    125130        #get the index of the maximum for the actual data ( should be 0-15) 
    126131        arr = self.var[:].argmax(2) 
    127          
     132 
    128133        common_var = cdms.createVariable(arr, axes=self.var.getAxisList()[0:2], 
    129134                                         mask=mask) 
Note: See TracChangeset for help on using the changeset viewer.