/[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 929 by jonathan, Tue May 20 15:22:42 2003 UTC revision 1086 by jan, Wed May 28 11:36:05 2003 UTC
# Line 173  class Layer(BaseLayer): Line 173  class Layer(BaseLayer):
173          self.store = store          self.store = store
174          self.shapefile = self.store.Shapefile()          self.shapefile = self.store.Shapefile()
175          self.shapetable = self.store.Table()          self.shapetable = self.store.Table()
176          self.filename = self.store.filename          if hasattr(self.store, "FileName"):
177                self.filename = self.store.FileName()
178          self.table = self.shapetable          self.table = self.shapetable
179    
180          numshapes, shapetype, mins, maxs = self.shapefile.info()          numshapes, shapetype, mins, maxs = self.shapefile.info()
# Line 349  class Layer(BaseLayer): Line 350  class Layer(BaseLayer):
350      def TreeInfo(self):      def TreeInfo(self):
351          items = []          items = []
352    
353            if hasattr(self, 'filename'):
354                items.append(_("Filename: %s") % self.filename)
355    
356          if self.Visible():          if self.Visible():
357              items.append(_("Shown"))              items.append(_("Shown"))
358          else:          else:
# Line 384  class RasterLayer(BaseLayer): Line 388  class RasterLayer(BaseLayer):
388                        the source image is in.                        the source image is in.
389    
390          visible -- True is the layer should initially be visible.          visible -- True is the layer should initially be visible.
391    
392            Throws IOError if the filename is invalid or points to a file that
393            is not in a format GDAL can use.
394          """          """
395    
396          BaseLayer.__init__(self, title, visible = visible)          BaseLayer.__init__(self, title, visible = visible)
# Line 393  class RasterLayer(BaseLayer): Line 400  class RasterLayer(BaseLayer):
400    
401          self.bbox = -1          self.bbox = -1
402    
403          self.UnsetModified()          #
404            # temporarily open the file so that GDAL can test if it's valid.
405            #
406            dataset = gdal.Open(self.filename, GA_ReadOnly)
407    
408            if dataset is None:
409                raise IOError()
410    
411            self.UnsetModified()
412    
413      def BoundingBox(self):      def BoundingBox(self):
414          """Return the layer's bounding box in the intrinsic coordinate system.          """Return the layer's bounding box in the intrinsic coordinate system.
# Line 406  class RasterLayer(BaseLayer): Line 420  class RasterLayer(BaseLayer):
420              if dataset is None:              if dataset is None:
421                  self.bbox = None                  self.bbox = None
422              else:              else:
423                  left, bottom = self.__CalcCorner(dataset,                  geotransform = dataset.GetGeoTransform()
424                                                   0, dataset.RasterYSize)                  if geotransform is None:
425                  right, top   = self.__CalcCorner(dataset,                      return None
426                                                   dataset.RasterXSize, 0)  
427                    x = 0
428                    y = dataset.RasterYSize
429                    left = geotransform[0] +        \
430                           geotransform[1] * x +    \
431                           geotransform[2] * y
432    
433                    bottom = geotransform[3] +      \
434                             geotransform[4] * x +  \
435                             geotransform[5] * y
436    
437                    x = dataset.RasterXSize
438                    y = 0
439                    right = geotransform[0] +       \
440                            geotransform[1] * x +   \
441                            geotransform[2] * y
442    
443                    top = geotransform[3] +         \
444                          geotransform[4] * x +     \
445                          geotransform[5] * y
446    
447                  self.bbox = (left, bottom, right, top)                  self.bbox = (left, bottom, right, top)
448    
449          return self.bbox          return self.bbox
450    
     def __CalcCorner(self, dataset, x, y):  
         geotransform = dataset.GetGeoTransform()  
         return geotransform[0] + geotransform[1] * x + geotransform[2] * y, \  
                geotransform[3] + geotransform[4] * x + geotransform[5] * y  
   
451      def LatLongBoundingBox(self):      def LatLongBoundingBox(self):
452          bbox = self.BoundingBox()          bbox = self.BoundingBox()
453          if bbox is not None:          if bbox is None:
             llx, lly, urx, ury = bbox  
             if self.projection is not None:  
                 llx, lly = self.projection.Inverse(llx, lly)  
                 urx, ury = self.projection.Inverse(urx, ury)  
             return llx, lly, urx, ury  
         else:  
454              return None              return None
455    
456            llx, lly, urx, ury = bbox
457            if self.projection is not None:
458                llx, lly = self.projection.Inverse(llx, lly)
459                urx, ury = self.projection.Inverse(urx, ury)
460    
461            return llx, lly, urx, ury
462    
463      def GetImageFilename(self):      def GetImageFilename(self):
464          return self.filename          return self.filename
465    

Legend:
Removed from v.929  
changed lines
  Added in v.1086

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26