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
Avete qualche suggerimento in merito?
Grazie in anticipo Romina _______________________________________________ [hidden email] 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 |
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 _______________________________________________ [hidden email] 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 |
In reply to this post by Romina Di Paolo
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 <[hidden email]>:
_______________________________________________ [hidden email] 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 |
In reply to this post by Romina Di Paolo
Ciao Romina,
On Mon, Apr 7, 2014 at 9:57 PM, Romina Di Paolo <[hidden email]> wrote:
la tua query è (quasi :-)) corretta, aggiungi solo il valore dell'argomento pixeltype o inserisci NULL come l'esempio seguente: ..... ST_MapAlgebra(rast, NULL, 'CASE WHEN [rast] BETWEEN 101 and 115 THEN [rast] WHEN [rast] BETWEEN 102 and 166 THEN 0 ELSE 0 END') ..... Saluti! -SL
-- Salvatore Larosa linkedIn: http://linkedin.com/in/larosasalvatore twitter: @lrssvt skype: s.larosa IRC: lrssvt on freenode _______________________________________________ [hidden email] 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 |
In reply to this post by Luca Lanteri-3
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 <[hidden email]> ha scritto:
_______________________________________________ [hidden email] 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 |
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 ;)
_______________________________________________ [hidden email] 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 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 <[hidden email]> ha scritto:
_______________________________________________ [hidden email] 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 |
Free forum by Nabble | Edit this page |