/[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 1982 by bh, Tue Nov 25 14:30:34 2003 UTC revision 1983 by bh, Thu Nov 27 15:57:23 2003 UTC
# Line 166  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 184  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 240  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 412  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.1982  
changed lines
  Added in v.1983

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26