source: qesdi/geoplot/trunk/lib/geoplot/tests/integration/test_output_layer_drawer_all.py @ 5412

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/qesdi/geoplot/trunk/lib/geoplot/tests/integration/test_output_layer_drawer_all.py@5412
Revision 5412, 3.8 KB checked in by pnorton, 11 years ago (diff)

Cleaned up the layers drawing code slightly and added some additional tests that create images using the layer drawing objects.

Line 
1import logging
2import os
3import Image
4
5from geoplot.layer_drawer_grid import LayerDrawerGrid
6from geoplot.layer_drawer_coastline import LayerDrawerCoastlines
7from geoplot.layer_drawer_contour import LayerDrawerContour
8
9from geoplot.tests import outputsDir
10
11from geoplot.tests.make_ll_grid_data import makeLLVar
12from geoplot.tests.make_rotated_grid_data import makeRotatedGridVar
13from geoplot.tests.make_national_grid_data import makeNationalGridVar
14import geoplot.tests.make_data_functions as make_data_functions 
15
16import matplotlib.cm as cm
17
18log = logging.getLogger(__name__)
19
20
21def drawLatLon():
22   
23    var = makeLLVar('var', 
24                    lonBounds=(-10,10), latBounds=(40,60), 
25                    nx=100, ny=100, 
26                    function=make_data_functions.fnSinXsqAddCosYsq)
27   
28    gridLd = LayerDrawerGrid(var, gridType='latlon', 
29                         showGridLines=True, 
30                         cmap=cm.jet, 
31                         cmapRange=(var.min(), var.max()),
32                         transparent=False)
33   
34    contourLd = LayerDrawerContour(var, gridType='latlon', 
35                         cmap=cm.gray, 
36                         cmapRange=(var.min(), var.max()),
37                         transparent=True)
38   
39    coastLd = LayerDrawerCoastlines(resolution='i',
40                               transparent=True)     
41   
42    _drawImages(gridLd, contourLd, coastLd, 'latlon_data')
43
44
45def drawNational():
46   
47    var = makeNationalGridVar('var')
48   
49   
50    gridLd = LayerDrawerGrid(var, gridType='national', 
51                         showGridLines=True, 
52                         cmap=cm.jet, 
53                         cmapRange=(var.min(), var.max()))
54   
55
56    contourLd = LayerDrawerContour(var, gridType='national', 
57                         cmap=cm.gray, 
58                         cmapRange=(var.min(), var.max()),
59                         transparent=True)   
60   
61    coastLd = LayerDrawerCoastlines(resolution='i',
62                               transparent=True)     
63   
64    _drawImages(gridLd, contourLd, coastLd, 'national_data')
65
66def drawRotated():
67   
68    var, rotVar = makeRotatedGridVar('var')
69   
70    atts = ['grid_north_pole_longitude','grid_north_pole_latitude','north_pole_grid_longitude']
71    for att in atts:
72        setattr(var,att, getattr(rotVar, att))
73       
74    gridLd = LayerDrawerGrid(var, gridType='rotated', 
75                         showGridLines=True, 
76                         cmap=cm.jet, 
77                         cmapRange=(var.min(), var.max()))
78           
79    contourLd = LayerDrawerContour(var, gridType='rotated', 
80                         cmap=cm.gray, 
81                         cmapRange=(var.min(), var.max()),
82                         transparent=True)
83   
84    coastLd = LayerDrawerCoastlines(resolution='i',
85                               transparent=True)     
86   
87    _drawImages(gridLd, contourLd, coastLd, 'rotated_data')
88
89def _drawImages(gridLd, contourLd, coastLd, name):
90   
91    kwargs = {'xLimits':(-15, 15),
92              'yLimits':(35,65),
93              'width':800,
94              'height':800,}
95
96   
97    for projection in ['latlon','national']:
98       
99        finalImg = Image.new('RGBA', (kwargs['width'], kwargs['height']), (0,0,0,0))
100       
101        for ld in [coastLd, contourLd, gridLd ]:
102            ld.projection = projection
103            img = ld.makeImage(**kwargs) 
104            finalImg = Image.composite(finalImg, img, finalImg)
105       
106       
107        filepath = os.path.join(outputsDir, 'layer_%s_%s_project.png' % (name, projection)) 
108        finalImg.save(filepath, 'PNG')
109        print "wrote %s" % (filepath,)
110
111if __name__ == '__main__':
112   
113   
114    LOG_FORMAT_STRING = '%(name)-20s %(asctime)s ln:%(lineno)-3s %(levelname)-8s\n %(message)s\n'
115    logging.basicConfig(level=logging.DEBUG, format=LOG_FORMAT_STRING)
116   
117   
118    drawLatLon()
119    drawNational()
120    drawRotated()
Note: See TracBrowser for help on using the repository browser.