/[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 171 by bh, Tue May 14 14:16:24 2002 UTC revision 258 by bh, Thu Aug 15 12:48:03 2002 UTC
# Line 139  class Layer(BaseLayer): Line 139  class Layer(BaseLayer):
139              numshapes, shapetype, mins, maxs = self.shapefile.info()              numshapes, shapetype, mins, maxs = self.shapefile.info()
140              self.numshapes = numshapes              self.numshapes = numshapes
141              self.shapetype = shapelib_shapetypes[shapetype]              self.shapetype = shapelib_shapetypes[shapetype]
142              self.bbox = mins[:2] + maxs[:2]  
143                # if there are shapes, set the bbox accordinly. Otherwise
144                # set it to None.
145                if self.numshapes:
146                    self.bbox = mins[:2] + maxs[:2]
147                else:
148                    self.bbox = None
149    
150              # estimate a good depth for the quad tree. Each depth              # estimate a good depth for the quad tree. Each depth
151              # multiplies the number of nodes by four, therefore we              # multiplies the number of nodes by four, therefore we
# Line 153  class Layer(BaseLayer): Line 159  class Layer(BaseLayer):
159              self.shapetree = shptree.SHPTree(self.shapefile.cobject(), 2,              self.shapetree = shptree.SHPTree(self.shapefile.cobject(), 2,
160                                               maxdepth)                                               maxdepth)
161    
162        def Destroy(self):
163            BaseLayer.Destroy()
164            if self.shapefile is not None:
165                self.shapefile.close()
166                self.shapefile = None
167                self.shapetree = None
168            self.table.Destroy()
169    
170      def BoundingBox(self):      def BoundingBox(self):
171          """Return the bounding box of the layer's shapes in their default          """Return the layer's bounding box in the intrinsic coordinate system.
172          coordinate system"""  
173            If the layer has no shapes, return None.
174            """
175            # The bbox will be set by open_shapefile just as we need it
176            # here.
177          self.open_shapefile()          self.open_shapefile()
178          return self.bbox          return self.bbox
179    
180      def LatLongBoundingBox(self):      def LatLongBoundingBox(self):
181          """Return the layer's bounding box in lat/long coordinates"""          """Return the layer's bounding box in lat/long coordinates.
182          llx, lly, urx, ury = self.BoundingBox()  
183          if self.projection is not None:          Return None, if the layer doesn't contain any shapes.
184              llx, lly = self.projection.Inverse(llx, lly)          """
185              urx, ury = self.projection.Inverse(urx, ury)          bbox = self.BoundingBox()
186          return llx, lly, urx, ury          if bbox is not None:
187                llx, lly, urx, ury = bbox
188                if self.projection is not None:
189                    llx, lly = self.projection.Inverse(llx, lly)
190                    urx, ury = self.projection.Inverse(urx, ury)
191                return llx, lly, urx, ury
192            else:
193                return None
194    
195      def NumShapes(self):      def NumShapes(self):
196          """Return the number of shapes in the layer"""          """Return the number of shapes in the layer"""
# Line 222  class Layer(BaseLayer): Line 247  class Layer(BaseLayer):
247          """Set the layer's stroke width."""          """Set the layer's stroke width."""
248          self.stroke_width = width          self.stroke_width = width
249          self.changed(LAYER_LEGEND_CHANGED, self)          self.changed(LAYER_LEGEND_CHANGED, self)
250    
251        def TreeInfo(self):
252            items = []
253    
254            if self.Visible():
255                items.append("Shown")
256            else:
257                items.append("Hidden")
258            items.append("Shapes: %d" % self.NumShapes())
259    
260            bbox = self.LatLongBoundingBox()
261            if bbox is not None:
262                items.append("Extent (lat-lon): (%g, %g, %g, %g)" % bbox)
263            else:
264                items.append("Extent (lat-lon):")
265            items.append("Shapetype: %s" % shapetype_names[self.ShapeType()])
266    
267            def color_string(color):
268                if color is None:
269                    return "None"
270                return "(%.3f, %.3f, %.3f)" % (color.red, color.green, color.blue)
271            items.append("Fill: " + color_string(self.fill))
272            items.append("Outline: " + color_string(self.stroke))
273    
274            return ("Layer '%s'" % self.Title(), items)

Legend:
Removed from v.171  
changed lines
  Added in v.258

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26