/[thuban]/branches/WIP-pyshapelib-bramz/libraries/pyshapelib/pytest.py
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/libraries/pyshapelib/pytest.py

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

trunk/thuban/libraries/pyshapelib/pytest.py revision 1611 by jan, Tue Aug 19 21:24:20 2003 UTC branches/WIP-pyshapelib-bramz/libraries/pyshapelib/pytest.py revision 2741 by bramz, Tue Mar 13 23:30:41 2007 UTC
# Line 4  import shapelib, dbflib, shptree Line 4  import shapelib, dbflib, shptree
4  #       The the shapefile module  #       The the shapefile module
5  #  #
6    
7    print "--- testing shapelib ---"
8    
9    def test_shpobject(obj):
10        # The vertices method returns the shape as a list of lists of tuples.
11        print "vertices:", obj.vertices()
12        
13        # The part_types method returns a tuple with the types of every part
14        print "part_types:", obj.part_types()
15    
16        # The extents returns a tuple with two 4-element lists with the min.
17        # and max. values of the vertices.
18        print "extents:", obj.extents()
19    
20        # The type attribute is the type code (one of the SHPT* constants
21        # defined in the shapelib module)
22        print "type:", obj.type
23    
24        # The id attribute is the shape id
25        print "id:", obj.id
26        
27        # the __repr__ method returns a string that can be eval()'ed to
28        # recreate the object.  This __repr__ is also used by __str__
29        # and print
30        print "obj:", obj
31        print "reconstruction using __repr__:",
32        obj_repr = repr(obj)
33        obj_copy = eval(obj_repr)
34        if repr(obj_copy) == obj_repr:
35            print "ok"
36        else:
37            print "failed"
38        
39    
40        
41  def make_shapefile(filename):  def make_shapefile(filename):
42      obj = shapelib.SHPObject(shapelib.SHPT_POLYGON, 1,      print "\n* Creating a ShapeFile"
43                               [[(10, 10), (20, 10), (20, 20), (10, 10)]])      
44      print obj.extents()      # Create a shapefile with polygons
     print obj.vertices()  
45      outfile = shapelib.create(filename, shapelib.SHPT_POLYGON)      outfile = shapelib.create(filename, shapelib.SHPT_POLYGON)
46    
47        # Create one very simple polygon and write it to the shapefile.  The
48        # vertices should be given in clockwise order to comply with the
49        # shapefile specification.
50        print "\nA very simple polygon"
51        obj = shapelib.SHPObject(shapelib.SHPT_POLYGON, 1,
52                                 [[(10, 10), (10, 20), (20, 20), (10, 10)]])
53        test_shpobject(obj)
54        outfile.write_object(-1, obj)
55    
56        # Create a polygon with a hole.  Note that according to the
57        # shapefile specification, the vertices of the outer ring have to be
58        # in clockwise order and the inner rings have to be in counter
59        # clockwise order.
60        #
61        # There's an optional fourth parameter which when given must be a
62        # list of part types, one for each part of the shape.  For polygons,
63        # the part type is always shapelib.SHPP_RING, though.  The part
64        # types are only relevant for SHPT_MULTIPATCH shapefiles.
65        print "\nPolygon with a hole"
66        obj = shapelib.SHPObject(shapelib.SHPT_POLYGON, 1,
67                                 [[(0, 0), (0, 40), (40, 40), (40, 0), (0, 0)],
68                                  [(10, 10), (20, 10), (20, 20), (10, 20),(10, 10)],
69                                  ])
70        test_shpobject(obj)
71      outfile.write_object(-1, obj)      outfile.write_object(-1, obj)
72      del outfile  
73        # close the file.
74        outfile.close()
75    
76  def read_shapefile(filename):  def read_shapefile(filename):
77        print "\n* Reading a ShapeFile"
78        
79      # open the shapefile      # open the shapefile
80      shp = shapelib.ShapeFile(filename)      shp = shapelib.ShapeFile(filename)
81    
# Line 22  def read_shapefile(filename): Line 84  def read_shapefile(filename):
84      # the SHPT* constants defined in the shapelib module) and min and      # the SHPT* constants defined in the shapelib module) and min and
85      # max are 4-element lists with the min. and max. values of the      # max are 4-element lists with the min. and max. values of the
86      # vertices.      # vertices.
87      print shp.info()      print "info:", shp.info()
   
     # read_object reads a shape  
     obj = shp.read_object(0)  
   
     # The vertices method returns the shape as a list of lists of tuples.  
     print obj.vertices()[0][:10]  
   
     # The extents returns a tuple with two 4-element lists with the min.  
     # and max. values of the vertices.  
     print obj.extents()  
   
     # The type attribute is the type code (one of the SHPT* constants  
     # defined in the shapelib module)  
     print obj.type  
   
     # The id attribute is the shape id  
     print obj.id  
88    
89      # the cobject method returns a PyCObject containing the shapelib      # the cobject method returns a PyCObject containing the shapelib
90      # SHPHandle. This is useful for passing shapefile objects to      # SHPHandle. This is useful for passing shapefile objects to
91      # C-Python extensions.      # C-Python extensions.
92      print shp.cobject()      print "cobject:", shp.cobject()
93        
94        n = shp.info()[0]
95        for i in range(n):
96            obj = shp.read_object(i)
97            print "\nread_object(%i):" % i
98            test_shpobject(obj)
99    
100        print "\n* SHPTree:"
101        
102      # build a quad tree from the shapefile. The first argument must be      # build a quad tree from the shapefile. The first argument must be
103      # the return value of the shape file object's cobject method (this      # the return value of the shape file object's cobject method (this
104      # is currently needed to access the shape file at the C-level). The      # is currently needed to access the shape file at the C-level). The
# Line 66  read_shapefile("testfile") Line 119  read_shapefile("testfile")
119  #       Test the DBF file module.  #       Test the DBF file module.
120  #  #
121    
122    print "\n\n--- testing dbflib ---"
123    
124  def make_dbf(file):  def make_dbf(file):
125      # create a new dbf file and add three fields.      # create a new dbf file and add three fields.
126      dbf = dbflib.create(file)      dbf = dbflib.create(file)

Legend:
Removed from v.1611  
changed lines
  Added in v.2741

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26