[Gfoss] rasterlite - colori

Salve a tutti,

ho un problema con rasterlite.

Ho creato un'immagine raster partendo da un progetto di qgis; ho
creato il file xml di mapnik con quantumnik e creato l'immagine con
nik2img.py, in formato PNG256. Con il plugin di georeferenziazione di
QGis ho creato il raster tif, che ho importato in rasterlite.

Il problema è che quando apro il raster in QGis manca la tavola dei
colori, per cui il raster risulta praticamente illegibile; la mappa dei
colori è 0 e 1. Lo stesso risultato lo ottengo importando il raster in
formato rasterlite in GRASS.

Ho provato anche importare la mappa dei colori dal tif originale con
risultati terribili.

La cosa curiosa è che esplorando le tile con spatialite-gui i colori
risultano giusti.

Sarà un problema delle GDAL?

Un saluto,
      Marco

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

Il 07 maggio 2011 14:13, Roberto Facoetti <robifac@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

ciao,

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?

no, il comando da GRASS funziona correttamente (l'ho testato passo-passo, prima di fare lo script);
è nello script che non funziona (e soltanto con il v.what.vector, il resto funziona correttamente), perché non riesce a recuperare il comando. I dati sono integer.

Ho provato anche a temporaneamente sostituire, nel v.what.vector.bat, il percorso di indirizzamento, in modo da fargli trovare la directory dove ci sono gli script (C:\OSGeo4W\apps\grass\grass-6.4.1\script) ... ma non funziona, non trova il comando ...

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

v.db.addcol non funziona, né nello script né in GRASS; o meglio, non funziona con la wxpython GUI, mentre funziona con la TclTk ... appunto per questo uso db.execute, che funziona in entrambe.

Boh, non so, credo ci sia qualche incompatibilità di base con windows, ma non saprei dove ...

grazie

roberto

Il 07 maggio 2011 19:11, Roberto Facoetti <robifac@tiscali.it> ha scritto:

ciao,

no, il comando da GRASS funziona correttamente (l'ho testato passo-passo,
prima di fare lo script);
è nello script che non funziona (e soltanto con il v.what.vector, il resto
funziona correttamente), perché non riesce a recuperare il comando. I dati
sono integer.

se funziona singolarmente deve funzionare anche con lo script, sei
sicuro dei nomi dei layer e delle colonne?

v.db.addcol non funziona, né nello script né in GRASS; o meglio, non
funziona con la wxpython GUI, mentre funziona con la TclTk ... appunto per
questo uso db.execute, che funziona in entrambe.

mi sembra impossibile che con una gui vada e con l'altra no perchè
dovrebbero essere solo un'interfaccia al comando, se lo lanci da
console?

Boh, non so, credo ci sia qualche incompatibilità di base con windows, ma
non saprei dove ...

beh la cosa migliore è passare ad un sistema linux sicuramente avrai
meno problemi :wink:

grazie

roberto

--
ciao
Luca

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

On Fri, 6 May 2011 22:29:28 +0200, Marco Curreli wrote

ho un problema con rasterlite.

Ho creato un'immagine raster ... in formato PNG256.
Il problema è che quando apro il raster in QGis manca la tavola dei
colori ... stesso risultato ... in GRASS
La cosa curiosa è che esplorando le tile con spatialite-gui i colori
risultano giusti.

Sarà un problema delle GDAL?

Marco, non ho mai provato nelle condizioni
che tu citi: ma penso anch'io che si tratti
di un problema di GDAL (se non altro visto
che sia QGIS che GRASS hanno lo stesso
identico problema).

Come dici tu stesso la colour palette nel PNG è
correttamente presente, e rasterlite è in grado
di recuperarla senza problemi: evidentemente il
problema è a valle

giusto per darti qualche motivo di speranza
futura: per ora ho iniziato a rimettere le
mani su OGR per patchare il driver SpatiaLite
(in pratica quello attuale non funzionava
per nulla e dava un sacco di problemi)

chissà , magari tra qualche mese troverò
anche il tempro per andare a vedere cosa
combina il driver GDAL per RasterLite: tu
tieni le dita incrociate e speraci :slight_smile:

ciao Sandro

Ciao Sandro,

ho fatto delle prove; col png a 3 bande di colore va tutto alla
perfezione. Ho provato a rasterizzare due vestizioni diverse dela
stessa mappa e le ho combinate assieme nella stessa piramide, in modo da
vedere un diverso raster per ogni intervallo di scala. Il risultato è
stato eccezionale.

  Marco

On Mon, 9 May 2011 07:11:39 +0200, Marco Curreli <marcocurreli@tiscali.it>
wrote:

ho fatto delle prove; col png a 3 bande di colore va tutto alla
perfezione. Ho provato a rasterizzare due vestizioni diverse dela
stessa mappa e le ho combinate assieme nella stessa piramide, in modo da
vedere un diverso raster per ogni intervallo di scala. Il risultato è
stato eccezionale.

Ottimo! Ci faresti un piccolo howto, magari con due screenshots, sul wiki?
[ma come parlo?]
Grazie.
--
http://faunalia.it/pc

Il 07/05/2011 14:13, Roberto Facoetti ha scritto:

Qualche idea? Sto sbagliando qualche settaggio in GRASS?

Domanda stupida: il comando, dato da shell, parte?
Saluti.
--
Paolo Cavallini: http://www.faunalia.it/pc

ciao Paolo,

provato anche quello, ma il risultato è identico: non trova il comando, come non trova tutti i comandi che partono con il *.bat ... non so se sia una questione di settare la path in Windows (non ho ancora provato).

Anche sul computer d'ufficio, con un altra installazione di GRASS, ma sempre in OS Windows, ci sono gli stessi problemi, con gli stessi comandi ... per quello penso che sia più una questione di settaggi di windows, che del funzionamento di GRASS in se.

Mah, come detto l'ho risolto trasformando l'unico vettoriale in cui uso il v.what.vect in raster e usando il v.what.raster (che funziona benissimo) ... però mi piacerebbe capire (e non ci sono ancora riuscito) quale possa essere il problema.

ciao,

roberto

Il 09/05/2011 12.29, Paolo Cavallini ha scritto:

Il 07/05/2011 14:13, Roberto Facoetti ha scritto:

Qualche idea? Sto sbagliando qualche settaggio in GRASS?

Domanda stupida: il comando, dato da shell, parte?
Saluti.

salve a tutti,

risolto!
Come sospettavo, c'era qualcosa che non andava nei settaggi: a quanto pare, il SET PATH all'avvio di grass non funziona (anche se viene caricato all'avvio di GRASS, come si vede nella schermata dalla shell).

Va invece aggiunto, manualmente, dal pannello di controllo, alla variabile path (ho aggiunto sia C:\OSGeo4W\apps\grass\grass-6.4.1\bin che C:\OSGeo4W\apps\grass\grass-6.4.1\script).

Ora lo script che ho fatto funziona, anche con il v.what.vect.

Mah, misteri di windows, chissà perché il SET PATH non viene capito ...

Nei prossimi giorni provo a vedere se le altre funzioni che danno problemi ora sono sistemate ... per stasera basta computer, che stanotte ho una levataccia causa censimento fagiano di monte.

ciao,

roberto

Il 09/05/2011 12.29, Paolo Cavallini ha scritto:

Il 07/05/2011 14:13, Roberto Facoetti ha scritto:

Qualche idea? Sto sbagliando qualche settaggio in GRASS?

Domanda stupida: il comando, dato da shell, parte?
Saluti.

Il 09/05/2011 20:07, Roberto Facoetti ha scritto:

salve a tutti,

risolto!

Mah, misteri di windows, chissà perché il SET PATH non viene capito ...

Non e' una novita', in effetti, in quei sistemi arcaici e complicati :wink:
Segnala la cosa in lista grass, per piacere. La soluzione dovrebbe essere abbastanza
banale.
--
Paolo Cavallini: http://www.faunalia.it/pc

2011/5/9 Paolo Cavallini <cavallini@faunalia.it>:

Il 09/05/2011 20:07, Roberto Facoetti ha scritto:

salve a tutti,

risolto!

Mah, misteri di windows, chissà perché il SET PATH non viene capito ...

Segnala la cosa in lista grass, per piacere. La soluzione dovrebbe essere abbastanza
banale.

Sì, grazie - se serve assistenza possiamo aiutare.

Markus