Changeset 682


Ignore:
Timestamp:
17/03/06 16:14:31 (13 years ago)
Author:
domlowe
Message:

AbstractCoordinateReferenceSystems? (and inherted hierarchy) added

File:
1 edited

Legend:

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

    r680 r682  
    213213     
    214214     
     215class CodeType(MutableString): 
     216        #Class for gml:CodeType element 
     217        #+ attribute name="codeSpace" type="anyURI" use="optional" 
     218    def __init__(self,val='',codeSpace=None): 
     219        MutableString.__init__(self,val) 
     220        if codeSpace: 
     221            self.codeSpace = codeSpace 
     222    def fromXML(self,csmlFrag): 
     223        self.data = csmlFrag.text 
     224        if csmlFrag.attrib.has_key('codeSpace'): 
     225            self.codeSpace = csmlFrag.attrib['codeSpace'] 
     226    def toXML(self,csmlFrag): 
     227        csmlFrag.text = self.data 
     228        if hasattr(self,'codeSpace'): 
     229            csmlFrag.attrib['codeSpace'] = self.codeSpace 
     230        return csmlFrag 
     231 
     232         
     233         
     234class TimeIntervalLength: 
     235    #class for gml:TimeIntervalLength (decimal) 
     236    #n.b. have not implemented 'decimal' class 
     237    #+unit: gml:UnitType [1] 
     238    # +radix: posint [0...1] 
     239    # + factor :int [0...1] 
     240    def __init__(self, unit=None, radix=None, factor=None,data=None): 
     241        if unit: 
     242            self.unit =unit 
     243        if radix: 
     244            self.radix=radix 
     245        if factor: 
     246            self.factor=factor 
     247        if data: 
     248            self.data=data 
     249    def fromXML(self, csmlFrag): 
     250        self.data = csmlFrag.text 
     251        if csmlFrag.attrib.has_key('unit'): 
     252            self.unit=csmlFrag.attrib['unit'] 
     253        if csmlFrag.attrib.has_key('radix'): 
     254            self.radix=csmlFrag.attrib['radix'] 
     255        if csmlFrag.attrib.has_key('factor'): 
     256            self.factor=csmlFrag.attrib['factor'] 
     257    def toXML(self,csmlFrag): 
     258        csmlFrag.text=self.data 
     259        if hasattr(self,'unit'): 
     260            csmlFrag.attrib['unit'] = self.unit 
     261        if hasattr(self,'radix'): 
     262            csmlFrag.attrib['radix'] = self.radix 
     263        if hasattr(self,'factor'): 
     264            csmlFrag.attrib['factor'] = self.factor 
     265        return csmlFrag     
     266     
    215267class TimeCoordinateSystem(Definition): 
    216268    #Class for csml:TimeCoordinateSystem(gml:Definition) element 
     
    247299        return csmlFrag 
    248300 
    249 class EngineeringCRS: 
    250     def __init__(self): 
     301 
     302class AbstractReferenceSystemBase(Definition): 
     303#                 <element ref="gml:metaDataProperty" minOccurs="0" maxOccurs="unbounded"/> 
     304#                                       <element ref="gml:remarks" minOccurs="0"> 
     305#                                               <annotation> 
     306#                                                       <documentation>Comments on or information about this reference system, including source information. </documentation> 
     307#                                               </annotation> 
     308#                                       </element> 
     309#                                       <element ref="gml:srsName"/> 
     310    def __init__(self,remarks=None,srsName=None,*args,**kwargs): 
     311        Definition.__init__(self, *args, **kwargs) 
     312        if remarks: 
     313            self.remarks=remarks 
     314        if srsName: 
     315            self.srsName=srsName 
     316    def fromXML(self,csmlFrag): 
     317        Definition.fromXML(self, csmlFrag) 
     318        for frag in csmlFrag.getchildren(): 
     319            if frag.tag==GML('remarks'): 
     320                self.remarks=frag.text 
     321            if frag.tag==GML('srsName'): 
     322                self.srsName=frag.text 
     323    def toXML(self,csmlFrag): 
     324        Definition.toXML(self, csmlFrag) 
     325        if hasattr(self,'remarks'): 
     326            frag = Element(GML('remarks')) 
     327            frag.text=self.remarks 
     328            csmlFrag.append(frag) 
     329        if hasattr(self,'srsName'): 
     330            frag = Element(GML('srsName')) 
     331            frag.text=self.srsName 
     332            csmlFrag.append(frag) 
     333        return csmlFrag 
     334 
     335class AbstractReferenceSystem(AbstractReferenceSystemBase): 
     336    def __init__(self,*args,**kwargs): 
     337        AbstractReferenceSystemBase.__init__(self, *args, **kwargs) 
     338    def fromXML(self,csmlFrag): 
     339        AbstractReferenceSystemBase.fromXML(self, csmlFrag) 
     340    def toXML(self,csmlFrag): 
     341        AbstractReferenceSystemBase.toXML(self, csmlFrag) 
     342        return csmlFrag 
     343 
     344             
     345class AbstractCRS(AbstractReferenceSystem): 
     346#         <element ref="gml:srsID" minOccurs="0" maxOccurs="unbounded"> 
     347#                                               <annotation> 
     348#                                                       <documentation>Set of alterative identifications of this reference system. The first srsID, if any, is normally the primary identification code, and any others are aliases. </documentation> 
     349#                                               </annotation> 
     350#                                       </element> 
     351#                                       <element ref="gml:validArea" minOccurs="0"/> 
     352#                                       <element ref="gml:scope" minOccurs="0"/> 
     353    def __init__(self,*args,**kwargs): 
     354        AbstractReferenceSystem.__init__(self, *args, **kwargs) 
     355    def fromXML(self,csmlFrag): 
     356        AbstractReferenceSystem.fromXML(self, csmlFrag) 
     357    def toXML(self,csmlFrag): 
     358        AbstractReferenceSystem.toXML(self, csmlFrag) 
     359        return csmlFrag 
     360             
     361 
     362class AbstractCoordinateReferenceSystem(AbstractCRS): 
     363    def __init__(self,*args,**kwargs): 
     364        AbstractCRS.__init__(self, *args, **kwargs) 
     365    def fromXML(self,csmlFrag): 
     366        AbstractCRS.fromXML(self, csmlFrag) 
     367    def toXML(self,csmlFrag): 
     368        AbstractCRS.toXML(self, csmlFrag) 
     369        return csmlFrag 
     370 
     371     
     372class DictionaryEntry: 
     373        #what does this inherit from? 
     374    def __init__(self,*args,**kwargs): 
    251375        pass 
    252376    def fromXML(self,csmlFrag): 
    253377        pass 
    254378    def toXML(self,csmlFrag): 
     379        return csmlFrag 
     380     
     381class DatumRef(DictionaryEntry): 
     382    def __init__(self,*args,**kwargs): 
     383        DictionaryEntry.__init__(self, *args, **kwargs) 
     384    def fromXML(self,csmlFrag): 
     385        DictionaryEntry.fromXML(self, csmlFrag) 
     386    def toXML(self,csmlFrag): 
     387        DictionaryEntry.toXML(self, csmlFrag) 
     388        return csmlFrag 
     389 
     390class EngineeringDatumRef(DatumRef): 
     391    def __init__(self,*args,**kwargs): 
     392        DatumRef.__init__(self, *args, **kwargs) 
     393    def fromXML(self,csmlFrag): 
     394        DatumRef.fromXML(self, csmlFrag) 
     395    def toXML(self,csmlFrag): 
     396        DatumRef.toXML(self, csmlFrag) 
     397        return csmlFrag 
     398 
     399class CoordinateSystemRef(DictionaryEntry): 
     400    def __init__(self,*args,**kwargs): 
     401        DictionaryEntry.__init__(self, *args, **kwargs) 
     402    def fromXML(self,csmlFrag): 
     403        DictionaryEntry.fromXML(self, csmlFrag) 
     404    def toXML(self,csmlFrag): 
     405        DictionaryEntry.toXML(self, csmlFrag) 
     406        return csmlFrag 
     407 
     408class EngineeringCRS(AbstractCoordinateReferenceSystem): 
     409        #<element ref="gml:usesCS"/>type="gml:CoordinateSystemRefType"> 
     410        #<element ref="gml:usesEngineeringDatum"/> 
     411    def __init__(self,usesCS=None, usesEngineeringDatum=None,*args,**kwargs): 
     412        AbstractCoordinateReferenceSystem.__init__(self, *args, **kwargs) 
     413        if usesCS: 
     414            self.usesCS=usesCS 
     415        if usesEngineeringDatum: 
     416            self.usesEngineeringDatum=usesEngineeringDatum 
     417    def fromXML(self,csmlFrag): 
     418        AbstractCoordinateReferenceSystem.fromXML(self, csmlFrag) 
     419        for frag in csmlFrag.getchildren(): 
     420            if frag.tag == GML('usesCS'): 
     421                self.usesCS=CoordinateSystemRef() 
     422                CoordinateSystemRef.fromXML(self.usesCS,frag) 
     423            if frag.tag == GML('usesEngineeringDatum'): 
     424                self.usesEngineeringDatum=EngineeringDatumRef() 
     425                EngineeringDatumRef.fromXML(self.usesEngineeringDatum,frag) 
     426    def toXML(self,csmlFrag): 
     427        AbstractCoordinateReferenceSystem.toXML(self, csmlFrag) 
     428        if hasattr(self, 'usesCS'): 
     429            frag=Element(GML('usesCS')) 
     430            CoordinateSystemRef.toXML(self.usesCS, frag) 
     431            csmlFrag.append(frag) 
     432        if hasattr(self, 'usesCS'): 
     433            frag=Element(GML('usesEngineeringDatum')) 
     434            EngineeringDatumRef.toXML(self.usesEngineeringDatum, frag) 
    255435        return csmlFrag 
    256436 
     
    259439        # +quantityType 
    260440        # +catalogSymbol, codeSpace 
    261     def __init__(self,quantityType=None,catalogSymbol=None,codeSpace=None,*args,**kwargs): 
     441    def __init__(self,quantityType=None,catalogSymbol=None,*args,**kwargs): 
    262442        Definition.__init__(self,*args,**kwargs) 
    263443        if quantityType: 
     
    271451                self.quantityType=frag.text 
    272452            elif frag.tag == GML('catalogSymbol'): 
    273                 self.catalogSymbol=frag.text 
    274                 self.codeSpace = frag.attrib 
     453                self.catalogSymbol=CodeType() 
     454                CodeType.fromXML(self.catalogSymbol, frag) 
    275455    def toXML(self,csmlFrag): 
    276456        Definition.toXML(self,csmlFrag) 
     
    281461        if hasattr(self, 'catalogSymbol'): 
    282462            frag=Element(GML('catalogSymbol')) 
    283             frag.text=self.catalogSymbol 
    284             if hasattr(self,'codeSpace'): 
    285                 frag.attrib=self.codeSpace 
     463            CodeType.toXML(self.catalogSymbol,frag) 
    286464            csmlFrag.append(frag) 
    287465        return csmlFrag 
Note: See TracChangeset for help on using the changeset viewer.