Changeset 4581


Ignore:
Timestamp:
09/12/08 16:48:08 (11 years ago)
Author:
domlowe
Message:

more merging

Location:
cows/branches/wcsmerge/cows
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • cows/branches/wcsmerge/cows/model/wcs.py

    r4008 r4581  
    1212 
    1313 
    14 from cows.contents import Contents, DatasetSummary 
    15 from cows.domain import Domain 
     14from cows.model.contents import Contents, DatasetSummary 
     15from cows.model.domain import Domain 
    1616 
    1717class WcsDatasetSummary(DatasetSummary): 
  • cows/branches/wcsmerge/cows/pylons/templates/wcs_capabilities_1_0_0.xml

    r4574 r4581  
    4141  ?> 
    4242 
    43   <Layer py:def="markupLayer(ds)" queryable="${int(ds.queryable)}"> 
     43  <Coverage py:def="markupLayer(ds)"> 
    4444    <Name py:content="ds.identifier"/> 
    4545    <Title py:content="ds.titles[0]"/> 
     
    5454    </py:for> 
    5555 
    56     <!-- TODO Attribution from metadata --> 
    57     <!-- TODO AuthorityURL from metadata --> 
    58     <!-- TODO FeatureListURL from metadata --> 
    59     <!-- TODO Identifier from metadata --> 
    60     <!-- TODO DataURL from metadata --> 
    61     <!-- TODO MetadataURL from metadata --> 
    62      
    63     <!--!NOTE: this is an ad-hoc implementation not using the ows_common.model classes 
    64          TODO: fixme --> 
    65     <!-- TODO ScaleHint --> 
    6656 
    67     <Dimension py:for="d_n, d in ds.dimensions.iteritems()" 
    68                name="${d_n}" units="${d.valuesUnit}" 
    69                unitSymbol="${d.unitSymbol}"/> 
    70     <Extent py:for="d_n, d in ds.dimensions.iteritems()" name="${d_n}" default="${d.defaultValue}"  
    71             py:content="','.join(d.possibleValues.allowedValues)"/> 
    72 <!--! nearestValue="${int(d.nearestValue)}" --> 
    73     <Style> 
    74       <Name>default</Name> 
    75       <Title>Default</Title> 
    76       <LegendURL width="${ds.legendSize[0]}" height="${ds.legendSize[1]}"> 
    77         <Format py:for="f in ds.legendFormats" py:content="f"/> 
    78         <OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"  
    79                         xlink:href="${h.url_for(qualified=True, action='index')}?request=GetLegend&amp;layers=${ds.identifier}"/> 
    80       </LegendURL> 
    81     </Style> 
    82  
    83  
    84   </Layer> 
     57  </Coverage> 
    8558 
    8659  <!--! ====================================================================== --> 
  • cows/branches/wcsmerge/cows/pylons/wcs_controller.py

    r4574 r4581  
    1919from genshi.template import TextTemplate 
    2020 
    21 from cows.model.wms import WmsDatasetSummary, Dimension 
     21from cows.model.wms import Dimension 
     22from cows.model.wcs import WcsDatasetSummary 
    2223from cows.model import PossibleValues, WGS84BoundingBox, BoundingBox, Contents 
    2324from cows.pylons import ows_controller 
     
    7980 
    8081        """ 
    81         ows_controller.addOperation('GetMap', formats=self._pilImageFormats.keys()) 
    82         ows_controller.addOperation('GetContext') 
    83         ows_controller.addOperation('GetLegend', 
    84                                     formats=['image/png']) 
    85         ows_controller.addOperation('GetInfo') 
    86         ows_controller.addOperation('GetCoverage') 
    87          
     82 
     83        ows_controller.addOperation('GetCoverage')  
    8884        featureInfoFormats = Set() 
    8985 
    9086        log.debug('Loading capabilities contents') 
    9187        c.capabilities.contents = Contents() 
    92         for layerName, layer in self.layers.items(): 
    93             log.debug('LayerName: %s' % layerName) 
    94             log.debug('Loading layer %s' % layerName) 
    95  
    96             wgs84BBox = WGS84BoundingBox(layer.wgs84BBox[:2], 
    97                                          layer.wgs84BBox[2:]) 
     88        for cvgName, coverage in self.layers.items(): 
     89            log.debug('Loading coverage %s' % cvgName) 
     90 
     91            wgs84BBox = WGS84BoundingBox(coverage.wgs84BBox[:2], 
     92                                         coverage.wgs84BBox[2:]) 
    9893            # Get CRS/BBOX pairs 
    9994            bboxObjs = [] 
    100             for crs in layer.crss: 
    101                 bbox = layer.getBBox(crs) 
     95            for crs in coverage.crss: 
     96                bbox = coverage.getBBox(crs) 
    10297                bboxObjs.append(BoundingBox(bbox[:2], bbox[2:], crs=crs)) 
    10398            # Get dimensions 
    10499            dims = {} 
    105             for dimName, dim in layer.dimensions.items(): 
     100            for dimName, dim in coverage.dimensions.items(): 
    106101                dimParam = self._mapDimToParam(dimName) 
    107102                dims[dimParam] = Dimension(valuesUnit=dim.units, 
     
    109104                                          possibleValues= 
    110105                                            PossibleValues.fromAllowedValues(dim.extent)) 
    111             # Does the layer implement GetFeatureInfo? 
    112             if layer.featureInfoFormats: 
    113                 queryable = True 
    114                 featureInfoFormats.union_update(layer.featureInfoFormats) 
    115             else: 
    116                 queryable = False 
    117106                 
    118107            # Create the cows object 
    119             ds = WmsDatasetSummary(identifier=layerName, 
    120                                    titles=[layer.title], 
    121                                    CRSs=layer.crss, 
    122                                    wgs84BoundingBoxes=[wgs84BBox], 
    123                                    boundingBoxes=bboxObjs, 
    124                                    abstracts=[layer.abstract], 
    125                                    dimensions=dims, 
    126                                    queryable=queryable) 
    127  
    128             # Stuff that should go in the capabilities tree eventually 
    129             ds.legendSize = layer.legendSize 
    130             ds.legendFormats = ['image/png'] 
     108            #From the ows_servers stack - allthese values should come from  the Coverage object. 
     109            ds = WcsDatasetSummary(identifier=coverage.id, 
     110                                 titles=coverage.title, 
     111                                 boundingBoxes=[BoundingBox([bbox[0],bbox[1]], [bbox[2],bbox[3]], 
     112                                 crs='CRS:84')],  
     113                                 description=coverage.description, 
     114                                 abstracts=coverage.abstract, 
     115                                 formats=['application/cf-netcdf'], 
     116                                 supportedCRSs=coverage.crss,  
     117                                 timelimits=coverage.timeLimits 
     118                                 ) 
     119 
     120 
    131121 
    132122            c.capabilities.contents.datasetSummaries.append(ds) 
    133  
    134         # Add this operation here after we have found all formats 
    135         ows_controller.addOperation('GetFeatureInfo', 
    136                                     formats = list(featureInfoFormats)) 
    137123 
    138124     
  • cows/branches/wcsmerge/cows/service/imps/csmlbackend/wcs_csmllayer.py

    r4574 r4581  
    101101        self.abstract=abstract 
    102102        self.dimensions=dimensions 
     103        self.description='TO DO - coverage description' 
     104        self.timeLimits='t1, t2' 
    103105        self.units=units 
    104106        self.crss=crss 
    105107        self._feature=feature 
     108        self.id=feature.id 
    106109        bb= self._feature.getCSMLBoundingBox().getBox() 
     110        #convert 0 - 360 to -180, 180 as per common WXS convention 
     111        if abs(bb[2]-bb[0]) >= 359 and abs(bb[2]-bb[0]) < 361: 
     112            bb[0], bb[2]=-180, 180 
     113        self.wgs84BBox = bb 
     114        self.featureInfoFormats = ['text/html'] 
    107115         
    108116    def getDescription(self): 
    109117        pass 
    110          
     118     
     119    def getBBox(self, crs): 
     120        """ 
     121        @return: A 4-typle of the bounding box in the given coordinate 
     122            reference system. 
     123        """ 
     124        #TODO: make this generic 
     125        return self.wgs84BBox 
     126     
    111127    def getSubset(self, crs, dimValues=None): 
    112128        """ 
Note: See TracChangeset for help on using the changeset viewer.