- Timestamp:
- 19/10/06 14:19:40 (13 years ago)
- Location:
- TI02-CSML/trunk/csml2MolesStuff
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
TI02-CSML/trunk/csml2MolesStuff/csml2moles.py
r1608 r1609 6 6 import elementtree.ElementTree as etree 7 7 import datetime 8 import molesWriter 8 import molesWriter as MW 9 9 #this is a fix to the ElementTree namespace problem that namespaces are usually represented as ns0, ns1, ns2 etc. 10 10 etree._namespace_map.update({ … … 84 84 return self.envelope 85 85 86 #new process: 86 87 87 def main(args=None): 88 88 '''Get command line arguments, should be paths to csml files … … 99 99 aggregator=EnvelopeAggregator(env) 100 100 101 102 #set up lists to hold stuff 103 schemeIdentifiers=[] 104 repositoryIdentifiers=[] 105 localIdentifiers=[] 106 101 107 #for each file: 102 108 for f in csmlfilelist: … … 106 112 aggregator.compareEnvelope(_getEnvelopefromDataset(dataset)) 107 113 #get other things: 108 114 schemeIdentifiers.append('NDG-A0') 115 repositoryIdentifiers.append('badc.nerc.ac.uk') 116 localIdentifiers.append(f) 109 117 #get aggregated envelope: 110 118 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] 111 123 #get other aggregations: 112 124 113 125 #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 114 164 print finalEnvelope.lowerCorner.vals 115 165 print finalEnvelope.upperCorner.vals 116 166 print finalEnvelope.timePosition 117 167 print finalEnvelope.timePosition2 118 168 119 169 if __name__=='__main__': 120 170 main() -
TI02-CSML/trunk/csml2MolesStuff/molesWriter.py
r1608 r1609 10 10 def toXML(self,molesFrag): 11 11 for attr in self.__dict__: 12 print attr 12 13 if isinstance(self.__dict__[attr], molesElement): 13 14 subelem = self.__dict__[attr] … … 19 20 frag.append(subfrag) 20 21 else: 21 frag.text=attrib 22 subfrag=ET.Element(attrib) 23 subfrag.text=subelem.__dict__[attrib] 24 frag.append(subfrag) 22 25 molesFrag.append(frag) 23 26 elif isinstance(self.__dict__[attr], list): … … 64 67 def _createClasses(self): 65 68 #if you want more classes just add their names to this list 66 classList= [\67 'dataModelID', \69 classList= \ 70 ['dataModelID', \ 68 71 'dgDataGranule', \ 69 72 'dgDataEntity', \ 70 73 'dgMetadataRecord', \ 71 'dgMetadataID', \ 72 ] 74 'dgMetadataID', 75 'dgCoverage', \ 76 'dgSpatioTemporalCoverage', \ 77 'dgSpatialCoverage', \ 78 'dgTemporalCoverage', \ 79 'dgBoundingBox', \ 80 'DateRange'] 73 81 74 82 for className in classList:
Note: See TracChangeset
for help on using the changeset viewer.