Ignore:
Timestamp:
16/04/08 16:44:07 (12 years ago)
Author:
spascoe
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI05-delivery/ows_framework/branches/ows_framework-refactor/ows_common/ows_common/pylons/wms_controller.py

    r3778 r3786  
    6363        print "loading layers" 
    6464        #print self.layers 
    65         self.layers = self.layerMapper.map(**kwargs) 
     65        self.layers = self.layerMapper.map() 
    6666 
    6767    #------------------------------------------------------------------------- 
     
    153153        # This plays nicer with mapClient. 
    154154        if ',' in layerName: 
    155             layerName = layerName.split(',')[0] 
    156             #raise InvalidParameterValue( 
    157             #    'Multi-layer GetMap requests are not supported', 'layers') 
     155            #layerName = layerName.split(',')[0] 
     156            raise InvalidParameterValue( 
     157                'Multi-layer GetLegend requests are not supported', 'layers') 
    158158        try: 
    159159            layerObj = self.layers[layerName] 
     
    239239 
    240240        # Dimension handling 
    241         finalImg = Image.new('RGBA', (width, height)) 
     241        finalImg = Image.new('RGBA', (width, height), (0,0,0,0)) 
    242242        # Multiple Layers handling..   
    243243        for layerName, layerObj in layers.iteritems(): 
     
    352352            raise InvalidParameterValue('Version %s not supported' % version, 
    353353                                        'version') 
    354         layerName, layerObj = self._getLayerParamInfo('query_layers') 
    355         format = self.getOwsParam('info_format') 
    356         if format not in layerObj.featureInfoFormats: 
    357             raise InvalidParameterValue( 
    358                 'Layer %s does not support GetFeatureInfo in format %s' % 
    359                 (layerName, format), 'info_format') 
    360  
    361         # Coordinate parameters 
     354 
     355        # Coordinate parameters 
    362356        bbox = tuple(float(x) for x in self.getOwsParam('bbox').split(',')) 
    363357        width = int(self.getOwsParam('width')) 
    364358        height = int(self.getOwsParam('height')) 
    365  
    366         if version == '1.1.1': 
    367             srs = self.getOwsParam('srs') 
    368         else: 
    369             srs = self.getOwsParam('crs') 
    370  
    371         if srs not in layerObj.crss: 
    372             raise InvalidParameterValue('Layer %s does not support SRS %s' % 
    373                                         (layerName, srs)) 
    374  
    375         # Dimension handling 
    376         dimValues = {} 
    377         for dimName, dim in layerObj.dimensions.items(): 
    378             defaultValue = dim.extent[0] 
    379             dimValues[dimName] = self.getOwsParam(dimName, default=defaultValue) 
    380         # Get pixel location 
     359           
     360        # Get pixel location 
    381361        i = int(self.getOwsParam('i')) 
    382362        j = int(self.getOwsParam('j')) 
     
    384364        # Translate to geo-coordinates 
    385365        x, y = bbox_util.pixelToGeo(i, j, bbox, width, height) 
    386  
    387         # Call the layer 
    388         response.headers['Content-Type'] = format 
    389         response.write(layerObj.getFeatureInfo(format, srs, (x, y), dimValues)) 
     366        #start preparing GetFeatureInfo response. Assumes "HTML" output format 
     367 
     368        htmlResponse = "<html><body><p> <b>Feature Information about pixel position: "+self.getOwsParam('i')+","+self.getOwsParam('j')+"/geo position: "+str(x)+","+str(y) +"<b/></p>" 
     369         
     370         
     371        layers = self._getLayerParam('query_layers') 
     372        #Adjusts response for multiple layers 
     373        if len(layers) > 1: 
     374            htmlResponse = htmlResponse+" Multiple possible features found as follows:" 
     375   
     376        htmlResponse = htmlResponse+"<ul>" 
     377         
     378        format = self.getOwsParam('info_format') 
     379        for layerName, layerObj in layers.iteritems(): 
     380            if format not in layerObj.featureInfoFormats: 
     381                raise InvalidParameterValue('Layer %s does not support GetFeatureInfo in format %s' %(layerName, format), 'info_format') 
     382 
     383        
     384 
     385            if version == '1.1.1': 
     386                srs = self.getOwsParam('srs') 
     387            else: 
     388                srs = self.getOwsParam('crs') 
     389 
     390            if srs not in layerObj.crss: 
     391                raise InvalidParameterValue('Layer %s does not support SRS %s' % 
     392                                                (layerName, srs)) 
     393 
     394        # Dimension handling 
     395            dimValues = {} 
     396            for dimName, dim in layerObj.dimensions.items(): 
     397                defaultValue = dim.extent[0] 
     398                dimValues[dimName] = self.getOwsParam(dimName, default=defaultValue) 
     399         
     400            htmlResponse = htmlResponse+"<li> Layer Name: "+layerName+" <br />" 
     401        # Call the layer 
     402            htmlResponse =htmlResponse+layerObj.getFeatureInfo(format, srs, (x, y), dimValues)+"</li>" 
     403         
     404        htmlResponse = htmlResponse+"</ul></body></html>" 
     405         
     406        response.headers['Content-Type'] = format 
     407        response.write(htmlResponse) 
    390408 
    391409    def GetLegend(self): 
Note: See TracChangeset for help on using the changeset viewer.