Changeset 1842 for TI02-CSML/branches


Ignore:
Timestamp:
08/12/06 12:33:22 (13 years ago)
Author:
domlowe
Message:

ReferenceableGrid and associated classes added

Location:
TI02-CSML/branches/CSML2
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • TI02-CSML/branches/CSML2/csParser.py

    r1839 r1842  
    6060 
    6161#Some variable definitions: these things are often repeated so store in variables. 
    62 FILEFORMATS=[CSML('NetCDFExtract'),CSML('NASAAmesExtract')] 
     62FILEFORMATS=[CSML('NetCDFExtract'),CSML('NASAAmesExtract'), CSML('GRIBExtract'),CSML('CDMLExtract'), CSML('RawFileExtract')] 
    6363  
    6464 
     
    110110                            parserobjects.append(self.__dict__[att]) 
    111111                        parentfrag=None 
    112                         if len(self.CHILDREN[child])==3: 
     112                        if len(self.CHILDREN[child])>=3: 
    113113                                ename2=self.CHILDREN[child][2] 
    114114                                parentfrag=ET.Element(ename2) 
     
    122122                                po.toXML(frag) 
    123123                                parentfrag.append(frag) 
     124                                appendLater=True 
     125                            elif len(self.CHILDREN[child])>=4: 
     126                                if self.CHILDREN[child][3]==1: 
     127                                    frag=ET.Element(ename) 
     128                                    po.toXML(frag) 
     129                                    parentfrag.append(frag) 
     130                                    csmlfrag.append(parentfrag) 
     131                                    parentfrag=ET.Element(parentfrag.tag) 
     132                                    appendLater=False 
    124133                            else: 
    125134                                frag=ET.Element(ename) 
    126135                                po.toXML(frag) 
    127136                                csmlfrag.append(frag) 
    128                         if parentfrag is not None: 
     137                                appendLater=True 
     138                        if appendLater==True and parentfrag != None: 
    129139                            csmlfrag.append(parentfrag) 
    130140        return csmlfrag 
     
    143153            for child in self.CHILDREN: 
    144154                #get element name 
    145                 if len(self.CHILDREN[child])==3: 
     155                if len(self.CHILDREN[child])>=3: 
    146156                    ename = self.CHILDREN[child][2] 
    147157                    ename2 = self.CHILDREN[child][0] 
     
    162172                            if etype: 
    163173                                childobj=eval(etype)() 
    164                                 if len(self.CHILDREN[child])==3: 
     174                                if len(self.CHILDREN[child])>=3: 
    165175                                    if frag[:] != []: 
    166176                                        childobj.fromXML(subfrag) 
     
    184194                    if etype: 
    185195                        childobj=eval(etype)() 
    186                         if len(self.CHILDREN[child])==3: 
     196                        if len(self.CHILDREN[child])>=3: 
    187197                            if frag[:] != []: 
    188198                                childobj.fromXML(frag[0]) 
     
    300310        AbstractCoverage.__init__(self,**kwargs) 
    301311        addchildren(self,{}) 
     312         
     313         
     314class SpatialOrTemporalPositionList(AbstractGML,csElement): 
     315    def __init__(self, **kwargs): 
     316        AbstractGML.__init__(self,**kwargs) 
     317        children={'coordinateList':[GML('coordinateList'),'csString'], 'timePositionList':[CSML('timePositionList'),'csString']} 
     318        addchildren(self,children) 
     319 
     320class GridOrdinateDescription(AbstractGML,csElement): 
     321    def __init__(self, **kwargs): 
     322        AbstractGML.__init__(self,**kwargs) 
     323        children={'coordAxisLabel':[GML('coordAxisLabel'), 'csString'], 'coordAxisValues':[GML('SpatialOrTemporalPositionList'),'SpatialOrTemporalPositionList',GML('coordAxisValues')], 'gridAxesSpanned':[GML('gridAxesSpanned'), 'csString'], 'sequenceRule':[GML('sequenceRule'),'SequenceRuleType']} 
     324        addchildren(self,children) 
     325 
     326class SequenceRuleType(csElement): 
     327    def __init__(self, **kwargs): 
     328        a=['axisOrder'] 
     329        addatts(self,a) 
     330        children={} 
     331        addchildren(self,children) 
     332 
     333class GridPointDescription(AbstractGML,csElement): 
     334    def __init__(self, **kwargs): 
     335        AbstractGML.__init__(self,**kwargs) 
     336        children={'posList':[GML('posList'),'csString'],'sequenceRule':[GML('sequenceRule'),'SequenceRuleType']} 
     337        addchildren(self,children) 
     338 
    302339 
    303340class GridCoordinatesTable(AbstractGML,csElement): 
    304341    def __init__(self,**kwargs): 
    305         AbstractGML.__init__(self,**kwargs) 
    306         children={'pointMember':[GML('pointMember'), 'csString']} 
     342        '''the additional value '1' in the children dictionary is used to signify that the elements must be nested as: 
     343        <gml:ordinate> 
     344            <gml:GridOrdinateDescription> 
     345        </gml:ordinate> 
     346        <gml:ordinate> 
     347            <gml:GridOrdinateDescription> 
     348        </gml:ordinate> 
     349         
     350        not as: 
     351        <gml:ordinate> 
     352            <gml:GridOrdinateDescription> 
     353            <gml:GridOrdinateDescription> 
     354        </gml:ordinate> ''' 
     355        AbstractGML.__init__(self,**kwargs) 
     356        children={'gridOrdinates':[GML('GridOrdinateDescription'), 'GridOrdinateDescription',GML('gridOrdinate'),1], 'gridPoints':[GML('GridPointDescription'),'GridPointDescription',GML('gridPoints')]} 
    307357        addchildren(self,children) 
    308358         
  • TI02-CSML/branches/CSML2/test.xml

    r1839 r1842  
    2828                <time></time> 
    2929                <value> 
    30                      <ReferenceableGridCoverage> 
     30                    <ReferenceableGridCoverage> 
    3131                           <referenceableGridDomain> 
    32                                  <ReferenceableGrid  gml:description ="mygrid" dimension="3" gml:id="ID004"  > 
    33                                  </ReferenceableGrid> 
     32                                <ReferenceableGrid gml:id="ID001" srsName="urn:ogc:def:crs:EPSG:6.6:4326" dimension="2"> 
     33                                    <gml:limits> 
     34                                        <gml:GridEnvelope> 
     35                                            <gml:low>0 0</gml:low> 
     36                                            <gml:high>7 4</gml:high> 
     37                                        </gml:GridEnvelope> 
     38                                    </gml:limits> 
     39                                    <gml:axisLabels>x y</gml:axisLabels> 
     40                                    <gml:coordTransformTable> 
     41                                        <gml:GridCoordinatesTable> 
     42                                            <gml:gridOrdinate> 
     43                                                <gml:GridOrdinateDescription> 
     44                                                    <gml:coordAxisLabel>Geodetic longitude</gml:coordAxisLabel> 
     45                                                    <gml:coordAxisValues> 
     46                                                        <gml:SpatialOrTemporalPositionList> 
     47                                                            <gml:coordinateList>13.5 24.9 32.4 37.7 41.5 46.8 54.4 65.7</gml:coordinateList> 
     48                                                        </gml:SpatialOrTemporalPositionList> 
     49                                                    </gml:coordAxisValues> 
     50                                                    <gml:gridAxesSpanned>x</gml:gridAxesSpanned > 
     51                                                    <gml:sequenceRule axisOrder="+1">Linear</gml:sequenceRule> 
     52                                                </gml:GridOrdinateDescription> 
     53                                            </gml:gridOrdinate> 
     54                                            <gml:gridOrdinate> 
     55                                                <gml:GridOrdinateDescription> 
     56                                                    <gml:coordAxisLabel>Geodetic latitude</gml:coordAxisLabel> 
     57                                                    <gml:coordAxisValues> 
     58                                                        <gml:SpatialOrTemporalPositionList> 
     59                                                            <gml:coordinateList> 
     60                                                                53.1 48.7 46.2 44.7 43.9 43.3 43.1 44.0 
     61                                                                46.2 43.2 41.5 40.6 40.2 40.0 40.3 41.7 
     62                                                                37.1 36.1 35.6 35.5 35.7 36.0 37.1 39.5 
     63                                                                30.4 30.2 30.4 30.7 31.1 32.0 33.8 37.2 
     64                                                                24.3 24.8 25.3 26.0 26.6 27.7 29.7 33.4 
     65                                                            </gml:coordinateList> 
     66                                                        </gml:SpatialOrTemporalPositionList> 
     67                                                    </gml:coordAxisValues> 
     68                                                    <gml:gridAxesSpanned>x y</gml:gridAxesSpanned > 
     69                                                    <gml:sequenceRule axisOrder="+1 -2">Linear</gml:sequenceRule> 
     70                                                </gml:GridOrdinateDescription> 
     71                                            </gml:gridOrdinate> 
     72                                        </gml:GridCoordinatesTable> 
     73                                    </gml:coordTransformTable> 
     74                                   </ReferenceableGrid>  
    3475                           </referenceableGridDomain> 
    3576                      </ReferenceableGridCoverage> 
Note: See TracChangeset for help on using the changeset viewer.