Swig interface také pro vektory

24.09.2006 – 8:56 am

Po 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 ;-)

Share Button

Post a Comment