[GRASS-SVN] r44818 - grass/trunk/doc/python
svn_grass at osgeo.org
svn_grass at osgeo.org
Thu Dec 30 15:38:27 EST 2010
Author: martinl
Date: 2010-12-30 12:38:27 -0800 (Thu, 30 Dec 2010)
New Revision: 44818
Modified:
grass/trunk/doc/python/vector_example_ctypes.py
Log:
initial clean of ctypes vector example
Modified: grass/trunk/doc/python/vector_example_ctypes.py
===================================================================
--- grass/trunk/doc/python/vector_example_ctypes.py 2010-12-30 19:08:31 UTC (rev 44817)
+++ grass/trunk/doc/python/vector_example_ctypes.py 2010-12-30 20:38:27 UTC (rev 44818)
@@ -1,101 +1,72 @@
#!/usr/bin/python
-# run within GRASS Spearfish session
-# run this before starting python to append module search path:
-# export PYTHONPATH=$PYTHONPATH:/usr/local/grass-7.0.svn/etc/python
-# check with "import sys; sys.path"
-# or:
-# sys.path.append("/usr/local/grass-7.0.svn/etc/python")
-
"""
- **** FIXME: needs to be ported from SWIG to Ctypes! ****
-"""
+Sample Python script to access vector dada using GRASS Ctypes interface
+Run this before starting python to append module search path:
+ export PYTHONPATH=$PYTHONPATH:/usr/local/grass-7.0.svn/etc/python
+check with "import sys; sys.path"
+or
+ sys.path.append("/usr/local/grass-7.0.svn/etc/python")
+"""
+
import os, sys
-from grass.lib import grass
-from grass.lib import vector as grassvect
-import grass.script as grassscript
+from grass.lib.grass import *
+from grass.lib.vector import *
+
if not os.environ.has_key("GISBASE"):
- print "You must be in GRASS GIS to run this program."
- sys.exit(1)
+ sys.exit("You must be in GRASS GIS to run this program.")
-if len(sys.argv)==2:
+if len(sys.argv) == 2:
input = sys.argv[1]
else:
input = raw_input("Vector Map Name? ")
-# initialize
-grass.G_gisinit('')
+# initialize GRASS library
+G_gisinit('')
-# find map in search path
-mapset = grass.G_find_vector2(input,'')
+# find vector map in the search path
+mapset = G_find_vector2(input, '')
+if mapset:
+ print "Vector map found in mapset <%s>" % mapset
+else:
+ sys.exit("Vector map <%s> not found" % input)
# define map structure
-map = grassvect.Map_info()
+map = Map_info()
# define open level (level 2: topology)
-grassvect.Vect_set_open_level (2)
+Vect_set_open_level(2)
-# open existing map
-grassvect.Vect_open_old(map, input, mapset)
+# open existing vector map
+Vect_open_old(map, input, mapset)
# query
-print 'Vect map: ', input
-print 'Vect is 3D: ', grassvect.Vect_is_3d (map)
-print 'Vect DB links: ', grassvect.Vect_get_num_dblinks(map)
-print 'Map Scale: 1:', grassvect.Vect_get_scale(map)
+print 'Vect map: ', input
+print 'Vect is 3D: ', Vect_is_3d(map)
+print 'Vect DB links: ', Vect_get_num_dblinks(map)
+print 'Map Scale: 1:', Vect_get_scale(map)
# vector box tests
-box = grassvect.bound_box()
-c_easting1 = 599505.0
-c_northing = 4921010.0
-c_easting2 = 4599505.0
+box = bound_box()
+c_easting1 = 599505.0
+c_northing = 4921010.0
+c_easting2 = 4599505.0
-grassvect.Vect_get_map_box(map, box)
-print 'Position 1 in box? ', grassvect.Vect_point_in_box(c_easting1, c_northing, 0, box)
-print 'Position 2 in box? ', grassvect.Vect_point_in_box(c_easting2, c_northing, 0, box)
-print 'Vector line 2 in box? ', grassvect.Vect_get_line_box(map, 2, box)
-# misleading:
-# print 'Number of lines:', grassvect.Vect_get_num_lines(map)
+Vect_get_map_box(map, box)
+print 'Position 1 in box? ', Vect_point_in_box(c_easting1, c_northing, 0, box)
+print 'Position 2 in box? ', Vect_point_in_box(c_easting2, c_northing, 0, box)
+print 'Feature id 2 in box? ', Vect_get_line_box(map, 2, box)
+
+print 'Number of features:', Vect_get_num_lines(map)
# how to access GV_POINT?
# print 'Number of points: ', grassvect.Vect_get_num_primitives(map,GV_POINT)
# confusing:
#print 'Number of lines: ', grassvect.Vect_get_num_primitives(map,GV_LINE)
#print 'Number of areas:', grassvect.Vect_get_num_primitives(map,GV_AREA)
-print 'Number of areas:', grassvect.Vect_get_num_areas(map)
+print 'Number of areas:', Vect_get_num_areas(map)
-layer = 1
-tmp = grassscript.tempfile()
-tmpf = file(tmp, 'w')
-
-try:
- f = grassscript.vector_db(input)[int(layer)]
-except KeyError:
- grassscript.fatal("There is no table connected to this map. Run v.db.connect or v.db.addtable first.")
-table = f['table']
-database = f['database']
-driver = f['driver']
-
-# call GRASS command
-grassscript.run_command('v.db.select', flags = 'c', map = input,
- stdout = tmpf)
-tmpf.close()
-
-# check if result is empty
-tmpf = file(tmp)
-if tmpf.read(1) == '':
- grassscript.fatal("Table <%s> contains no data.", table)
-
-# print table to stdout
-for line in tmpf:
- print line
-
-tmpf.close()
-os.remove(tmp)
-
# close map
-grassvect.Vect_close(map)
-## end of the python script
-
+Vect_close(map)
More information about the grass-commit
mailing list