/[thuban]/trunk/thuban/Thuban/Model/layer.py
ViewVC logotype

Diff of /trunk/thuban/Thuban/Model/layer.py

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

revision 1599 by bh, Mon Aug 18 12:45:28 2003 UTC revision 2228 by bh, Thu Jun 3 15:17:54 2004 UTC
# Line 1  Line 1 
1  # Copyright (c) 2001, 2002, 2003 by Intevation GmbH  # Copyright (c) 2001, 2002, 2003, 2004 by Intevation GmbH
2  # Authors:  # Authors:
3  # Bernhard Herzog <[email protected]>  # Bernhard Herzog <[email protected]>
4  # Jonathan Coles <[email protected]>  # Jonathan Coles <[email protected]>
# Line 125  class Layer(BaseLayer): Line 125  class Layer(BaseLayer):
125    
126          self.UnsetModified()          self.UnsetModified()
127    
     def __getattr__(self, attr):  
         """Access to some attributes for backwards compatibility  
   
         The attributes implemented here are now held by the shapestore  
         if at all. For backwards compatibility pretend that they are  
         still there but issue a DeprecationWarning when they are  
         accessed.  
         """  
         if attr in ("table", "shapetable"):  
             value = self.store.Table()  
         elif attr == "shapefile":  
             value = self.store.Shapefile()  
         elif attr == "filename":  
             value = self.store.FileName()  
         else:  
             raise AttributeError, attr  
         warnings.warn("The Layer attribute %r is deprecated."  
                       " It's value can be accessed through the shapestore"  
                       % attr, DeprecationWarning, stacklevel = 2)  
         return value  
   
128      def SetShapeStore(self, store):      def SetShapeStore(self, store):
129          # Set the classification to None if there is a classification          # Set the classification to None if there is a classification
130          # and the new shapestore doesn't have a table with a suitable          # and the new shapestore doesn't have a table with a suitable
# Line 187  class Layer(BaseLayer): Line 166  class Layer(BaseLayer):
166          Return None, if the layer doesn't contain any shapes.          Return None, if the layer doesn't contain any shapes.
167          """          """
168          bbox = self.BoundingBox()          bbox = self.BoundingBox()
169          if bbox is not None:          if bbox is not None and self.projection is not None:
170              llx, lly, urx, ury = bbox              bbox = self.projection.InverseBBox(bbox)
171              if self.projection is not None:          return bbox
                 llx, lly = self.projection.Inverse(llx, lly)  
                 urx, ury = self.projection.Inverse(urx, ury)  
             return llx, lly, urx, ury  
         else:  
             return None  
172    
173      def ShapesBoundingBox(self, shapes):      def ShapesBoundingBox(self, shapes):
174          """Return a bounding box in lat/long coordinates for the given          """Return a bounding box in lat/long coordinates for the given
# Line 205  class Layer(BaseLayer): Line 179  class Layer(BaseLayer):
179    
180          if shapes is None or len(shapes) == 0: return None          if shapes is None or len(shapes) == 0: return None
181    
182          llx = []          xs = []
183          lly = []          ys = []
         urx = []  
         ury = []  
   
         if self.projection is not None:  
             inverse = lambda x, y: self.projection.Inverse(x, y)  
         else:  
             inverse = lambda x, y: (x, y)  
184    
185          for id in shapes:          for id in shapes:
186              left, bottom, right, top = self.Shape(id).compute_bbox()              bbox = self.Shape(id).compute_bbox()
187                if self.projection is not None:
188              left, bottom = inverse(left, bottom)                  bbox = self.projection.InverseBBox(bbox)
189              right, top   = inverse(right, top)              left, bottom, right, top = bbox
190                xs.append(left); xs.append(right)
191                ys.append(bottom); ys.append(top)
192    
193              llx.append(left)          return (min(xs), min(ys), max(xs), max(ys))
             lly.append(bottom)  
             urx.append(right)  
             ury.append(top)  
194    
         return (min(llx), min(lly), max(urx), max(ury))  
195    
196      def GetFieldType(self, fieldName):      def GetFieldType(self, fieldName):
197          if self.store:          if self.store:
# Line 261  class Layer(BaseLayer): Line 226  class Layer(BaseLayer):
226          form (minx, miny, maxx, maxy) in unprojected coordinates.          form (minx, miny, maxx, maxy) in unprojected coordinates.
227          """          """
228          if self.projection is not None:          if self.projection is not None:
229              left, bottom, right, top = bbox              bbox = self.projection.ForwardBBox(bbox)
             xs = []; ys = []  
             for x, y in [(left, bottom), (left, top), (right, top),  
                          (right, bottom)]:  
                 x, y = self.projection.Forward(x, y)  
                 xs.append(x)  
                 ys.append(y)  
             bbox = (min(xs), min(ys), max(xs), max(ys))  
   
230          return self.store.ShapesInRegion(bbox)          return self.store.ShapesInRegion(bbox)
231    
232      def GetClassificationColumn(self):      def GetClassificationColumn(self):
# Line 332  class Layer(BaseLayer): Line 289  class Layer(BaseLayer):
289    
290          bbox = self.LatLongBoundingBox()          bbox = self.LatLongBoundingBox()
291          if bbox is not None:          if bbox is not None:
292              items.append(_("Extent (lat-lon): (%g, %g, %g, %g)") % bbox)              items.append(_("Extent (lat-lon): (%g, %g, %g, %g)") % tuple(bbox))
293          else:          else:
294              items.append(_("Extent (lat-lon):"))              items.append(_("Extent (lat-lon):"))
295          items.append(_("Shapetype: %s") % shapetype_names[self.ShapeType()])          items.append(_("Shapetype: %s") % shapetype_names[self.ShapeType()])
# Line 433  class RasterLayer(BaseLayer): Line 390  class RasterLayer(BaseLayer):
390          if bbox is None:          if bbox is None:
391              return None              return None
392    
         llx, lly, urx, ury = bbox  
393          if self.projection is not None:          if self.projection is not None:
394              llx, lly = self.projection.Inverse(llx, lly)              bbox = self.projection.InverseBBox(bbox)
             urx, ury = self.projection.Inverse(urx, ury)  
395    
396          return llx, lly, urx, ury          return bbox
397    
398      def GetImageFilename(self):      def GetImageFilename(self):
399          return self.filename          return self.filename

Legend:
Removed from v.1599  
changed lines
  Added in v.2228

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26