/[thuban]/branches/WIP-pyshapelib-bramz/Thuban/Model/proj.py
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/Thuban/Model/proj.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 708 by jonathan, Wed Apr 23 08:44:52 2003 UTC revision 749 by jonathan, Fri Apr 25 14:22:35 2003 UTC
# Line 7  Line 7 
7    
8  __version__ = "$Revision$"  __version__ = "$Revision$"
9    
10    from Thuban import _
11    
12    from types import StringTypes
13    
14  import Projection  import Projection
15  BaseProjection = Projection.Projection  BaseProjection = Projection.Projection
16  del Projection  del Projection
# Line 15  class Projection(BaseProjection): Line 19  class Projection(BaseProjection):
19    
20      """A proj4 projection object that remembers the parameters"""      """A proj4 projection object that remembers the parameters"""
21    
22      def __init__(self, params, name = "Unknown"):      def __init__(self, params, name = None):
23            """Initialize the Projection with a list of
24            'parameter=value' strings and an optional name. If 'name' is
25            None, the name will be set to 'Unknown' in the local language.
26            """
27    
28          BaseProjection.__init__(self, params)          BaseProjection.__init__(self, params)
29          self.params = params  
30          self.name = name          self.SetName(name)
31            self.SetAllParameters(params)
32    
33      def ForwardBBox(self, bbox):      def ForwardBBox(self, bbox):
34          """Return the bounding box of the corners of the bounding box bbox          """Return the bounding box of the corners of the bounding box bbox
# Line 38  class Projection(BaseProjection): Line 48  class Projection(BaseProjection):
48          return min(xs), min(ys), max(xs), max(ys)          return min(xs), min(ys), max(xs), max(ys)
49    
50      def GetName(self):      def GetName(self):
51            """Return the name of the projection."""
52          return self.name          return self.name
53    
54        def SetName(self, name):
55            """Set the name of the projection.
56    
57            If 'name' is None, the name will be set to 'Unknown'
58            in the local language.
59            """
60    
61            if name is None:
62                self.name = _("Unknown")
63            elif isinstance(name, StringTypes):
64                self.name = name
65    
66      def GetParameter(self, param):      def GetParameter(self, param):
67            """Return the projection value for the given parameter.
68    
69            If 'param' exists as a valid parameter then the returned
70            value is a string with that value. If the parameter doesn't
71            exist an empty string is returned.
72            """
73    
74          for pair in self.params:          for pair in self.params:
75              p, v = pair.split("=")              p, v = pair.split("=")
# Line 50  class Projection(BaseProjection): Line 79  class Projection(BaseProjection):
79          return ""          return ""
80    
81      def GetAllParameters(self):      def GetAllParameters(self):
82            """Return list of 'parameter=value' strings"""
83          return self.params          return self.params
84    
85        def SetAllParameters(self, params):
86            """Set the projection's parameters to the given parameter list."""
87            self.params = params
88    
89        def SetProjection(self, proj):
90            """Set the projection properties to those of the given projection.
91    
92            This does not copy the object.
93            """
94    
95            self.SetName(proj.name)
96            self.SetAllParameters(proj.params)
97    
98      def __repr__(self):      def __repr__(self):
99          return repr(self.params)          return self.name + ": " + repr(self.params)
100    
101  class ProjFile:  class ProjFile:
102    
103      def __init__(self, filename):      def __init__(self, filename):
104          self.projs = []          """Intialize the ProjFile.
105    
106            filename -- name of the file that this ProjFile represents.
107            """
108    
109            self.__projs = []
110    
111          self.SetFileName(filename)          self.SetFilename(filename)
112            
113      def Add(self, proj):      def Add(self, proj):
114          self.projs.append(proj)          """Add the given projection to the end of the file. If 'proj'
115            already exists, it is replaced in the same location as the
116            original projection.
117            """
118    
119            try:
120                #
121                # see if the projection already exists.
122                # this only works if Projection doesn't override __eq__
123                #
124                self.__projs[self.__projs.index(proj)] = proj
125            except ValueError:
126                self.__projs.append(proj)
127    
128        def Remove(self, proj):
129            """Remove the objection proj from the projection file.
130    
131            Raises a ValueError is proj is not found.
132            """
133    
134            self.__projs.remove(proj)
135    
136        def GetFilename(self):
137            """Return the filename where the ProjFile was read or will be
138            written to.
139            """
140    
141      def GetFileName(self):          return self.__filename
         return self.filename  
142    
143      def SetFileName(self, filename):      def SetFilename(self, filename):
144          self.filename = filename          """Set the filename where the ProjFile will be written to."""
145            self.__filename = filename
146    
147      def GetProjections(self):      def GetProjections(self):
148          return self.projs          """Return a list of the projections in the order they were read
149            from the file or will be written.
150    
151            This is not a deep copy list, so any modifications made to the
152            Projection objects will be written to the file.
153            """
154    
155            return self.__projs
156    

Legend:
Removed from v.708  
changed lines
  Added in v.749

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26