Changeset 654


Ignore:
Timestamp:
23/02/06 18:13:34 (14 years ago)
Author:
domlowe
Message:

Feature Member done. PointFeature? mostly supported, to do: rangeSet, parameter, coverageFunction

Location:
TI02-CSML/trunk/newparser
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • TI02-CSML/trunk/newparser/Parser.py

    r649 r654  
    489489 
    490490class AbstractDiscreteCoverage(AbstractGML): 
    491      #note, does not inherit directly from AbstractGML but is sufficient for CSML purposes 
     491     #note, does not inherit directly from AbstractGML but is sufficient for CSML purposes to inherit the standard GML attributes 
    492492    #GML AbstractDiscreteCoverage 
    493     def __init__(self): 
    494         pass 
     493    def __init__(self,*args,**kwargs): 
     494        AbstractGML.__init__(self,*args,**kwargs) 
    495495    def fromXML(self,csmlFrag): 
    496496        AbstractGML.fromXML(self,csmlFrag) 
    497497    def toXML(self,csmlFrag): 
     498        AbstractGML.toXML(self,csmlFrag) 
    498499        return csmlFrag 
    499500         
     
    507508    #       + parameter:om:PhenomenonPropertyType 
    508509    def __init__(self,boundedBy=None,_Domain=None,rangeSet=None, coverageFunction=None, parameter=None, *args,**kwargs): 
    509         AbstractFileExtract.__init__(self,*args,**kwargs) 
     510        AbstractDiscreteCoverage.__init__(self,*args,**kwargs) 
    510511        if boundedBy: 
    511512            self.boundedBy=boundedBy 
     
    526527                self.boundedBy.append(frag.text) 
    527528            if frag.tag == CSML('_Domain'): 
    528                 self.PointDomain = PointDomain() 
    529                 self.PointDomain.fromXML(frag) 
    530     def toXML(self,csmlFrag): 
     529                self._Domain = _Domain() 
     530                self._Domain.fromXML(frag) 
     531    def toXML(self,csmlFrag): 
     532        AbstractDiscreteCoverage.toXML(self,csmlFrag) 
    531533        return csmlFrag 
    532534 
     
    536538class AbstractStaticCoverageFeature(AbstractCoverageFeature): 
    537539    #CSML Abstract Static Coverage FT class  
    538     def __init__(self): 
    539         pass 
     540    def __init__(self,*args,**kwargs): 
     541        AbstractCoverageFeature.__init__(self,*args,**kwargs) 
    540542    def fromXML(self,csmlFrag): 
    541543        AbstractCoverageFeature.fromXML(self,csmlFrag) 
     
    544546        return csmlFrag 
    545547 
    546 class PointDomain: 
    547     def __init__(self): 
    548         pass 
    549     def fromXML(self,csmlFrag): 
    550         pass 
    551     def toXML(self,csmlFrag): 
     548class AbstractDomain: 
     549    def __init__(self): 
     550        pass 
     551    def fromXML(self,csmlFrag): 
     552        pass 
     553    def toXML(self,csmlFrag): 
     554        return csmlFrag 
     555 
     556class Position: 
     557    def __init__(self,srsName=None,axisLabels=None,uomLabels=None): 
     558        if srsName: 
     559            self.srsName=srsName 
     560        if axisLabels: 
     561            self.axisLabels=axisLabels 
     562        if uomLabels: 
     563            self.uomLabels=uomLabels 
     564    def fromXML(self,csmlFrag): 
     565        print csmlFrag.attrib 
     566        #sys.exit()     
     567        if csmlFrag.attrib.has_key('srsName'):             
     568            self.srsName = csmlFrag.attrib['srsName'] 
     569        if csmlFrag.attrib.has_key('axisLabels'): 
     570            self.axisLabels = csmlFrag.attrib['axisLabels'] 
     571        if csmlFrag.attrib.has_key('uomLabels'): 
     572            self.uomLabels = csmlFrag.attrib['uomLabels'] 
     573        for frag in csmlFrag.getchildren(): 
     574            print frag.tag 
     575            if frag.tag==CSML('location'): 
     576                self.location=frag.text 
     577            if frag.tag==CSML('time'): 
     578                self.time=frag.text 
     579    def toXML(self,csmlFrag): 
     580        if hasattr(self,'uomLabels'): 
     581            csmlFrag.attrib['uomLabels'] = self.uomLabels 
     582        if hasattr(self,'axisLabels'): 
     583            csmlFrag.attrib['axisLabels'] = self.axisLabels 
     584        if hasattr(self,'srsName'): 
     585            csmlFrag.attrib['srsName'] = self.srsName 
     586        if hasattr(self,'location'): 
     587            frag = Element(CSML('location')) 
     588            frag.text=self.location 
     589            csmlFrag.append(frag) 
     590        if hasattr(self,'time'): 
     591            frag = Element(CSML('time')) 
     592            frag.text=self.time 
     593            csmlFrag.append(frag) 
    552594        return csmlFrag 
    553595     
    554 class rangeSet: 
     596class domainReference: 
     597    def __init__(self): 
     598        pass 
     599    def fromXML(self,csmlFrag): 
     600        for frag in csmlFrag.getchildren(): 
     601            if frag.tag==CSML('Position'): 
     602                self.Position=Position() 
     603                self.Position.fromXML(frag) 
     604 
     605    def toXML(self,csmlFrag): 
     606        if hasattr(self,'Position'): 
     607             frag = Element(CSML('Position')) 
     608             Position.toXML(self.Position,frag) 
     609             csmlFrag.append(frag) 
     610        return csmlFrag 
     611 
     612class domainComplement: 
     613    def __init__(self): 
     614        pass 
     615    def fromXML(self,csmlFrag): 
     616        pass 
     617    def toXML(self,csmlFrag): 
     618        return csmlFrag 
     619     
     620class PointDomain(AbstractDomain): 
     621    def __init__(self): 
     622        pass 
     623    def fromXML(self,csmlFrag): 
     624        AbstractDomain.fromXML(self,csmlFrag) 
     625        for frag in csmlFrag.getchildren(): 
     626            if frag.tag == CSML('domainReference'): 
     627                self.domainReference = domainReference() 
     628                self.domainReference.fromXML(frag) 
     629 
     630            if frag.tag == CSML('domainComplement'): 
     631                self.domainComplement = frag.text 
     632    def toXML(self,csmlFrag): 
     633        AbstractDomain.toXML(self,csmlFrag) 
     634        if hasattr(self,'domainReference'): 
     635            frag = Element(CSML('domainReference')) 
     636            domainReference.toXML(self.domainReference,frag) 
     637            csmlFrag.append(frag) 
     638        if hasattr(self,'domainComplement'): 
     639             frag = Element(CSML('domainComplement')) 
     640             domainComplement.toXML(self.domainComplement,frag) 
     641             csmlFrag.append(frag) 
     642        return csmlFrag 
    555643     
    556644class PointFeature(AbstractStaticCoverageFeature): 
     645#TODO: 
     646 
     647#Fiinish rangeSet, parameter and coverageFunction (23/02/06) 
     648             
     649             
    557650    #CSML PointFeature class 
    558651    #       PointFeature(AbstractStaticCoverageFeatureType): 
     
    561654    #      +gml:coverageFunction[0..*] 
    562655    #      +parameter:om:PhenomenonPropertyType 
    563     def __init__(self,PointDomain=None,rangeSet=None,coverageFunction=None, parameter=None): 
     656    def __init__(self,PointDomain=None,rangeSet=None,coverageFunction=None, parameter=None,*args,**kwargs): 
     657        AbstractStaticCoverageFeature.__init__(self,*args,**kwargs) 
     658 
    564659        if PointDomain: 
    565660            self.PointDomain=PointDomain 
     
    572667    def fromXML(self,csmlFrag): 
    573668        AbstractStaticCoverageFeature.fromXML(self,csmlFrag) 
    574         for frag in csmlFrag.getchildren(): 
    575             print frag 
     669 
     670        for frag in csmlFrag.getchildren(): 
    576671            if frag.tag == CSML('PointDomain'): 
    577672                self.PointDomain = PointDomain() 
    578673                self.PointDomain.fromXML(frag) 
    579             if frag.tag == GML('rangeSet'): 
    580                self.rangeSet=rangeSet() 
    581                self.rangeSet.fromXML(frag) 
    582             if frag.tag == GML('coverageFunction'): 
    583                 checkArrayAttrib(self,'coverageFunction') 
    584                 self.coverageFunction.append(frag.text) 
     674#             if frag.tag == GML('rangeSet'): 
     675#                self.rangeSet=rangeSet() 
     676#                self.rangeSet.fromXML(frag) 
     677#             if frag.tag == GML('coverageFunction'): 
     678#                 checkArrayAttrib(self,'coverageFunction') 
     679#                 self.coverageFunction.append(frag.text) 
    585680##        else: 
    586681##            raise Exception('Unexpected element: "'+frag.tag+'"') 
    587682    def toXML(self,csmlFrag): 
    588         csmlFrag = AbstractStaticCoverageFeature.toXML(self,csmlFrag) 
    589         frag = Element(CSML('PointDomain')) 
    590         frag.text = self.PointDomain 
    591         csmlFrag.append(frag) 
     683        AbstractStaticCoverageFeature.toXML(self,csmlFrag) 
     684        if hasattr(self,'PointDomain'): 
     685             frag = Element(CSML('PointDomain')) 
     686             PointDomain.toXML(self.PointDomain,frag) 
     687             csmlFrag.append(frag) 
     688#         if hasattr(self,'rangeSet'): 
     689#              frag = Element(CSML('rangeSet')) 
     690#              PointDomain.toXML(self.PointDomain,frag) 
     691#              csmlFrag.append(frag) 
     692#         if hasattr(self,'parameter'): 
     693#              frag = Element(CSML('parameter')) 
     694#              frag.text=self.parameter 
     695#              csmlFrag.append(frag) 
    592696        return csmlFrag 
    593697 
     
    639743        pass 
    640744    def fromXML(self,csmlFrag): 
    641         pass 
    642     def toXML(self,csmlFrag): 
     745        AbstractGML.fromXML(self,csmlFrag) 
     746    def toXML(self,csmlFrag): 
     747        AbstractGML.toXML(self,csmlFrag) 
    643748        return csmlFrag 
    644749 
     
    683788    def toXML(self,csmlFrag): 
    684789        AbstractFeature.toXML(self,csmlFrag) 
    685         #add stuff here.. 
     790        i=0 
    686791        for member in self.members: 
    687792            if isinstance(member,PointFeature): 
    688                 frag = Element(CSML('PointFeature')) 
    689                 frag = PointFeature.toXML(member,frag) 
    690  
    691  
     793                superFrag=Element(GML('FeatureMember')) 
     794                frag=Element(CSML('PointFeature')) 
     795                PointFeature.toXML(self.members[i],frag) 
     796                superFrag.append(frag) 
     797                csmlFrag.append(superFrag) 
     798            if isinstance(member,ProfileFeature): 
     799                superFrag=Element(GML('FeatureMember')) 
     800                frag=Element(CSML('ProfileFeature')) 
     801                ProfileFeature.toXML(self.members[i],frag) 
     802                superFrag.append(frag) 
     803                csmlFrag.append(superFrag) 
     804            if isinstance(member,GridFeature): 
     805                superFrag=Element(GML('FeatureMember')) 
     806                frag=Element(CSML('GridFeature')) 
     807                GridFeature.toXML(self.members[i],frag) 
     808                superFrag.append(frag) 
     809                csmlFrag.append(superFrag) 
     810            if isinstance(member,PointSeriesFeature): 
     811                superFrag=Element(GML('FeatureMember')) 
     812                frag=Element(CSML('PointSeriesFeature')) 
     813                PointSeriesFeature.toXML(self.members[i],frag) 
     814                superFrag.append(frag) 
     815                csmlFrag.append(superFrag) 
     816            if isinstance(member,ProfileSeriesFeature): 
     817                superFrag=Element(GML('FeatureMember')) 
     818                frag=Element(CSML('ProfileSeriesFeature')) 
     819                ProfileSeriesFeature.toXML(self.members[i],frag) 
     820                superFrag.append(frag) 
     821                csmlFrag.append(superFrag) 
     822            if isinstance(member,GridSeriesFeature): 
     823                superFrag=Element(GML('FeatureMember')) 
     824                frag=Element(CSML('GridSeriesFeature')) 
     825                GridSeriesFeature.toXML(self.members[i],frag) 
     826                superFrag.append(frag) 
     827                csmlFrag.append(superFrag) 
     828            if isinstance(member,TrajectoryFeature): 
     829                superFrag=Element(GML('FeatureMember')) 
     830                frag=Element(CSML('TrajectoryFeature')) 
     831                TrajectoryFeature.toXML(self.members[i],frag) 
     832                superFrag.append(frag) 
     833                csmlFrag.append(superFrag) 
     834            i=i+1 
     835         
    692836        return csmlFrag 
    693837 
  • TI02-CSML/trunk/newparser/example.xml

    r632 r654  
    170170                                <PointDomain> 
    171171                                        <domainReference> 
    172                                                 <Position srsName="urn:EPSG:geographicCRS:4979" axisLabels="Lat Long h" uomLabels="degree degree m"> 
     172                                                <Position  srsName="urn:EPSG:geographicCRS:4979" axisLabels="Lat Long h" uomLabels="degree degree m"> 
    173173                                                        <location>0.1 1.5 25</location> 
    174174                                                        <time>2000-08-13T13:51:10</time> 
  • TI02-CSML/trunk/newparser/test.py

    r649 r654  
    1919############################################################################## 
    2020# 1. Test parsing from CSML file 
    21 tree = ElementTree(file='examplebanana.xml') 
     21tree = ElementTree(file='example.xml') 
    2222dataset = Dataset() 
    2323dataset.fromXML(tree.getroot()) 
Note: See TracChangeset for help on using the changeset viewer.