#!/usr/bin/env python import unittest from Numeric import zeros, array, allclose from math import sqrt, pi from geospatial_data import * class Test_Geospatial_data(unittest.TestCase): def setUp(self): pass def tearDown(self): pass def test_0(self): """Basic points """ from coordinate_transforms.geo_reference import Geo_reference points = [[1.0, 2.1], [3.0, 5.3]] G = Geospatial_data(points) assert allclose(G.data_points, [[1.0, 2.1], [3.0, 5.3]]) #Check defaults assert G.attributes is None assert G.geo_reference.zone == Geo_reference().zone assert G.geo_reference.xllcorner == Geo_reference().xllcorner assert G.geo_reference.yllcorner == Geo_reference().yllcorner def test_1(self): points = [[1.0, 2.1], [3.0, 5.3]] attributes = [2, 4] G = Geospatial_data(points, attributes) assert G.attributes.keys()[0] == 'attribute' assert allclose(G.attributes.values()[0], [2, 4]) def test_2(self): from coordinate_transforms.geo_reference import Geo_reference points = [[1.0, 2.1], [3.0, 5.3]] attributes = [2, 4] G = Geospatial_data(points, attributes, geo_reference = Geo_reference(56, 100, 200)) assert G.geo_reference.zone == 56 assert G.geo_reference.xllcorner == 100 assert G.geo_reference.yllcorner == 200 def test_get_attribute_values_1(self): from coordinate_transforms.geo_reference import Geo_reference points = [[1.0, 2.1], [3.0, 5.3]] attributes = [2, 4] G = Geospatial_data(points, attributes, geo_reference = Geo_reference(56, 100, 200)) P = G.get_data_points() assert allclose(P, [[1.0, 2.1], [3.0, 5.3]]) V = G.get_attribute_values() #Simply get them assert allclose(V, [2, 4]) V = G.get_attribute_values('attribute') #Get by name assert allclose(V, [2, 4]) def test_get_attribute_values_2(self): """Multiple attributes """ from coordinate_transforms.geo_reference import Geo_reference points = [[1.0, 2.1], [3.0, 5.3]] attributes = {'a0': [0, 0], 'a1': [2, 4], 'a2': [79.4, -7]} G = Geospatial_data(points, attributes, geo_reference = Geo_reference(56, 100, 200), default_attribute_name = 'a1') P = G.get_data_points() assert allclose(P, [[1.0, 2.1], [3.0, 5.3]]) V = G.get_attribute_values() #Get default attribute assert allclose(V, [2, 4]) V = G.get_attribute_values('a0') #Get by name assert allclose(V, [0, 0]) V = G.get_attribute_values('a1') #Get by name assert allclose(V, [2, 4]) V = G.get_attribute_values('a2') #Get by name assert allclose(V, [79.4, -7]) try: V = G.get_attribute_values('hdnoatedu') #Invalid except AssertionError: pass else: raise 'Should have raised exception' def test_conversions_to_points_dict(self): """test conversions to points_dict """ from coordinate_transforms.geo_reference import Geo_reference points = [[1.0, 2.1], [3.0, 5.3]] attributes = {'a0': [0, 0], 'a1': [2, 4], 'a2': [79.4, -7]} G = Geospatial_data(points, attributes, geo_reference = Geo_reference(56, 100, 200), default_attribute_name = 'a1') points_dict = geospatial_data2points_dictionary(G) assert points_dict.has_key('pointlist') assert points_dict.has_key('attributelist') assert points_dict.has_key('geo_reference') assert allclose( points_dict['pointlist'], points ) A = points_dict['attributelist'] assert A.has_key('a0') assert A.has_key('a1') assert A.has_key('a2') assert allclose( A['a0'], [0, 0] ) assert allclose( A['a1'], [2, 4] ) assert allclose( A['a2'], [79.4, -7] ) geo = points_dict['geo_reference'] assert geo is G.geo_reference def test_conversions_from_points_dict(self): """test conversions from points_dict """ from coordinate_transforms.geo_reference import Geo_reference points = [[1.0, 2.1], [3.0, 5.3]] attributes = {'a0': [0, 0], 'a1': [2, 4], 'a2': [79.4, -7]} points_dict = {} points_dict['pointlist'] = points points_dict['attributelist'] = attributes points_dict['geo_reference'] = Geo_reference(56, 100, 200) G = points_dictionary2geospatial_data(points_dict) P = G.get_data_points() assert allclose(P, [[1.0, 2.1], [3.0, 5.3]]) #V = G.get_attribute_values() #Get default attribute #assert allclose(V, [2, 4]) V = G.get_attribute_values('a0') #Get by name assert allclose(V, [0, 0]) V = G.get_attribute_values('a1') #Get by name assert allclose(V, [2, 4]) V = G.get_attribute_values('a2') #Get by name assert allclose(V, [79.4, -7]) if __name__ == "__main__": suite = unittest.makeSuite(Test_Geospatial_data,'test') runner = unittest.TextTestRunner() runner.run(suite)