Swig interface také pro vektory
September 24, 2006 – 8:56 amPo rastrech tedy můžeme číst vektorová data a jejich charakteristiky z pythonských skriptů. Příklad
import python_grass6 as g6lib
input = 'soils'
mapset = 'PERMANENT'
g6lib.G_gisinit('')
g6lib.Vect_set_open_level (2)
## how to set Map?
g6lib.Vect_open_old_head (Map, input, mapset)
print 'Vect is 3D:'
print g6lib.Vect_is_3d (Map)
g6lib.Vect_open_old(input, mapset)
print 'Vect DB links'
print g6lib.Vect_get_num_dblinks(Map)
g6lib.Vect_close(Map)
Pokud skriptujete pro GRASS v Pythonu a nebo v Perlu a chtěli jste dosáhnout GRASSového stylu nápovědy a kontroly vstupních parametrů, byli jste odkázáni sami na sebe, což znamenalo, že jste měli něco napůl dotvořeného.
Trochu špinavý, nicméně funkční způsob by mohl vypadat třeba takto:
#!/usr/bin/python
import sys
import os
#%Module
#% description: g.parser test script
#% keywords: keyword1, keyword2
#%End
#%flag
#% key: f
#% description: a flag
#%END
#%option
#% key: raster
#% type: string
#% gisprompt: old,cell,raster
#% description: raster input map
#% required : yes
#%end
#%option
#% key: vector
#% type: string
#% gisprompt: old,vector,vector
#% description: vector input map
#% required : yes
#%end
#%option
#% key: option1
#% type: string
#% description: an option
#% required : yes
#%end
def main():
#add your code here
print ""
if ( os.getenv("GIS_FLAG_f") != "0" ):
print "Flag -f set"
else:
print "Flag -f not set"
print "Value of GIS_OPT_option1: %s" % os.getenv("GIS_OPT_option1")
print "Value of GIS_OPT_raster: %s" % os.getenv("GIS_OPT_raster")
print "Value of GIS_OPT_vect: %s" % os.getenv("GIS_OPT_vect")
#end of your code
return
if __name__ == "__main__":
args = ""
for arg in sys.argv:
args += arg+" "
try:
if ( sys.argv[1] != "@ARGS_PARSED@" ):
os.system("g.parser %s " % (args))
except IndexError:
os.system("g.parser %s" % (args))
if sys.argv[1] == "@ARGS_PARSED@":
main();
Funkční, jakkoliv šílené :-) Vidíte, že definice vstupních parametrů je přesně ve stylu BASHových skriptů.
Tak to by bylo zhruba všechno z posledních změn v CVS ;-)