Ciao a tutti,
sto provando senza nessun risultato a riclassificare il raster dell’uso del suolo con questo comando
CREATE TABLE qne.test_raster as SELECT
rid,
ST_MapAlgebra(rast,‘CASE WHEN rast BETWEEN 101::integer and 115::integer THEN rast WHEN rast BETWEEN 102::integer and 166::integer THEN 0::integer
ELSE 0::integer
END’)
AS rast from qne.qne_rstr
l’intento sarebbe di portare tutti i valori compresi tra 101 e 115 a zero e lasciare invariati i valori definiti nel BETWEEN, ma il comando mi restituisce questo errore
"function st_mapalgebra(raster, unknown) does not exist
LINE 4: ST_MapAlgebra(rast,'CASE WHEN rast BETWEEN 101::integer and ...
HINT: No function matches the given name and argument types. You might need to add explicit type casts"
se elimino il cast l’errore è sempre lo stesso:
"function st_mapalgebra(raster, unknown) does not exist
```
LINE 4: ST_MapAlgebra(rast,'CASE WHEN rast BETWEEN 101 and 115r THEN...
```
```
HINT: No function matches the given name and argument types. You might need to add explicit type casts."
```
```
```
```
```
Avete qualche suggerimento in merito?
Grazie in anticipo
Romina
On 7 April 2014 21:57, Romina Di Paolo <romi.dipaolo@gmail.com> wrote:
ST_MapAlgebra
in http://postgis.net/docs/RT_ST_MapAlgebra.html
Passing a regprocedure argument to a SQL function requires the full
function signature to be passed, then cast to a regprocedure type. To pass
the above example PL/pgSQL function as an argument, the SQL for the
argument is:
'sample_callbackfunc(double precision, integer, text)'::regprocedure
Ci provo ma non è detto che siano consigli sensati, è parecchio che non uso le funzioni raster di PG.
Hai provato facendo un cast dell'espressione SQL a text? A quanto pare non viene vista come text, infatti ti dice: st_mapalgebra(raster, unknown);
Prova ad esplicitare tutti i parametri della funzione compresi pixeltype e nodataval. La sintassi della funzione dovrebbe essere
raster ST_MapAlgebra(raster rast, text pixeltype, text expression, double precision nodataval=NULL);
Prova ad utilizzare la funzione ST_Reclass, forse è più adatta a quello che vuoi fare tu.
bye
Luca
···
2014-04-07 21:57 GMT+02:00 Romina Di Paolo <romi.dipaolo@gmail.com>:
Ciao a tutti,
sto provando senza nessun risultato a riclassificare il raster dell’uso del suolo con questo comando
CREATE TABLE qne.test_raster as SELECT
rid,
ST_MapAlgebra(rast,‘CASE WHEN rast BETWEEN 101::integer and 115::integer THEN rast WHEN rast BETWEEN 102::integer and 166::integer THEN 0::integer
ELSE 0::integer
END’)
AS rast from qne.qne_rstr
l’intento sarebbe di portare tutti i valori compresi tra 101 e 115 a zero e lasciare invariati i valori definiti nel BETWEEN, ma il comando mi restituisce questo errore
"function st_mapalgebra(raster, unknown) does not exist
LINE 4: ST_MapAlgebra(rast,'CASE WHEN rast BETWEEN 101::integer and ...
HINT: No function matches the given name and argument types. You might need to add explicit type casts"
se elimino il cast l’errore è sempre lo stesso:
"function st_mapalgebra(raster, unknown) does not exist
```
LINE 4: ST_MapAlgebra(rast,'CASE WHEN rast BETWEEN 101 and 115r THEN...
```
```
HINT: No function matches the given name and argument types. You might need to add explicit type casts."
```
```
```
```
```
Avete qualche suggerimento in merito?
Grazie in anticipo
Romina
Gfoss@lists.gfoss.it
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e’ una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell’Associazione GFOSS.it.
666 iscritti al 22.7.2013
grazie dei consigli ma provando ad inserire tutti i parametri e facendo il cast dell’espressione a text mi ritorna sempre lo stesso errore con la differenze che questa volta mi riconosce i parametri passati come testo
"function st_mapalgebra(raster, text,text,text) does not exist"
forse la soluzione sta nel richiamare la funzione
‘sample_callbackfunc(double precision, integer, text)’::regprocedure
ma l’esempio riportato qui http://postgis.net/docs/RT_ST_MapAlgebra.html non mi è molto chiaro!!!
···
Il giorno 07 aprile 2014 23:15, Luca Lanteri <mescal72@gmail.com> ha scritto:
Ci provo ma non è detto che siano consigli sensati, è parecchio che non uso le funzioni raster di PG.
Hai provato facendo un cast dell'espressione SQL a text? A quanto pare non viene vista come text, infatti ti dice: st_mapalgebra(raster, unknown);
Prova ad esplicitare tutti i parametri della funzione compresi pixeltype e nodataval. La sintassi della funzione dovrebbe essere
raster ST_MapAlgebra(raster rast, text pixeltype, text expression, double precision nodataval=NULL);
Prova ad utilizzare la funzione ST_Reclass, forse è più adatta a quello che vuoi fare tu.
bye
Luca
2014-04-07 21:57 GMT+02:00 Romina Di Paolo <romi.dipaolo@gmail.com>:
Ciao a tutti,
sto provando senza nessun risultato a riclassificare il raster dell’uso del suolo con questo comando
CREATE TABLE qne.test_raster as SELECT
rid,
ST_MapAlgebra(rast,‘CASE WHEN rast BETWEEN 101::integer and 115::integer THEN rast WHEN rast BETWEEN 102::integer and 166::integer THEN 0::integer
ELSE 0::integer
END’)
AS rast from qne.qne_rstr
l’intento sarebbe di portare tutti i valori compresi tra 101 e 115 a zero e lasciare invariati i valori definiti nel BETWEEN, ma il comando mi restituisce questo errore
"function st_mapalgebra(raster, unknown) does not exist
LINE 4: ST_MapAlgebra(rast,'CASE WHEN rast BETWEEN 101::integer and ...
HINT: No function matches the given name and argument types. You might need to add explicit type casts"
se elimino il cast l’errore è sempre lo stesso:
"function st_mapalgebra(raster, unknown) does not exist
```
LINE 4: ST_MapAlgebra(rast,'CASE WHEN rast BETWEEN 101 and 115r THEN...
```
```
HINT: No function matches the given name and argument types. You might need to add explicit type casts."
```
```
```
```
```
Avete qualche suggerimento in merito?
Grazie in anticipo
Romina
Gfoss@lists.gfoss.it
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e’ una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell’Associazione GFOSS.it.
666 iscritti al 22.7.2013
2014-04-08 10:05 GMT+02:00 Romina Di Paolo <romi.dipaolo@gmail.com>:
::regprocedure
la funzione magari sta scritta bene... o magari cambiala in base a quel che
ha suggerito salvatore, il mio (da letteratura) suggerimento e' fare il
cast della stringa a ::regprocedure
cioe' fai '<qui la tua query>'::regprocedure perche' altirmenti lo prende
come text e non trova la firma della api corretta.... evidentemente non fa
un cast implicito.
ciao ginetto
p.s. :::pubblicita'::: questa dovrebbe essere la soluzione a detta della
pag205 di Postgis2 cookbook di Paolo Corti 
Grazie Gino del consiglio, adesso finalmente qualcosa è cambiato
CREATE TABLE qne.test_raster as SELECT
rid,
ST_MapAlgebra(rast,‘8BUI’, ‘CASE WHEN rast BETWEEN 101 and 115 THEN rast WHEN rast BETWEEN 102 and 166 THEN 0
ELSE 0
END’::regprocedure, NULL::text)
AS rast from qne.qne_rstr
ERRORE:expected a left parenthesis
LINE 4: ST_MapAlgebra(rast,‘8BUI’, 'CASE WHEN rast BETWEEN 101 and 1…
ho provato sia con doppia parentesi tonda, sia con parentesi quadra ma restituisce sempre un errore di sintassi
^
···
Il giorno 08 aprile 2014 10:23, Gino Pirelli <luipir@gmail.com> ha scritto:
2014-04-08 10:05 GMT+02:00 Romina Di Paolo <romi.dipaolo@gmail.com>:
::regprocedure
la funzione magari sta scritta bene… o magari cambiala in base a quel che ha suggerito salvatore, il mio (da letteratura) suggerimento e’ fare il cast della stringa a ::regprocedure
cioe’ fai ‘’::regprocedure perche’ altirmenti lo prende come text e non trova la firma della api corretta… evidentemente non fa un cast implicito.
ciao ginetto
p.s. :::pubblicita’::: questa dovrebbe essere la soluzione a detta della pag205 di Postgis2 cookbook di Paolo Corti 