[Gfoss] problema v.what.vect con GRASS

Roberto Facoetti robifac a tiscali.it
Sab 7 Maggio 2011 14:13:44 CEST


Salve a tutti,

sto scrivendo uno script bash che assegna a dei punti, generati 
casualmente, dei valori sia da vettoriali che da raster, usando GRASS, 
installato su OS Windows XP.

La prima parte dello script (messa qui sotto), si blocca al v.db.addcol, 
con il messaggio : command not found

# crea i punti all'interno della region
g.region vect=provbg
v.random output=rndpnt1 n=$punti
v.db.addcol rndpnt1 column="cat integer"

Ho usato allora il comodo comando di QGis per generare i punti casuali 
all'interno di un poligono. Lo script importa allora in GRASS lo shape e 
associa i dati necessari. Di seguito, vi incollo i comandi:

# Verifica se esiste lo shapefile
if [ ! -f "d:/atlante_prBG/modelli/pntrnd1.shp" ] ; then
   echo "lo shapefile non esiste! Crearlo con QGis"
   exit 1
fi

# verifica se esiste gia' il file rand1 e lo elimina
MAPNAME=rand1
eval `g.findfile element=vector file="$MAPNAME"`
if [ -n "$name" ] ; then
   echo "Rimozione del vecchio file dei punti casuali"
   g.remove vect=rand1
fi

v.in.ogr -o dsn=D:/atlante_prBG/modelli/pntrnd1.shp output=rand1

# rimuove lo shapefile
if [ -f "d:/atlante_prBG/modelli/pntrnd1.shp" ] ; then
   rm d:/atlante_prBG/modelli/pntrnd1.*
fi

v.db.connect -o map=rand1 table=public.rand1

## aggiungi le colonne per le coordinate
echo ALTER TABLE rand1 ADD COLUMN x double precision | db.execute
echo ALTER TABLE rand1 ADD COLUMN y double precision | db.execute

# aggiorna con valori delle coordinate
v.to.db map=rand1 option=coor units=meters columns=x,y

# aggiorna la tabella con i valori del vettoriale UR (grigliabg) nella 
colonna ur
echo ALTER TABLE rand1 ADD COLUMN ur integer | db.execute
v.what.vect vector=rand1 column=ur qvector=gridbg qcolumn=cat_

# aggiorna la tabella con i valori del raster ambienti (anni2010) nella 
colonna amb
echo ALTER TABLE rand1 ADD COLUMN amb integer | db.execute
v.what.rast vector=rand1 raster=anni2010 column=amb

# aggiorna la tabella con i valori del raster altitudine (cls_altit) 
nella colonna alt
echo ALTER TABLE rand1 ADD COLUMN alt integer | db.execute
v.what.rast vector=rand1 raster=cls_altit column=alt

# aggiorna la tabella con i valori del raster esposizione (cls_espo) 
nella colonna espo
echo ALTER TABLE rand1 ADD COLUMN espo integer | db.execute
v.what.rast vector=rand1 raster=cls_espo column=espo

# aggiungi una colonna v_reg, con valore 0, per impostare a 0 i valori 
per la regressione logistica
echo ALTER TABLE rand1 ADD COLUMN v_reg integer | db.execute
echo UPDATE rand1 SET v_reg = 0 | db.execute

Tutto gira e aggiunge i dati, tranne il v.what.vect, che mi dice: 
command not found.
Si può ovviamente sistemare il tutto trasformando in raster il 
vettoriale, ma mi piacerebbe che funzionasse anche così.

Guardando un po' nell'installazione, mi sembra che non funzionino i 
comandi che, in C:\OSGeo4W\apps\grass\grass-6.4.1\bin, vengono fatti 
partire con un *.bat (come il v.add.col e il v.what.vect), mentre quelli 
che hanno l'exe e il .manifest funzionano.

Qualche idea? Sto sbagliando qualche settaggio in GRASS?

grazie,

roberto





Maggiori informazioni sulla lista Gfoss