Changeset 883


Ignore:
Timestamp:
04/05/06 17:07:41 (13 years ago)
Author:
domlowe
Message:

basic temporal subsetting implemented, basic spatial part done

Location:
TI02-CSML/trunk/newparser
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • TI02-CSML/trunk/newparser/csmlio.py

    r875 r883  
    124124#         self.__setArrayDescriptor(fileExtractID) 
    125125#          
    126 #         DI=csmldataiface.DataInterface() 
    127 #         DI=DI.getUnknownInterfaceType(self.currentArrayDescriptor.fileName) 
    128 #         variable = self.currentArrayDescriptor.variableName 
    129 #         DI = csmldataiface.DataInterface() 
    130 #         DI=DI.getUnknownInterfaceType(file)         
    131 #         DI.openFile(file) 
    132 #         DI.setAxis(variable) 
    133 #         DI.getSubsetOfDataForVar( 
    134126        #find position of maxValue in list: 
    135127        pass 
     
    155147        return fulldata 
    156148         
    157      
    158     def getDataForFeature(self, featureID): 
     149    def getDataForVariable(self,file, variable, **kwargs): 
     150        #given a filename and a variable name, get values for that variable from data interface 
     151        DI = csmldataiface.DataInterface() 
     152        DI=DI.getUnknownInterfaceType(file)         
     153        DI.openFile(file) 
     154        DI.setVariable(variable) 
     155         
     156        sys.exit() 
     157        if kwargs: 
     158            data = DI.getSubsetOfDataForVar(**kwargs) 
     159        else: 
     160            data = DI.getDataForVar() 
     161        return data 
     162         
     163    def getDataForFeature(self, featureID, timeSubset=None,  **kwargs): 
    159164        #getDataForFeature, given the gml:id of a file extract, returns the (full) data for that feature 
    160165        #i.e. the rangeSet 
    161166        #Needs to use the rangeSet, domainReference and domainComplement to work out how to 
    162         def getDataForVariable(file, variable): 
    163             #given a filename and a variable name, get values for that variable from data interface 
    164             DI = csmldataiface.DataInterface() 
    165             DI=DI.getUnknownInterfaceType(file)         
    166             DI.openFile(file) 
    167             DI.setVariable(variable) 
    168             data = DI.getDataForVar() 
    169             return data 
     167 
    170168        #extract the data from file 
    171169        self.__setFeature(featureID) 
     
    185183            print self.currentFeature.rangeSet.aggregatedArray 
    186184            fulldata=None 
    187             for comp in self.currentFeature.rangeSet.aggregatedArray.component: 
    188                 var = comp.variableName 
    189                 for file in comp.fileName.split(): 
    190                     data = getDataForVariable(file, var) 
    191                     print file + '  ' + var 
    192      
    193                     if fulldata is None: 
    194                         fulldata = data.tolist() 
    195                     else: 
    196                         #print data 
    197                         for item in data.tolist(): 
    198                             fulldata.append(item) 
    199                         #print fulldata 
    200                         print 'length' + str(len(fulldata)) 
    201                         #note, for now treat masked arrays as lists 
     185            if timeSubset == None: 
     186                for comp in self.currentFeature.rangeSet.aggregatedArray.component: 
     187                    var = comp.variableName 
     188                    for file in comp.fileName.split(): 
     189                        data = self.getDataForVariable(file, var) 
     190                        print file + '  ' + var 
     191                        if fulldata is None: 
     192                            fulldata = data.tolist() 
     193                        else: 
     194                            #print data 
     195                            for item in data.tolist(): 
     196                                fulldata.append(item) 
     197                            #print fulldata 
     198                            print 'length' + str(len(fulldata)) 
     199                            #note, for now treat masked arrays as lists 
     200            else: 
     201                #handle the time subset: (assumes domain reference is time...) 
     202                domainref = self.getDomainReference(featureID) 
     203                filelog=[] 
     204                for time in timeSubset: 
     205                    listPosition=domainref['t'].split().index(time) 
     206                    for comp in self.currentFeature.rangeSet.aggregatedArray.component: 
     207                        var = comp.variableName 
     208                        print comp.fileName.split() 
     209                        data = self.getDataForVariable(comp.fileName.split()[listPosition], var, **kwargs) 
     210                        filelog.append(comp.fileName.split()[listPosition]) 
     211                        #print comp.fileName.split()[listPosition] + '  ' + var 
     212                        if fulldata is None: 
     213                            fulldata = data.tolist() 
     214                        else: 
     215                            #print data 
     216                            for item in data.tolist(): 
     217                                fulldata.append(item) 
     218                            #print fulldata 
     219                            print 'length' + str(len(fulldata)) 
     220                print 'FILES:' +str(filelog) 
    202221        return fulldata 
    203          
    204         #return fulldata 
    205      
    206      
    207 #     def getSubset(self, featureID, subsetDefinition): 
    208 #         #featureID = gml:id of feature 
    209 #         #subsetDefinition = dictionary containing subset definition 
    210 #          
    211 #          
    212 #         [("1999-01-01T00:00:00", "1999-01-01T06:00:00"), "axis_1.1.1.1":(30,-30), "axis_1.1.1.2":(30,-30)] 
    213      
     222     
     223    def getTimeSlice(self, featureID, time1, time2): 
     224         DI = csmldataiface.DataInterface() 
     225         DI=DI.getUnknownInterfaceType(file)         
     226         DI.openFile(file) 
     227         DI.setVariable(variable) 
     228         return timeslicedata 
     229                         
    214230    def getDomainReference(self, featureID): 
    215231        #This will return a list containing one or more ordinates: 
  • TI02-CSML/trunk/newparser/example.xml

    r831 r883  
    277277                                        <domainReference> 
    278278                                                <OrientedTrajectory srsName="urn:EPSG:geographicCRS:4326"> 
    279                                                         <locations order="byCoords" xlink:href="#feat05cruisetrack"/> 
    280                                                         <times xlink:href="#feat05times" frame="#RefSys04"/> 
    281                                                         <directions> 
    282                                                                 <horizontalAngles uom="udunits.xml#degree">0</horizontalAngles> 
    283                                                                 <verticalAngles uom="udunits.xml#degree">-90</verticalAngles> 
    284                                                         </directions> 
     279                                                    <locations order="byCoords" xlink:href="#feat05cruisetrack"/> 
     280                                                    <times xlink:href="#feat05times" frame="#RefSys04"/> 
     281                                                    <directions> 
     282                                                        <horizontalAngles uom="udunits.xml#degree">0</horizontalAngles> 
     283                                                        <verticalAngles uom="udunits.xml#degree">-90</verticalAngles> 
     284                                                    </directions> 
    285285                                                </OrientedTrajectory> 
    286286                                        </domainReference> 
  • TI02-CSML/trunk/newparser/ioDemo.py

    r875 r883  
    3535 
    3636domainref=csml.getDomainReference('solar_3') 
    37 print 'domainref: ' + str(domainref) 
     37#print 'domainref: ' + str(domainref) 
    3838domaincomp=csml.getDomainComplement('solar_3') 
    39 print 'domaincomp: ' + str(domaincomp) 
     39#print 'domaincomp: ' + str(domaincomp) 
    4040domain=csml.getDomain('solar_3') 
    41 print 'domain: ' + str(domain) 
     41#print 'domain: ' + str(domain) 
     42featureValues=csml.getDataForFeature('solar_3') 
    4243 
    43 featureValues=csml.getDataForFeature('solar_3') 
     44 
     45axisname = 'latitude' 
     46timelist = domainref['t'] 
     47#make some selection from the available times: 
     48timeSelection = timelist.split()[:2] 
     49#featureValues=csml.getDataForFeature('solar_3',timeSelection, latitude=(0.,10.0), longitude=(90, 100.0)) 
     50# spatialSubsetDictionary= {latitude:(0.,10.0), longitude:(90, 100.0)} 
     51featureValues=csml.getDataForFeature('solar_3',timeSelection, spatialSubsetDictionary) 
     52#featureValues=csml.getDataForFeature('solar_3',timeSelection, latitude=(0.,10.0), longitude=(90, 100.0)) 
     53print featureValues 
     54sys.exit() 
     55 
    4456print type(featureValues) 
    4557#print dir(featureValues) 
    4658#print featureValues 
     59 
    4760#print 'Feature rangeSet:' +str(featureValues) 
    48 sys.exit() 
     61 
    4962 
    5063#get gml description (long name) of feature 
  • TI02-CSML/trunk/newparser/test.py

    r812 r883  
    1616####################################################### 
    1717# 1. Test parsing from CSML file 
    18 tree = ElementTree(file='example.xml') 
    19 #tree = ElementTree(file='era40gridseries.xml') 
     18#tree = ElementTree(file='example.xml') 
     19tree = ElementTree(file='nagridseries.xml') 
    2020dataset = Dataset() 
    2121 
     
    2727 
    2828#resolve references:  
    29 dataset=parser_extra.ParserPostProcessor(dataset).resolveReferences() 
     29#dataset=parser_extra.ParserPostProcessor(dataset).resolveReferences() 
    3030 
    3131#This creates a new CSML document string from the CSML objects in memory. 
    3232#Hopefully the CSML output should be the same as the CSML it read in. 
    3333csml = dataset.toXML() 
    34  
     34print str(csml) 
     35     
    3536#Tidy up and print the CSML document: 
    36 strCSML= parseString(tostring(csml)).toprettyxml() 
     37#strCSML= parseString(tostring(csml)).toprettyxml() 
     38strCSML=parser_extra.PrettyPrint(csml) 
    3739strCSML=parser_extra.removeInlineNS(strCSML) 
    3840print strCSML 
    3941 
     42 
Note: See TracChangeset for help on using the changeset viewer.