/[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 996 by bh, Thu May 22 18:21:10 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 384  class RasterLayer(BaseLayer): Line 385  class RasterLayer(BaseLayer):
385                        the source image is in.                        the source image is in.
386    
387          visible -- True is the layer should initially be visible.          visible -- True is the layer should initially be visible.
388    
389            Throws IOError if the filename is invalid or points to a file that
390            is not in a format GDAL can use.
391          """          """
392    
393          BaseLayer.__init__(self, title, visible = visible)          BaseLayer.__init__(self, title, visible = visible)
# Line 393  class RasterLayer(BaseLayer): Line 397  class RasterLayer(BaseLayer):
397    
398          self.bbox = -1          self.bbox = -1
399    
400          self.UnsetModified()          #
401            # temporarily open the file so that GDAL can test if it's valid.
402            #
403            dataset = gdal.Open(self.filename, GA_ReadOnly)
404    
405            if dataset is None:
406                raise IOError()
407    
408            self.UnsetModified()
409    
410      def BoundingBox(self):      def BoundingBox(self):
411          """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 417  class RasterLayer(BaseLayer):
417              if dataset is None:              if dataset is None:
418                  self.bbox = None                  self.bbox = None
419              else:              else:
420                  left, bottom = self.__CalcCorner(dataset,                  geotransform = dataset.GetGeoTransform()
421                                                   0, dataset.RasterYSize)                  if geotransform is None:
422                  right, top   = self.__CalcCorner(dataset,                      return None
423                                                   dataset.RasterXSize, 0)  
424                    x = 0
425                    y = dataset.RasterYSize
426                    left = geotransform[0] +        \
427                           geotransform[1] * x +    \
428                           geotransform[2] * y
429    
430                    bottom = geotransform[3] +      \
431                             geotransform[4] * x +  \
432                             geotransform[5] * y
433    
434                    x = dataset.RasterXSize
435                    y = 0
436                    right = geotransform[0] +       \
437                            geotransform[1] * x +   \
438                            geotransform[2] * y
439    
440                    top = geotransform[3] +         \
441                          geotransform[4] * x +     \
442                          geotransform[5] * y
443    
444                  self.bbox = (left, bottom, right, top)                  self.bbox = (left, bottom, right, top)
445    
446          return self.bbox          return self.bbox
447    
     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  
   
448      def LatLongBoundingBox(self):      def LatLongBoundingBox(self):
449          bbox = self.BoundingBox()          bbox = self.BoundingBox()
450          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:  
451              return None              return None
452    
453            llx, lly, urx, ury = bbox
454            if self.projection is not None:
455                llx, lly = self.projection.Inverse(llx, lly)
456                urx, ury = self.projection.Inverse(urx, ury)
457    
458            return llx, lly, urx, ury
459    
460      def GetImageFilename(self):      def GetImageFilename(self):
461          return self.filename          return self.filename
462    

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26