Changeset 1010


Ignore:
Timestamp:
Mar 4, 2005, 6:06:38 PM (20 years ago)
Author:
duncan
Message:

adding geo_ref to pts and msh file readers and writers

Location:
inundation/ga/storm_surge/pmesh/load_mesh
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • inundation/ga/storm_surge/pmesh/load_mesh

  • inundation/ga/storm_surge/pmesh/load_mesh/loadASCII.py

    r1005 r1010  
    5151
    5252from string import  find, rfind
    53 
    5453from Numeric import array, Float, Int16, Character,reshape, concatenate
    55 
    5654from os.path import splitext
    5755
     56from coordinate_transforms.geo_reference import Geo_reference
    5857
    5958import exceptions
     
    488487    Following lines:  <segment #> <vertex #>  <vertex #> [boundary tag]
    489488    """
     489    #FIXME (DSG-DSG) Do this to the triangulation keys as well
    490490    if not mesh_dict.has_key('points'):
    491491        mesh_dict['points'] = []
     
    774774                                    'num_of_region_tag_chars'))
    775775            outfile.variables['region_tags'][:] = mesh['region_tags']
    776        
     776
     777    # geo_reference info
     778    if mesh.has_key('geo_reference') and not mesh['geo_reference'] == None:
     779        mesh['geo_reference'].write_NetCDF(outfile)
     780                                                 
    777781    outfile.close()
    778782
     
    882886        mesh['region_max_areas'] = array([])
    883887    #mesh[''] = fid.variables[''][:]
    884        
     888     
     889    try:
     890        geo_reference = Geo_reference(NetCDFObject=fid)
     891        mesh['geo_reference'] = geo_reference
     892    except AttributeError, e:
     893        #geo_ref not compulsory
     894        mesh['geo_reference'] = None
     895   
    885896    fid.close()
    886897     
     
    10001011    dic['attributelist']['elevation'] = [[7.0,5.0]
    10011012    """
    1002     #FIXME: This format has issues.  There can't be an attribute called points
    1003    
     1013    #FIXME: (DSG)This format has issues.
     1014    # There can't be an attribute called points
     1015    # consider format change
    10041016
    10051017    from Scientific.IO.NetCDF import NetCDFFile
     
    10281040        attributes[key] = array(fid.variables[key])
    10291041       
    1030     point_atts['attributelist'] = attributes
     1042    point_atts['attributelist'] = attributes
     1043   
     1044    try:
     1045        geo_reference = Geo_reference(NetCDFObject=fid)
     1046        point_atts['geo_reference'] = geo_reference
     1047    except AttributeError, e:
     1048        #geo_ref not compulsory
     1049        point_atts['geo_reference'] = None
     1050   
     1051   
    10311052    fid.close()
    10321053   
     
    10391060    WARNING: This function mangles the point_atts data structure
    10401061    """
    1041     #FIXME: This format has issues.  There can't be an attribute called points
     1062    #FIXME: (DSG)This format has issues.
     1063    # There can't be an attribute called points
     1064    # consider format change
    10421065   
    10431066    from Scientific.IO.NetCDF import NetCDFFile
     
    10661089        outfile.createVariable(key, Float, ('number_of_points',))
    10671090        outfile.variables[key][:] = point_atts['attributelist'][key] #.astype(Float32)
     1091
     1092    if point_atts.has_key('geo_reference') and not point_atts['geo_reference'] == None:
     1093        point_atts['geo_reference'].write_NetCDF(outfile)
     1094       
    10681095    outfile.close()
    10691096                 
     
    11751202     
    11761203if __name__ == "__main__":
    1177     m = import_mesh("tee.txt")
    1178     print m
     1204    pass
  • inundation/ga/storm_surge/pmesh/load_mesh/test_loadASCII.py

    r1001 r1010  
    77# when the title attribute information is not consistent with the data in the
    88# file - DSG
    9 
    10 import sys
    11 sys.path.append('..')
     9# also test_export_mesh_file tests write_ASCII_triangulation  - DSG
    1210
    1311import tempfile
     
    1917from os.path import splitext
    2018
    21 from Numeric import array #Float, arrayrange, concatenate
     19from Numeric import array, allclose
    2220   
    2321from loadASCII import *
    24 from Numeric import array, allclose
     22from coordinate_transforms.geo_reference import Geo_reference
    2523
    2624class loadASCIITestCase(unittest.TestCase):
     
    4947        self.dict['segment_tags'] = ['50', '40', '30', '20', '40']
    5048        self.dict['vertex_attribute_titles'] = ['bed elevation', 'height']
     49        self.dict['geo_reference'] = Geo_reference(1.9,1.9,'zone65')
    5150       
    5251        self.sparse_dict ={}
     
    153152        write_ASCII_outline(fd,dict)
    154153        fd.close()
    155         loaded_dict = import_mesh(fileName)
     154        loaded_dict = import_mesh(fileName) #FIXME function names are wacky
    156155        os.remove(fileName)
    157156       
     
    189188                        array(dict['holes']),
    190189                         'test_import_mesh failed. Test 6')
     190       
    191191    def test_export_mesh_file(self):
    192192        import os
     
    359359                        array(dict['vertex_attribute_titles']),
    360360                        fail_string + ' failed!! Test 8')
    361  
    362     def baaaad(self):
    363        
    364         assert allclose(array(loaded_dict['point_attributes']),
    365                         array(dict['point_attributes']))
    366         self.failUnless(array(loaded_dict['outline_segments'])  ==
    367                         array(dict['outline_segments']),
    368                           fail_string + ' failed. Test 3')
    369         self.failUnless(array(loaded_dict['outline_segment_tags'])  ==
    370                         array(dict['outline_segment_tags']),
    371                           fail_string + ' failed! Test 4')
    372         self.failUnless(array(loaded_dict['regions'])  ==
    373                         array(dict['regions']),
    374                           fail_string + ' failed. Test 5')
    375         self.failUnless(array(loaded_dict['region_tags'])  ==
    376                         array(dict['region_tags']),
    377                           fail_string + ' failed. Test 5')
    378         self.failUnless(array(loaded_dict['region_max_areas'])  ==
    379                         array(dict['region_max_areas']),
    380                           fail_string + ' failed. Test 5')
    381         self.failUnless(array(loaded_dict['holes'])  ==
    382                         array(dict['holes']),
    383                           fail_string + ' failed. Test 6')
    384         self.failUnless(array(dict['vertices'])  ==
    385                         array(loaded_dict['vertices']),
    386                           fail_string + ' failed. Test 7')
    387         self.failUnless(array(dict['triangles'])  ==
    388                         array(loaded_dict['triangles']),
    389                           fail_string + ' failed. Test 8')
    390         self.failUnless(array(dict['segments'])  ==
    391                         array(loaded_dict['segments']),
    392                           fail_string + ' failed. Test 9')
    393         self.failUnless(array(dict['triangle_tags'])  ==
    394                         array(loaded_dict['triangle_tags']),
    395                           fail_string + ' failed. Test 10')
    396         self.failUnless(dict['vertex_attributes']  ==
    397                         loaded_dict['vertex_attributes'],
    398                           fail_string + ' failed. Test 11')
    399         self.failUnless(array(dict['triangle_neighbors'])  ==
    400                         array(loaded_dict['triangle_neighbors']),
    401                           fail_string + ' failed. Test 12')
    402         self.failUnless(array(dict['segment_tags'])  ==
    403                         array(loaded_dict['segment_tags']),
    404                           fail_string + ' failed. Test 13')
    405         self.failUnless(array(dict['vertex_attribute_titles'])  ==
    406                         array(loaded_dict['vertex_attribute_titles']),
    407                           fail_string + ' failed. Test 14')
    408        
     361        try:   
     362            self.failUnless(loaded_dict['geo_reference']  ==
     363                        dict['geo_reference'] ,
     364                        fail_string + ' failed!! Test geo_reference')
     365        except KeyError:         
     366            self.failUnless(not dict.has_key('geo_reference' and
     367                         loaded_dict['geo_reference'] == None)   ,
     368                        fail_string + ' failed!! Test geo_reference')
     369           
    409370    def test_loadpts(self):
    410371       
     
    468429        att_dict['brightness'] = array([10.0, 0.0, 10.4])
    469430        dict['attributelist'] = att_dict
     431        dict['geo_reference'] = Geo_reference(1.9,1.9,'zone65')
    470432       
    471433        fileName = tempfile.mktemp(".pts")
     
    477439        assert allclose(dict2['pointlist'],[[1.0, 0.0],[0.0, 1.0],[1.0, 0.0]])
    478440        assert allclose(dict2['attributelist']['elevation'], [10.0, 0.0, 10.4])
    479         assert allclose(dict2['attributelist']['brightness'], [10.0, 0.0, 10.4])
     441        answer = [10.0, 0.0, 10.4]
     442        assert allclose(dict2['attributelist']['brightness'], answer)
     443
     444        #print "dict['geo_reference'] ",dict['geo_reference']
     445        #print "dict2['geo_reference']",dict2['geo_reference']
     446       
     447        self.failUnless(dict['geo_reference'] == dict2['geo_reference'],
     448                         'test_writepts failed. Test geo_reference')
    480449
    481450       
Note: See TracChangeset for help on using the changeset viewer.