/[thuban]/branches/WIP-pyshapelib-bramz/Thuban/Model/data.py
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/Thuban/Model/data.py

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

revision 1551 by bh, Wed Aug 6 17:21:07 2003 UTC revision 1564 by bh, Thu Aug 7 19:19:56 2003 UTC
# Line 32  shapelib_shapetypes = {shapelib.SHPT_POL Line 32  shapelib_shapetypes = {shapelib.SHPT_POL
32                         shapelib.SHPT_ARC: SHAPETYPE_ARC,                         shapelib.SHPT_ARC: SHAPETYPE_ARC,
33                         shapelib.SHPT_POINT: SHAPETYPE_POINT}                         shapelib.SHPT_POINT: SHAPETYPE_POINT}
34    
35    #
36    # Raw shape data formats
37    #
38    
39  class Shape:  # Raw data is the same as that returned by the points method.
40    RAW_PYTHON = "RAW_PYTHON"
41    
42      """Represent one shape"""  # Raw data is a shapefile. The Shape object will use the shapeid as the
43    # raw data.
44    RAW_SHAPEFILE = "RAW_SHAPEFILE"
45    
     def __init__(self, points):  
         self.points = points  
         #self.compute_bbox()  
         self.bbox = None  
46    
47      def compute_bbox(self):  class ShapefileShape:
48          if self.bbox is not None:  
49              return self.bbox      """Represent one shape of a shapefile"""
50    
51        def __init__(self, shapefile, shapeid):
52            self.shapefile = shapefile
53            self.shapeid = shapeid
54    
55        def compute_bbox(self):
56            """
57            Return the bounding box of the shape as a tuple (minx,miny,maxx,maxy)
58            """
59          xs = []          xs = []
60          ys = []          ys = []
61          for part in self.points:          for part in self.Points():
62              for x, y in part:              for x, y in part:
63                  xs.append(x)                  xs.append(x)
64                  ys.append(y)                  ys.append(y)
65          self.llx = min(xs)          return (min(xs), min(ys), max(xs), max(ys))
         self.lly = min(ys)  
         self.urx = max(xs)  
         self.ury = max(ys)  
   
         self.bbox = (self.llx, self.lly, self.urx, self.ury)  
   
         return self.bbox  
66    
67      def Points(self):      def Points(self):
68          return self.points          """Return the coordinates of the shape as a list of lists of pairs"""
69            shape = self.shapefile.read_object(self.shapeid)
70            points = shape.vertices()
71            if self.shapefile.info()[1] == shapelib.SHPT_POINT:
72                points = [points]
73            return points
74    
75        def RawData(self):
76            """Return the shape id to use with the shapefile"""
77            return self.shapeid
78    
79        def Shapefile(self):
80            """Return the shapefile object"""
81            return self.shapefile
82    
83    
84  class ShapeTable(transientdb.AutoTransientTable):  class ShapeTable(transientdb.AutoTransientTable):
# Line 146  class ShapefileStore: Line 161  class ShapefileStore:
161          """          """
162          return self.shapetype          return self.shapetype
163    
164        def RawShapeFormat(self):
165            """Return the raw data format of the shape data, i.e. RAW_SHAPEFILE"""
166            return RAW_SHAPEFILE
167    
168      def NumShapes(self):      def NumShapes(self):
169          """Return the number of shapes in the shape store"""          """Return the number of shapes in the shape store"""
170          return self.numshapes          return self.numshapes
# Line 183  class ShapefileStore: Line 202  class ShapefileStore:
202    
203      def Shape(self, index):      def Shape(self, index):
204          """Return the shape with index index"""          """Return the shape with index index"""
205          shape = self.shapefile.read_object(index)          return ShapefileShape(self.shapefile, index)
   
         if self.ShapeType() == SHAPETYPE_POINT:  
             points = [shape.vertices()]  
         else:  
             points = []  
             for poly in shape.vertices():  
                 part = []  
                 for x, y in poly:  
                     part.append((x, y))  
                 points.append(part)  
   
         return Shape(points)  
206    
207    
208    
# Line 258  class DerivedShapeStore: Line 265  class DerivedShapeStore:
265          """          """
266          return self.shapestore.ShapeType()          return self.shapestore.ShapeType()
267    
268        def RawShapeFormat(self):
269            """Return the raw data format of the shapes.
270    
271            This method is simply delegated to the shapestore the
272            DerivedShapeStore was instantiated with.
273            """
274            return self.shapestore.RawShapeFormat()
275    
276      def NumShapes(self):      def NumShapes(self):
277          """Return the number of shapes in the shapestore."""          """Return the number of shapes in the shapestore."""
278          return self.shapestore.NumShapes()          return self.shapestore.NumShapes()

Legend:
Removed from v.1551  
changed lines
  Added in v.1564

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26