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