Changeset 5308 for cows


Ignore:
Timestamp:
19/05/09 14:20:57 (10 years ago)
Author:
domlowe
Message:

Fixing wms image rendering

Location:
cows/trunk/cows/service/imps
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • cows/trunk/cows/service/imps/csmlbackend/wms_csmllayer.py

    r4971 r5308  
    384384            self.iy=0 
    385385        lat = tvar.getLatitude() 
    386         lon = tvar.getLongitude() 
     386        lon = tvar.getLongitude()       
    387387        self.x0=lon[0] 
    388388        self.y0=lat[0] 
  • cows/trunk/cows/service/imps/pywms/render_imp.py

    r5052 r5308  
    4646 
    4747    def renderGrid(self, grid, bbox, width, height, cmap): 
     48        logger.debug('RENDER GRID STARTS HERE') 
    4849        cmap.set_bad('#ffffff', 0.0) 
    4950 
    50         logger.debug('grid %s, %s, %s, %s, %s, %s %s, %s' % 
     51        logger.debug('grid %s, %s, %s, %s, %s, %s, %s, %s' % 
    5152                    (grid.x0, grid.y0, grid.dx, grid.dy, grid.nx, grid.ny, 
    5253                     grid.ix, grid.iy)) 
    53         logger.debug('bbox %s' % (bbox,)) 
     54#        logger.debug('bbox %s' % (bbox,)) 
     55#        logger.debug('width %s'%width) 
     56#        logger.debug('height %s'%height) 
    5457 
    5558        # Get a pixel = grid-box image for the grid 
    5659        img = self._grid2Img(grid, cmap) 
    5760 
     61        logger.debug('image size%s' %str(img.size)) 
    5862        # Calculate the pixel-size of a grid box 
    59         pxPerDeg_x = float(width) / (bbox[2] - bbox[0]) 
    60         pxPerDeg_y = float(height) / (bbox[3] - bbox[1]) 
     63         
     64         
     65        numDeg_X=grid.dx*grid.nx 
     66        numDeg_Y=grid.dy*grid.ny 
     67        pxPerDeg_x=float(width)/numDeg_X 
     68        pxPerDeg_y=float(height)/numDeg_Y 
     69# modified from this:  
     70#        pxPerDeg_x = float(width) / (bbox[2] - bbox[0]) 
     71#        pxPerDeg_y = float(height) / (bbox[3] - bbox[1]) 
    6172        pxPerGrid_x = grid.dx * pxPerDeg_x 
    6273        pxPerGrid_y = grid.dy * pxPerDeg_y 
    6374 
    6475        # Scale Img to the right size 
     76        logger.debug('resizing to %s in X and %s in y'%(abs(pxPerGrid_x * grid.nx),abs(pxPerGrid_y * grid.ny))) 
    6577        img = img.resize(((abs(pxPerGrid_x * grid.nx), 
    6678                           abs(pxPerGrid_y * grid.ny)))) 
     
    7082        # Adapted so that the grid points represent the lower left corner of grid boxes 
    7183 
    72         # Find top-left corner of grid 
    73         if grid.dx > 0: 
    74             leftX = grid.x0 
    75         else: 
    76             leftX = grid.x0 + (grid.dx * (grid.nx - 1)) 
    77         if grid.dy > 0: 
    78             topY = grid.y0 + (grid.dy * (grid.ny - 1)) 
    79         else: 
    80             topY = grid.y0 
    81  
    82         logger.debug('top-left = %s x, %s y' % (leftX, topY)) 
    83  
    84         # Find pixel position of top left centre grid box 
    85         cx = width * ((leftX - bbox[0])/ (bbox[2] - bbox[0])) 
    86         cy = height * ((bbox[3] - topY) / (bbox[3] - bbox[1])) 
    87         logger.debug('top-left centre pixel = %s x, %s y' % (cx, cy)) 
    88  
    89         # Apply half width of grid box 
    90         #ox = int(cx - pxPerGrid_x / 2) 
    91         #oy = int(cy - pxPerGrid_y / 2) 
    92         ox,oy = int(cx), int(cy-pxPerGrid_y) 
    93         logger.debug('Offset: %s x, %s y' % (ox, oy)) 
     84#         
     85#         
     86#        # Find top-left corner of grid 
     87#        if grid.dx > 0: 
     88#            leftX = grid.x0 
     89#        else: 
     90#            leftX = grid.x0 + (grid.dx * (grid.nx - 1)) 
     91#        if grid.dy > 0: 
     92#            topY = grid.y0 + (grid.dy * (grid.ny - 1)) 
     93#        else: 
     94#            topY = grid.y0 
     95# 
     96#        logger.debug('top-left = %s x, %s y' % (leftX, topY)) 
     97# 
     98#        # Find pixel position of top left centre grid box 
     99#        cx = width * ((leftX - bbox[0])/ (bbox[2] - bbox[0])) 
     100#        cy = height * ((bbox[3] - topY) / (bbox[3] - bbox[1])) 
     101#        logger.debug('top-left centre pixel = %s x, %s y' % (cx, cy)) 
     102# 
     103#        # Apply half width of grid box 
     104#        ox = int(cx - pxPerGrid_x / 2) 
     105#        oy = int(cy - pxPerGrid_y / 2) 
     106##        ox,oy = int(cx), int(cy-pxPerGrid_y) 
     107#        logger.debug('Offset: %s x, %s y' % (ox, oy)) 
    94108 
    95109 
    96110        # Paste the grid image into the tile image 
    97111        tileImg = Image.new('RGBA', (width, height)) 
    98         logger.debug('Pasting image img%s into tileImg%s at (%s,%s)' % (img.size, tileImg.size, ox, oy)) 
    99         tileImg.paste(img, (ox, oy)) 
    100  
     112        #logger.debug('Pasting image img%s into tileImg%s at (%s,%s)' % (img.size, tileImg.size, ox, oy)) 
     113#        tileImg.paste(img, (ox, oy)) 
     114        tileImg.paste(img, (0,0)) 
    101115        return tileImg 
     116     
    102117 
    103118 
    104119    def _grid2Img(self, grid, cmap): 
    105120        """Returns the grid as an image where each pixel is one grid box. 
    106  
    107121        """ 
    108122        a = self._norm(grid.value) 
     
    119133     
    120134        img = Image.frombuffer("RGBA", img_buf.shape[1::-1], img_buf.tostring(), "raw", "RGBA", 0, 1) 
    121         img.save('tmp/raw1.png') 
     135#        img.save('/tmp/raw1.png') 
    122136 
    123137        # Rotate if axis order is x, y 
     
    132146            logger.debug('Flipping x') 
    133147            img = img.transpose(Image.FLIP_LEFT_RIGHT) 
    134  
    135  
    136148        return img 
    137149 
Note: See TracChangeset for help on using the changeset viewer.