Changeset 1609 for TI02-CSML


Ignore:
Timestamp:
19/10/06 14:19:40 (13 years ago)
Author:
domlowe
Message:

coverage aggregation and basic data granule creation working

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

Legend:

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

    r1608 r1609  
    66import elementtree.ElementTree as etree 
    77import datetime 
    8 import molesWriter 
     8import molesWriter as MW 
    99#this is a fix to the  ElementTree namespace problem that namespaces are usually represented as ns0, ns1, ns2 etc. 
    1010etree._namespace_map.update({ 
     
    8484        return self.envelope 
    8585 
    86     #new process: 
     86 
    8787def main(args=None): 
    8888    '''Get command line arguments, should be paths to csml files 
     
    9999    aggregator=EnvelopeAggregator(env) 
    100100  
     101     
     102    #set up lists to hold stuff 
     103    schemeIdentifiers=[] 
     104    repositoryIdentifiers=[] 
     105    localIdentifiers=[] 
     106     
    101107    #for each file: 
    102108    for f in csmlfilelist: 
     
    106112        aggregator.compareEnvelope(_getEnvelopefromDataset(dataset)) 
    107113        #get other things: 
    108          
     114        schemeIdentifiers.append('NDG-A0') 
     115        repositoryIdentifiers.append('badc.nerc.ac.uk') 
     116        localIdentifiers.append(f) 
    109117    #get aggregated envelope: 
    110118    finalEnvelope=aggregator.getAggregatedEnvelope() 
     119    limitN=finalEnvelope.upperCorner.vals.split()[0] 
     120    limitS=finalEnvelope.lowerCorner.vals.split()[0] 
     121    limitE=finalEnvelope.upperCorner.vals.split()[1] 
     122    limitW=finalEnvelope.lowerCorner.vals.split()[1] 
    111123    #get other aggregations: 
    112124     
    113125    #write MOLES skeleton document: 
     126    M=MW.MolesDoc() 
     127    M._createClasses() 
     128     
     129    ''' The MOLES document: 
     130    create your moles doc by setting attributes of "M.className" 
     131    the classNames used must be declared in molesWriter.MolesDoc.classList''' 
     132     
     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') 
     135     
     136    #create data granules 
     137    datagranules=[] 
     138    for i, file in enumerate(csmlfilelist): 
     139        DMid=M.dataModelID(schemeIdentifier=schemeIdentifiers[i], repositoryIdentifier=repositoryIdentifiers[i],localIdentifier= localIdentifiers[i]) 
     140        DG  = M.dgDataGranule(dataModelID=DMid) 
     141        datagranules.append(DG) 
     142     
     143    #create Data Entity     
     144    dgDE= M.dgDataEntity(dgDataGranule=datagranules) 
     145     
     146    #create coverage 
     147    dgBB=M.dgBoundingBox(LimitNorth = limitN, LimitSouth=limitS,LimitEast=limitE, LimitWest=limitW) 
     148    dgSc=M.dgSpatialCoverage(dgBoundingBox=dgBB) 
     149    dgTc=M.dgTemporalCoverage() 
     150    dgST=M.dgSpatioTemporalCoverage(dgSpatialCoverage = dgSc, dgTemporalCoverage=dgTc) 
     151    dgCv=M.dgCoverage(dgSpatioTemporalCoverage=dgST) 
     152     
     153    #create metadata record 
     154    dgMR=M.dgMetadataRecord(dgMetadataID=dgMID, dgDataEntity=dgDE, dgCoverage=dgCv) 
     155    dgMeta=MW.dgMetadata(dgMetadataRecord=dgMR) 
     156 
     157    #produce XML  
     158    molestree=dgMeta.toXML() 
     159    #print it out. 
     160    moles=csml.parser_extra.PrettyPrint(molestree) 
     161    print moles 
     162     
     163     
    114164    print finalEnvelope.lowerCorner.vals 
    115165    print finalEnvelope.upperCorner.vals 
    116166    print finalEnvelope.timePosition 
    117167    print finalEnvelope.timePosition2 
    118      
     168    
    119169if __name__=='__main__': 
    120170    main() 
  • TI02-CSML/trunk/csml2MolesStuff/molesWriter.py

    r1608 r1609  
    1010    def toXML(self,molesFrag): 
    1111        for attr in self.__dict__: 
     12            print attr 
    1213            if isinstance(self.__dict__[attr], molesElement): 
    1314                subelem = self.__dict__[attr] 
     
    1920                        frag.append(subfrag) 
    2021                    else: 
    21                         frag.text=attrib 
     22                        subfrag=ET.Element(attrib) 
     23                        subfrag.text=subelem.__dict__[attrib] 
     24                        frag.append(subfrag) 
    2225                molesFrag.append(frag) 
    2326            elif isinstance(self.__dict__[attr], list): 
     
    6467    def _createClasses(self): 
    6568        #if you want more classes just add their names to this list 
    66         classList=[\ 
    67         'dataModelID', \ 
     69        classList= \ 
     70        ['dataModelID', \ 
    6871        'dgDataGranule', \ 
    6972        'dgDataEntity', \ 
    7073        'dgMetadataRecord', \ 
    71         'dgMetadataID', \ 
    72         ] 
     74        'dgMetadataID',  
     75        'dgCoverage', \ 
     76        'dgSpatioTemporalCoverage', \ 
     77        'dgSpatialCoverage', \ 
     78        'dgTemporalCoverage', \ 
     79        'dgBoundingBox', \ 
     80        'DateRange'] 
    7381 
    7482        for className in classList: 
Note: See TracChangeset for help on using the changeset viewer.