Ignore:
Timestamp:
07/03/08 12:34:02 (14 years ago)
Author:
spascoe
Message:

Uses new ows_common interface. Works with Cadcorp (at least partially).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • DPPP/ukcip02_server/trunk/ukcip_server/ukcip_server/model/pywms/impl.py

    r3533 r3565  
    66 
    77""" 
    8 from interfaces import ILayer, ILayerView, IDimension 
     8from ows_common.service.wms_iface import ILayer, ILayerSlab, IDimension 
    99from wms_cdms import SimpleCdmsLayer, CdmsTimeDimension, CdmsGrid 
    1010import cdtime 
     
    2121    def __init__(self, cdmsVar, GridClass=CdmsGrid): 
    2222        try: 
    23             title = cdmsVar.long_name 
     23            self.title = cdmsVar.long_name 
    2424        except AttributeError: 
    25             title = cdmsVar.id 
     25            self.title = cdmsVar.id 
    2626             
    2727        self._layer = SimpleCdmsLayer(cdmsVar, title, GridClass=GridClass) 
     
    2929        self.crss = [GridClass.crs] 
    3030        self.units = self._layer.units 
    31         self.dimensions = self._layer.dimensions 
     31 
     32        dims = {} 
     33        for dimName, dim in self._layer.dimensions.items(): 
     34            dims[dimName] = Dimension(dim) 
     35        self.dimensions = dims 
     36 
     37         
     38 
    3239 
    3340    def getBBox(self, crs): 
    34         raise NotImplementedError 
     41        # Get BBOX from pywms layer 
     42        var = self._layer.var 
     43        xAxis = var.getAxis(var.getAxisIndex('eastings')) 
     44        yAxis = var.getAxis(var.getAxisIndex('northings')) 
     45        #!NOTE order specific code 
     46        return (xAxis[0], yAxis[-1], xAxis[-1], yAxis[0]) 
    3547 
    36     def getView(self, crs, dimValues=None, renderOpts={}): 
     48    def getSlab(self, crs, dimValues=None, renderOpts={}): 
    3749        if crs != self.crss[0]: 
    3850            raise ValueError("CRS %s not supported on this layer" % crs) 
    3951         
    40         return CdmsLayerView(crs, dimValues, renderOpts, self) 
    41      
     52        return CdmsLayerSlab(crs, dimValues, renderOpts, self) 
    4253 
    43 class CdmsLayerView(ILayerView): 
     54    def getCacheKey(self, crs, dimValues=None, renderOpts={}): 
     55        return '%s:%s:%s' % (crs, dimValues, renderOpts) 
     56 
     57class CdmsLayerSlab(ILayerSlab): 
    4458    def __init__(self, crs, dimValues, renderOpts, layer): 
    4559        self.crs = crs 
     
    4761        self.renderOpts = renderOpts 
    4862        self.layer = layer 
    49         self.bbox = NotImplemented 
     63        self.bbox = layer.getBBox(crs) 
    5064 
    5165        self._renderer = RGBARenderer(renderOpts['minValue'], renderOpts['maxValue']) 
     
    6074        raise NotImplementedError 
    6175     
     76 
     77class Dimension(IDimension): 
     78    """ 
     79    Wrapper to fix some interface differences. 
     80 
     81    """ 
     82    def __init__(self, pywmsDim): 
     83        self.units = pywmsDim.units 
     84        self.extent = pywmsDim.extent.split(',') 
Note: See TracChangeset for help on using the changeset viewer.