Changeset 2472


Ignore:
Timestamp:
15/05/07 13:39:39 (12 years ago)
Author:
domlowe
Message:

fixing minor bugs in csml code discovered when testing RawFileExtract?

Location:
TI02-CSML/branches/csml-pml
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • TI02-CSML/branches/csml-pml/API/__init__.py

    r2305 r2472  
    77import ops_Dataset 
    88import ops_FileExtract 
     9import ops_RawFileExtract 
    910import ops_ArrayGenerator 
    1011import ops_AbstractFeature 
     
    2829#AbstractFileExtract methods: 
    2930addMethods(csml.parser.FileExtract, [ops_FileExtract.getData]) 
     31 
     32#RawFileExtract methods: 
     33addMethods(csml.parser.RawFileExtract, [ops_RawFileExtract.getData]) 
    3034 
    3135#ArrayGenerator methods: 
  • TI02-CSML/branches/csml-pml/API/genSubset.py

    r2444 r2472  
    9696        csml.csmllibs.csmltime.setcdtimeCalendar(caltype) 
    9797    except: 
    98         csml.csmllibs.csmltime.setcdtimeCalendar(csml.csmllibs.csmltime.cdtime.DefaultCalendar)         
     98        csml.csmllibs.csmltime.setcdtimeCalendar(csml.csmllibs.csmltime.cdtime.DefaultCalendar)       
     99        caltype='standard'   
    99100    return caltype 
    100101 
     
    132133    if hasattr(feature.value.rangeSet, 'valueArray'): 
    133134        if hasattr(feature.value.rangeSet.valueArray.valueComponent, 'insertedExtract'): 
    134             numFiles= len( csmlutils.listify(feature.value.rangeSet.valueArray.valueComponent.insertedExtract.components)[0].fileList.fileNames.CONTENT.split()) 
    135             return len(domain[timeName])/numFiles 
     135            try: 
     136                numFiles= len( csmlutils.listify(feature.value.rangeSet.valueArray.valueComponent.insertedExtract.components)[0].fileList.fileNames.CONTENT.split()) 
     137            except: 
     138                numFiles= len(csmlutils.listify(feature.value.rangeSet.valueArray.valueComponent.insertedExtract.components)[0].fileName.CONTENT) 
     139            timeToFileRatio= len(domain[timeName])/numFiles  
     140            if timeToFileRatio==0: 
     141                timeToFileRatio=None            
     142            return timeToFileRatio 
    136143 
    137144def getCoordTransformTable(domainSubset, crs, frame): 
     
    188195            if timeToFileRatio == None: 
    189196                filePos=None 
    190             else: 
     197            else:                 
    191198                filePos=int(float(listPosition)/timeToFileRatio) 
    192199            if filePos in filesFetched: 
  • TI02-CSML/branches/csml-pml/csmllibs/csmlcrs.py

    r2405 r2472  
    2020        self.systems={} 
    2121        self.pseudosystems={} 
     22         
     23        # define WGS84 CRS:         
     24        crs=CRSystem(srsName='WGS84', axes =['time', 'latitude','longitude']) 
     25        crs.lonAxis=2 
     26        crs.latAxis=1 
     27        crs.timeAxis=0 
     28        self.systems['WGS84']=crs 
    2229         
    2330        # define lon lat pressure time CRS:         
  • TI02-CSML/branches/csml-pml/csmllibs/csmldataiface.py

    r2461 r2472  
    2929# interfaces 
    3030import NumericTransform 
    31 # Part of the PIL. Required for ImageFileInterface: 
    32 import Image 
    33 # Required for RawFileInterface: 
    34 import struct 
     31 
     32try: 
     33    # Part of the PIL. Required for ImageFileInterface: 
     34    import Image 
     35except ImportError: 
     36    print 'could not import Image' 
     37    pass 
     38 
     39try: 
     40    # Required for RawFileInterface: 
     41    import struct 
     42except ImportError: 
     43    print 'could not import struct' 
     44    pass 
     45 
    3546 
    3647class DataInterface(object): 
     
    618629         # data array, so raise an exception 
    619630         raise IndexException("Subset out of range") 
    620       elif Numeric.sometrue(Numeric.less_equal(kwargs['upper', kwargs['lower'])): 
     631      elif Numeric.sometrue(Numeric.less_equal(kwargs['upper'], kwargs['lower'])): 
    621632         # lower bound <= upper_bound for at least one dimension, so raise an 
    622633         # exception 
  • TI02-CSML/branches/csml-pml/parser.py

    r2461 r2472  
    10431043      csElement.__init__(self,**kwargs) 
    10441044      self.dataInterface = csml.csmllibs.csmldataiface.RawFileInterface 
    1045  
    1046  
    1047    # raw and image extracts need access to metadata defined in the CSML to 
    1048    # correctly read the file. This method overrides the FileExtract getData() 
    1049    # method making use of the readFile() DI method to pass this metadata to 
    1050    # the data interface. 
    1051    # TODO: This should probably be moved outside parser.py, possibly into 
    1052    # API/ops_FileExtract 
    1053    def getData(self,  fileposition=None,**kwargs): 
    1054        #file position defines the position of the filename if a list of filenames exists 
    1055        #**kwargs can hold subsetting request. 
    1056         
    1057  
    1058        if fileposition is not None: 
    1059            file = self.fileList.fileNames.CONTENT.split()[fileposition] 
    1060        else: 
    1061            file = self.fileName.CONTENT 
    1062        
    1063        # Determine metadata required to correctly read and process the 
    1064        # raw file: 
    1065        meta = {} 
    1066        meta['dimensions'] = map(int, self.arraySize.CONTENT.split()) 
    1067  
    1068        try:  
    1069           meta['numericTransform'] = self.numericTransform.CONTENT.strip() 
    1070        except AttributeError: pass 
    1071        try: 
    1072           meta['endianness'] = self.endianness.CONTENT.strip() 
    1073        except AttributeError: pass 
    1074        try: 
    1075           meta['fillValue'] = self.fillValue.CONTENT.strip() 
    1076        except AttributeError: pass 
    1077        try: 
    1078           meta['numericType'] = self.numericType.CONTENT.strip() 
    1079        except AttributeError: pass 
    1080         
    1081        try: 
    1082           DI = self.dataInterface() 
    1083        except AttributeError: 
    1084           DI = csml.csmllibs.csmldataiface.DataInterface() 
    1085           DI = DI.getUnknownInterfaceType(file) 
    1086  
    1087        DI.openFile(file) 
    1088        DI.readFile(**meta) 
    1089        if kwargs: 
    1090           print 'subsetting' 
    1091           data = DI.getSubsetOfDataForVar(**kwargs) 
    1092        else: 
    1093           print 'non subsetting' 
    1094           data = DI.getDataForVar() 
    1095        fillValue = DI.getFillValue() 
    1096        DI.closeFile() 
    1097        return data, fillValue, None, None 
    1098  
    1099  
     1045  
    11001046class ImageFileExtract(RawFileExtract, csElement): 
    11011047   def __init__(self,**kwargs): 
     
    11541100        elems=['descriptors'] 
    11551101        addelems(self,elems) 
    1156         children={elems[0]:[[CSML('NetCDFExtract'),CSML('AggregatedArray')], 'FileExtract', CSML('descriptor'),1]} 
     1102        children={elems[0]:[[CSML('NetCDFExtract'),CSML('AggregatedArray'), CSML('RawFileExtract')], 'FileExtract', CSML('descriptor'),1]} 
    11571103        addchildren(self,children) 
    11581104        csElement.__init__(self,**kwargs) 
     
    12561202     
    12571203    print '\n' 
    1258     #tree=ET.ElementTree(file='testfiles/gridseries/testout.xml') 
    1259     tree=ET.ElementTree(file='testfiles/gridseries/securitytest.xml') 
     1204    tree=ET.ElementTree(file='../rsg_example_csml-2.0.xml') 
    12601205    ds=Dataset() 
    12611206    ds.fromXML(tree.getroot()) 
Note: See TracChangeset for help on using the changeset viewer.