Changeset 1408 for TI02-CSML


Ignore:
Timestamp:
16/08/06 14:03:47 (13 years ago)
Author:
domlowe
Message:

point series feature changed to use internal methods

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI02-CSML/trunk/Scanner/csmllibs/csmlfeaturetypes.py

    r1407 r1408  
    193193 
    194194 
     195     
     196    def createCSMLPointSeriesFeatures(self):  
     197        representativeFiles=self.ffmap.getRepresentativeFiles() 
     198        for repfile in representativeFiles: 
     199            self.repfilename,self.listOfFiles=self._populateListOfFiles(repfile) 
     200            DI = csmllibs.csmldataiface.DataInterface() 
     201            DI=DI.getUnknownInterfaceType(self.repfilename) 
     202            DI.openFile(self.repfilename) 
     203            allVarNames=DI.getListofVariables() 
     204            numFeatures=len(allVarNames)         
     205            try: 
     206                DI.setAxis(self.timedim) 
     207                times=DI.getDataForAxis() 
     208            except:                      
     209                times = DI.getTimes() 
     210            #Create features: 
     211            for i in range (0, numFeatures): 
     212                PointSeriesFeature_element=csmllibs.Parser.PointSeriesFeature() 
     213                if str(allVarNames[i]).upper() in ['ERROR FLAG', 'ERROR']: #might need to extend this list 
     214                    break 
     215                PointSeriesFeature_element.id=str(allVarNames[i]) 
     216                desc=self._getDescriptiveName(DI) 
     217                PointSeriesFeature_element.description=csmllibs.Parser.Description(desc) 
     218                #DOMAIN 
     219                psDomain=csmllibs.Parser.PointSeriesDomain() 
     220                t=csmllibs.Parser.Trajectory() 
     221                t.srsName='urn:EPSG:geographicCRS:4326' #TO Do 
     222                t.locations =csmllibs.Parser.DirectPositionList(vals='1 1') 
     223                 
     224                if self.timestorage =='inline': 
     225                    t.times=csmllibs.Parser.TimePositionList('#RefSysX',str(times)) 
     226                else: 
     227                    #todo: depends on the file mapping??? 
     228                    t.times=csmllibs.Parser.TimePositionList('#RefSysX','blah') #blah = dummy times  
     229#                 print 'times: ' + str(allVarNames[i]) 
     230#                 print len(times) 
     231#                 print len(listOfFiles) 
     232#                 arraySize=len(times) * len(listOfFiles) 
     233#                 fextract=csmllibs.csmlfileextracts.createSingleExtract(self.extractType,filenames,self.timedim,arraySize) 
     234#                 tplist = csmllibs.Parser.TimePositionList(timePositions=fextract) 
     235#                 t.times=tplist                                                                     
     236                filenames=csmllibs.csmlextra.cleanString(str(self.listOfFiles)) 
     237                psDomain.domainReference=t 
     238                #RANGESET 
     239                DI.setVariable(allVarNames[i]) 
     240                try: 
     241                    strUom = DI.getVariableAttribute('units') 
     242                except AttributeError: 
     243                    #if units attribute doesn't exist: 
     244                    strUom ="dimensionless or units not determined" 
     245                try:                     
     246                    measuredvalues = DI.getDataForVar() 
     247                except: 
     248                    measuredvalues = ' could not get values ' 
     249                rs=csmllibs.Parser.RangeSet() 
     250                if self.valuestorage=='inline': 
     251                    #encode inline 
     252                    rs.quantityList=csmllibs.Parser.MeasureOrNullList(uom=strUom, val=str(measuredvalues)[1:-1])                          
     253                else: 
     254                    #create a file extract link  
     255                    arraySize=len(measuredvalues)*len(self.listOfFiles)  
     256                    #TODO this needs to be able to handle inline, use VALUESTORAGE to determine which to use: 
     257                    self.extractType=DI.extractType 
     258                    fextract=csmllibs.csmlfileextracts.createSingleExtract(self.extractType,filenames,allVarNames[i],arraySize) 
     259                    qlist = csmllibs.Parser.MeasureOrNullList(val=fextract) 
     260                    rs.quantityList=qlist 
     261                PointSeriesFeature_element.rangeSet=rs 
     262                #COVERAGEFUNCTION                             
     263                #PARAMETER 
     264                #need to do parameter and coverageFunction elements 
     265                PointSeriesFeature_element.domain=psDomain 
     266                self.fms.append(PointSeriesFeature_element) 
     267            DI.closeFile() 
     268         
     269 
    195270#This function needs revising in light of a) csml parser and b) new profile feature types 
    196271    def createCSMLProfileFeature(csmldoc, dataset_element, gml_FeatureCollection_element,  ffmap, timedim): 
     
    277352                             
    278353         
    279      
    280     def createCSMLPointSeriesFeatures(self):  
    281         representativeFiles=self.ffmap.getRepresentativeFiles() 
    282         for repfile in representativeFiles: 
    283             self.repfilename,self.listOfFiles=self._populateListOfFiles(repfile) 
    284             DI = csmllibs.csmldataiface.DataInterface() 
    285             DI=DI.getUnknownInterfaceType(self.repfilename) 
    286             DI.openFile(self.repfilename) 
    287             allVarNames=DI.getListofVariables() 
    288             numFeatures=len(allVarNames)         
    289             try: 
    290                 DI.setAxis(self.timedim) 
    291                 times=DI.getDataForAxis() 
    292             except:                      
    293                 times = DI.getTimes() 
    294             #Create features: 
    295             for i in range (0, numFeatures): 
    296                 PointSeriesFeature_element=csmllibs.Parser.PointSeriesFeature() 
    297                 if str(allVarNames[i]).upper() in ['ERROR FLAG', 'ERROR']: #might need to extend this list 
    298                     break 
    299                 PointSeriesFeature_element.id=str(allVarNames[i]) 
    300                 desc=self._getDescriptiveName(DI) 
    301                 PointSeriesFeature_element.description=csmllibs.Parser.Description(desc) 
    302                 #DOMAIN 
    303                 psDomain=csmllibs.Parser.PointSeriesDomain() 
    304                 t=csmllibs.Parser.Trajectory() 
    305                 t.srsName='urn:EPSG:geographicCRS:4326' #TO Do 
    306                 t.locations =csmllibs.Parser.DirectPositionList(vals='1 1') 
    307                 if len(times) > 200: 
    308                     pass 
    309                                 #create a file extract link for long lists 
    310                     filenames=csmllibs.csmlextra.cleanString(str(self.listOfFiles)) 
    311 #                                 print 'times: ' + str(allVarNames[i]) 
    312 #                                 print len(times) 
    313 #                                 print len(listOfFiles) 
    314 #                                 arraySize=len(times) * len(listOfFiles) 
    315 #                                 fextract=csmllibs.csmlfileextracts.createSingleExtract(self.extractType,filenames,self.timedim,arraySize) 
    316 #                                 tplist = csmllibs.Parser.TimePositionList(timePositions=fextract) 
    317 #                                 t.times=tplist                                 
    318                 else: 
    319                                 #encode short lists inline: 
    320                     t.times=csmllibs.Parser.TimePositionList('#RefSysX',str(times)) 
    321                                   
    322                 psDomain.domainReference=t 
    323                 #RANGESET 
    324                 DI.setVariable(allVarNames[i]) 
    325                 try: 
    326                     strUom = DI.getVariableAttribute('units') 
    327                 except AttributeError: 
    328                     #if units attribute doesn't exist: 
    329                     strUom ="dimensionless or units not determined" 
    330                 try:                     
    331                     measuredvalues = DI.getDataForVar() 
    332                 except: 
    333                     measuredvalues = ' could not get values ' 
    334                 rs=csmllibs.Parser.RangeSet() 
    335                 if len(measuredvalues) > 200: 
    336                     #create a file extract link for long lists 
    337                     arraySize=len(measuredvalues)*len(self.listOfFiles)  
    338                     #TODO this needs to be able to handle inline, use VALUESTORAGE to determine which to use: 
    339                     self.extractType=DI.extractType 
    340                     fextract=csmllibs.csmlfileextracts.createSingleExtract(self.extractType,filenames,allVarNames[i],arraySize) 
    341                     qlist = csmllibs.Parser.MeasureOrNullList(val=fextract) 
    342                     rs.quantityList=qlist 
    343                 else: 
    344                     #encode short lists inline 
    345                     rs.quantityList=csmllibs.Parser.MeasureOrNullList(uom=strUom, val=str(measuredvalues)[1:-1])                          
    346                 PointSeriesFeature_element.rangeSet=rs 
    347                 #COVERAGEFUNCTION                             
    348                 #PARAMETER 
    349                 #need to do parameter and coverageFunction elements 
    350                 PointSeriesFeature_element.domain=psDomain 
    351                 self.fms.append(PointSeriesFeature_element) 
    352             DI.closeFile() 
    353          
Note: See TracChangeset for help on using the changeset viewer.