Changeset 1611 for TI02-CSML


Ignore:
Timestamp:
19/10/06 16:22:27 (13 years ago)
Author:
domlowe
Message:

fixed problem with deep recursion, added partial support for parameters.

Location:
TI02-CSML/trunk/csml2MolesStuff
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • TI02-CSML/trunk/csml2MolesStuff/csml2moles.py

    r1609 r1611  
    8686 
    8787def main(args=None): 
    88     '''Get command line arguments, should be paths to csml files 
    89     e.g. python csml2moles.py csmlfile1.xml csmlfile2.xml csmlfile3.xml  
     88    '''Get command line arguments, should be an ID scheme for the moles document and paths to csml files 
     89    i,e, python  csml2moles.py badc.nerc.ac.uk document123 csmlfile1.xml csmlfile2.xml csmlfile3.xml  
    9090    main() will aggregate the spatial and temporal bounding box across all the featureCollections. 
    91     Currently only one featureCollection per csml file is supported ''' 
     91    Currently only one featureCollection per csml file is supported  
     92     
     93    TODO: This should be extended to handle directories of files 
     94    TODO: CSML files may be stored in exist ''' 
     95 
     96    repository = sys.argv[1] 
     97    identifier= sys.argv[2] 
     98 
    9299    if args: 
    93100        sys.argv =args 
    94     csmlfilelist= sys.argv[1:] 
     101    csmlfilelist= sys.argv[3:] 
    95102 
    96103    #set up coverage envelope aggragator with envelope from first file: 
     
    131138    the classNames used must be declared in molesWriter.MolesDoc.classList''' 
    132139     
    133     #MetaData ID (need to decide on how to define this) 
    134     dgMID=M.dgMetadataID(schemeIdentifier='NDG-B0', repositoryIdentifier='badc.nerc.ac.uk', localIdentifier='COAPEC_HadCM3_500Yr') 
     140    #MetaData ID  
     141    dgMID=M.dgMetadataID(schemeIdentifier='NDG-B0', repositoryIdentifier=repository, localIdentifier=identifier) 
    135142     
    136143    #create data granules 
     
    141148        datagranules.append(DG) 
    142149     
    143     #create Data Entity     
    144     dgDE= M.dgDataEntity(dgDataGranule=datagranules) 
     150         
     151     
    145152     
    146153    #create coverage 
     
    150157    dgST=M.dgSpatioTemporalCoverage(dgSpatialCoverage = dgSc, dgTemporalCoverage=dgTc) 
    151158    dgCv=M.dgCoverage(dgSpatioTemporalCoverage=dgST) 
    152      
     159    #create parameter summaries: 
     160    parameterSummaries=[] 
     161    for i, file in enumerate(csmlfilelist): 
     162        RDP=M.dgRangeDataParameter(HighValue='1000', LowValue='1') 
     163        SPM=M.dgStdParameterMeasured(dgValidTerm= 'cf term here') 
     164        PS  = M.dgParameterSummary(dgRangeDataParameter=RDP, dgStdParameterMeasured=SPM) 
     165        parameterSummaries.append(PS) 
     166    #DS = M.dgDataSummary(dgParameterSummary=parameterSummaries) 
     167    DS = M.dgDataSummary(dgCoverage=dgCv, dgParameterSummary=parameterSummaries) 
     168    #DS = M.dgDataSummary(dgParameterSummary=PS) 
     169    #create Data Entity 
     170    dgDE= M.dgDataEntity(dgDataGranule=datagranules, dgDataSummary=DS) 
    153171    #create metadata record 
    154     dgMR=M.dgMetadataRecord(dgMetadataID=dgMID, dgDataEntity=dgDE, dgCoverage=dgCv) 
     172    dgMR=M.dgMetadataRecord(dgMetadataID=dgMID, dgDataEntity=dgDE) 
    155173    dgMeta=MW.dgMetadata(dgMetadataRecord=dgMR) 
    156174 
  • TI02-CSML/trunk/csml2MolesStuff/molesWriter.py

    r1609 r1611  
    33import cElementTree as ET 
    44import csml.parser_extra #note this is only used for pretty printing - there's no dependency on the CSML parser 
    5  
    65class molesElement(object): 
    76    def __init__(self, **kwargs): 
    87        for kw in kwargs: 
    9             setattr(self,kw,kwargs[kw])     
     8            setattr(self,kw,kwargs[kw]) 
    109    def toXML(self,molesFrag): 
    1110        for attr in self.__dict__: 
    12             print attr 
    1311            if isinstance(self.__dict__[attr], molesElement): 
    14                 subelem = self.__dict__[attr] 
    1512                frag=ET.Element(attr) 
    16                 for attrib in subelem.__dict__: 
    17                     if isinstance(subelem.__dict__[attrib], molesElement): 
    18                         subfrag=ET.Element(attrib) 
    19                         subelem.__dict__[attrib].toXML(subfrag) 
    20                         frag.append(subfrag) 
    21                     else: 
    22                         subfrag=ET.Element(attrib) 
    23                         subfrag.text=subelem.__dict__[attrib] 
    24                         frag.append(subfrag) 
     13                self.__dict__[attr].toXML(frag) 
    2514                molesFrag.append(frag) 
    2615            elif isinstance(self.__dict__[attr], list): 
    2716                for item in self.__dict__[attr]: 
    2817                    if isinstance(item, molesElement): 
    29                         subelem = item 
    3018                        frag=ET.Element(attr) 
    31                         for attrib in subelem.__dict__: 
    32                             if isinstance(subelem.__dict__[attrib], molesElement): 
    33                                 subfrag=ET.Element(attrib) 
    34                                 subelem.__dict__[attrib].toXML(subfrag) 
    35                                 frag.append(subfrag) 
    36                             else: 
    37                                 frag.text=attrib 
    38                         molesFrag.append(frag)     
     19                        item.toXML(frag) 
     20                        molesFrag.append(frag) 
    3921                    else: 
    4022                        frag=ET.Element(attr) 
    41                         frag.text=self.__dict__[attr]            
    42                         molesFrag.append(frag) 
     23                        frag.text=item 
    4324            else: 
    4425                frag=ET.Element(attr) 
    45                 frag.text=self.__dict__[attr]            
     26                frag.text=self.__dict__[attr] 
    4627                molesFrag.append(frag) 
    4728        return molesFrag 
    48  
    4929 
    5030class dgMetadata(molesElement):     
     
    7858        'dgTemporalCoverage', \ 
    7959        'dgBoundingBox', \ 
    80         'DateRange'] 
     60        'DateRange', \ 
     61        'dgDataSummary',\ 
     62        'dgParameterSummary',\ 
     63        'dgRangeDataParameter',\ 
     64        'dgStdParameterMeasured',\ 
     65        'dgStandardUnit',\ 
     66        'dgValidTermID'] 
    8167 
    8268        for className in classList: 
Note: See TracChangeset for help on using the changeset viewer.