[Gfoss] problema v.what.vect con GRASS

Luca Delucchi lucadeluge a gmail.com
Sab 7 Maggio 2011 18:22:13 CEST


Il 07 maggio 2011 14:13, Roberto Facoetti <robifac a tiscali.it> ha scritto:
> 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?
>

potrebbe essere che i dati che stai provando ad inserire non siano integer?
prova a lanciare il comando direttamente da grass, senza script, che
errore ti restituisce?

consiglio di usare v.db.addcol invece di db.execute per aggiungere una colonna

> grazie,
>
> roberto
>

-- 
ciao
Luca

http://gis.cri.fmach.it/delucchi/
www.lucadelu.org


Maggiori informazioni sulla lista Gfoss