/[thuban]/branches/WIP-pyshapelib-bramz/test/test_baserenderer.py
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/test/test_baserenderer.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/thuban/test/test_baserenderer.py revision 2551 by jonathan, Thu Jan 27 14:19:41 2005 UTC branches/WIP-pyshapelib-bramz/test/test_baserenderer.py revision 2734 by bramz, Thu Mar 1 12:42:59 2007 UTC
# Line 1  Line 1 
1  # Copyright (C) 2003 by Intevation GmbH  # Copyright (C) 2003, 2005, 2006 by Intevation GmbH
2  # Authors:  # Authors:
3  # Bernhard Herzog <[email protected]>  # Bernhard Herzog <[email protected]>
4    # Bernhard Reiter <[email protected]>
5  #  #
6  # This program is free software under the GPL (>=v2)  # This program is free software under the GPL (>=v2)
7  # Read the file COPYING coming with the software for details.  # Read the file COPYING coming with the software for details.
# Line 14  __version__ = "$Revision$" Line 15  __version__ = "$Revision$"
15  import os  import os
16  import binascii  import binascii
17  import unittest  import unittest
18    import locale
19    
20    import localessupport
21  from mockgeo import SimpleShapeStore  from mockgeo import SimpleShapeStore
22  import support  import support
23  support.initthuban()  support.initthuban()
# Line 32  import Thuban.Model.resource Line 35  import Thuban.Model.resource
35  from Thuban.UI.baserenderer import BaseRenderer, \  from Thuban.UI.baserenderer import BaseRenderer, \
36       add_renderer_extension, init_renderer_extensions       add_renderer_extension, init_renderer_extensions
37    
38    if Thuban.Model.resource.has_gdal_support():
39        from gdalwarp import ProjectRasterFile
40    
41  class MockDC:  class MockDC:
42    
# Line 89  class SimpleRenderer(BaseRenderer): Line 94  class SimpleRenderer(BaseRenderer):
94      def label_font(self):      def label_font(self):
95          return "label font"          return "label font"
96    
97      def draw_raster_data(self, x, y, data, format='BMP'):      def draw_raster_data(self, x, y, data, format='BMP', opacity=1.0):
98          self.raster_data = data          self.raster_data = data
99          self.raster_format = format          self.raster_format = format
100    
101        def projected_raster_layer(self, layer, srcProj, dstProj, extents,
102                                   resolution, dimensions, options):
103    
104            if not Thuban.Model.resource.has_gdal_support():
105                raise support.SkipTest("No gdal support")
106    
107            #print srcProj, dstProj,extents, resolution, dimensions, options
108    
109            return ProjectRasterFile(layer.GetImageFilename(),
110                                     srcProj, dstProj,
111                                     extents, resolution, dimensions,
112                                     options)
113    
114  class MockProjection:  class MockProjection:
115    
116      """Objects that look like projections but simply apply non-uniform scalings      """Objects that look like projections but simply apply non-uniform scalings
# Line 115  class TestBaseRenderer(unittest.TestCase Line 132  class TestBaseRenderer(unittest.TestCase
132      def setUp(self):      def setUp(self):
133          """Set self.to_destroy to an empty list          """Set self.to_destroy to an empty list
134    
135          Test should put all objects whose Destroy should be called atunittest.main          Tests should put all objects whose Destroy should be called at
136          the end into this list so that they're destroyed in tearDown          the end into this list so that they're destroyed in tearDown.
137          """          """
138          self.to_destroy = []          self.to_destroy = []
139    
# Line 262  class TestBaseRenderer(unittest.TestCase Line 279  class TestBaseRenderer(unittest.TestCase
279                             ('SetFont', "label font"),                             ('SetFont', "label font"),
280                             ('EndDrawing',)])                             ('EndDrawing',)])
281    
282        def test_projected_raster_layer(self):
283            if not Thuban.Model.resource.has_gdal_support():
284                raise support.SkipTest("No gdal support")
285    
286            layer = RasterLayer("raster layer",
287                                os.path.join("..", "Data", "iceland",
288                                             "island.tif"))
289    
290            dc = MockDC(size = (20, 20))
291            renderer = SimpleRenderer(dc, map, 34, (800, 2250))
292    
293            # The reference data as a base64 coded RAW image
294            raw_data = binascii.a2b_base64(
295                'UmbmUmbmUmbmUmbmUmbmAtYCJooCAtICAq4CJooCArICAuICArICAuYCAs4COn4CO'
296                'n4CAq4CAuICFpICUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmAuYCAqICAqoCAqoCFp'
297                'ICJooCIo4CCpoCQnoGOn4CDpYCOn4CUmbmUmbmNo6aEpYCLoYCAqICGpICFpICUmb'
298                'mAt4CUmbmNo6aAtICArYCAqoCKoYCMoICTnYKOn4CFpICUmbmUmbmUmbmUmbmAp4C'
299                'NoICArYCAr4CCpoCAqYCCpoCEpYCHo4CFpICHo4CGpICFpICKoYCTnYKMoICAp4CU'
300                'mbmUmbmUmbmUmbmUmbmUmbmAtYCAroCArYCCpoCAtYCAroCAtICAsYCUmbmAt4CAq'
301                'YCAroCMoICAs4CAs4CAtYCAt4CAqYCUmbmUmbmUmbmUmbmAtoCAtYCAq4CAtoCBp4'
302                'CAroCAqoCAq4CAr4CDpYCGpICAt4CAsICDpYCArICCpoCHo4CAs4CAuICUmbmUmbm'
303                'UmbmUmbmUmbmUmbmAuICAqICFpYCAq4CDpoCAqYCFpICAqYCUmbmNo6aAsYCCpoCD'
304                'pYCAqICAtoCUmbmAt4CAqoCCpoCAroCHo4CAsYCAq4CAsICAs4CAp4CUmbmAtYCAq'
305                'YCIooCHo4CAsICAr4CAqICEpYCAs4CAqICArICDpYCEpYCEpYCAr4CUmbmEpYCAs4'
306                'CAtICAs4CAqYCUmbmAtoCAp4CCpoCDpYCAq4CArICAqoCAqYCAqYCAtYCAtoCDpYC'
307                'At4CUmbmUmbmUmbmUmbmAt4CAsoCAsoCAp4CAp4CCpoCAsoCAt4CNo6aUmbmUmbmU'
308                'mbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmAt4CAtYCCpoCAqICAroCAr4CUmbmUm'
309                'bmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmb'
310                'mUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm'
311                'UmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmU'
312                'mbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUm'
313                'bmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmb'
314                'mUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm'
315                'UmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmU'
316                'mbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUm'
317                'bmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmb'
318                'mUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm'
319                'UmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm\n')
320    
321            raw_mask = binascii.a2b_base64(
322                '//8P//8P//8P//8P//8P//8P//8P//8P//8P//8P//8P//8P//8P//8P//8P/'
323                '/8P//8P//8P//8P//8P\n')
324    
325            raw_mask_inverted = binascii.a2b_base64(
326                'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
327                'AAAAAAAAAAAAAAAAAAA\n')
328    
329            raw_alpha = binascii.a2b_base64(
330                '/////////////////////////////////////////////////////////////'
331                '/////////////////////////////////////////////////////////////'
332                '/////////////////////////////////////////////////////////////'
333                '/////////////////////////////////////////////////////////////'
334                '/////////////////////////////////////////////////////////////'
335                '/////////////////////////////////////////////////////////////'
336                '/////////////////////////////////////////////////////////////'
337                '/////////////////////////////////////////////////////////////'
338                '/////////////////////////////////////////////w==\n')
339    
340            for opts, data in [[1,   (raw_data, raw_mask,          None)],
341                               [1|4, (raw_data, raw_mask_inverted, None)],
342                               [2,   (raw_data, None,              raw_alpha)]]:
343    
344                img_data = renderer.projected_raster_layer(layer, "", "",
345                                (-24, 65, -23, 66), [0, 0], (20, 20), opts)
346                self.assertEquals(img_data, data)
347    
348        def test_projected_raster_decimalcommalocale(self):
349            if not Thuban.Model.resource.has_gdal_support():
350                raise support.SkipTest("No gdal support")
351    
352            def _do_project_island():
353                """Project island.tif and return result."""
354                layer = RasterLayer("raster layer",
355                                    os.path.join("..", "Data", "iceland",
356                                                 "island.tif"))
357    
358                dc = MockDC(size = (10, 5))
359                renderer = SimpleRenderer(dc, map, 34, (800, 2250))
360    
361                projection = "+proj=latlong +to_meter=0.017453 +ellps=clrk66"
362                new_projection = "+proj=utm +zone=27 +ellps=clrk66"
363    
364                return renderer.projected_raster_layer(layer, \
365                                projection, new_projection, \
366                                (322003.1320390497, 6964094.1718668584, 876022.1891829354, 7460469.6276894147), [0, 0], (10,5), 1)
367    
368            oldlocale = localessupport.setdecimalcommalocale()
369            img_data2 = _do_project_island()
370            locale.setlocale(locale.LC_NUMERIC, oldlocale)
371    
372            img_data1 = _do_project_island()
373    
374            self.assertEquals(img_data1, img_data2)
375    
376      def test_raster_no_projection(self):      def test_raster_no_projection(self):
377          """Test BaseRenderer with raster layer and no projections          """Test BaseRenderer with raster layer and no projections
378    
# Line 277  class TestBaseRenderer(unittest.TestCase Line 388  class TestBaseRenderer(unittest.TestCase
388          layer = RasterLayer("raster layer",          layer = RasterLayer("raster layer",
389                              os.path.join("..", "Data", "iceland",                              os.path.join("..", "Data", "iceland",
390                                           "island.tif"))                                           "island.tif"))
391            layer.SetMaskType(layer.MASK_NONE)
392    
393          map.AddLayer(layer)          map.AddLayer(layer)
394          self.to_destroy.append(map)          self.to_destroy.append(map)
395    
# Line 287  class TestBaseRenderer(unittest.TestCase Line 400  class TestBaseRenderer(unittest.TestCase
400    
401          # The following commented out code block can be used to generate          # The following commented out code block can be used to generate
402          # the base64 coded reference image data          # the base64 coded reference image data
403          #hexed = binascii.b2a_base64(renderer.raster_data[2])          #hexed = binascii.b2a_base64(renderer.raster_data[2][0])
404          #while hexed:          #while hexed:
405              #print repr(hexed[:65])              #print repr(hexed[:65])
406              #hexed = hexed[65:]              #hexed = hexed[65:]
407    
408          # The reference data as a base64 coded BMP image          # The reference data as a base64 coded RAW image
409          raw_data = binascii.a2b_base64(          raw_data = binascii.a2b_base64(
410              'UmbmUmbmUmbmUmbmUmbmAtYCJooCAtICAq4CJooCArICAuICArICAuYCAs4COn4CO'              'UmbmUmbmUmbmUmbmUmbmAtYCJooCAtICAq4CJooCArICAuICArICAuYCAs4COn4CO'
411              'n4CAq4CAuICFpICUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmAuYCAqICAqoCAqoCFp'              'n4CAq4CAuICFpICUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmAuYCAqICAqoCAqoCFp'
# Line 319  class TestBaseRenderer(unittest.TestCase Line 432  class TestBaseRenderer(unittest.TestCase
432              'bmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmb'              'bmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmb'
433              'mUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm'              'mUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm'
434              'UmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm\n')              'UmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm\n')
435          self.assertEquals(renderer.raster_data, (20,20,(raw_data, None)))  
436            self.assertEquals(renderer.raster_data,
437                              (20,20,(raw_data, None, None)))
438    
439          self.assertEquals(renderer.raster_format, "RAW")          self.assertEquals(renderer.raster_format, "RAW")
440    
441          self.assertEquals(dc.calls,          self.assertEquals(dc.calls,

Legend:
Removed from v.2551  
changed lines
  Added in v.2734

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26