<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body ><div>Intanto grazie per la query, il ptoblema era proprio quello, ora tutto funziona.</div><div>Per la qustione della struttura del db, concordo al 100% ma purtoppo devo riprodurre lo schema di archiviazione deciso per le indagini di microzonazione sismica regionale toscana e nazionale qui di sono obbligato a rispettare questa struttura....</div><div><br></div><div><br></div><div><div style="font-size:9px;color:#575757">Inviato da Samsung Mobile.</div></div><br><br><div>-------- Messaggio originale --------</div><div>Da: Andrea Peri <aperi2007@gmail.com> </div><div>Data:20/07/2015  00:09  (GMT+01:00) </div><div>A: Alessandro Ciali <alessandro.ciali@gmail.com> </div><div>Cc: gfoss@lists.gfoss.it </div><div>Oggetto: Re: Re: Re: [Gfoss] Un'altra questione su PG </div><div><br></div>>mi son messo in testa di creare una  banca dati il più  possibile indipendente dal programma che poi la utilizza<br><br>Non ho idea di come sia possibile arrivare a una base dati che sia<br>indipendente dal programma che la utilizza, ma occorre capirsi sul<br>concetto di indipendenza.<br><br>Se il tuo obiettivo e' avere una base dati di data entry devi<br>minimizzare gli inserimenti, ma anche devi focalizzarti sulla<br>informazione atomica, evitando di perdere tempo nella informazione<br>ridondante. he sarebbe quella ricavabile da elaborazione (o<br>informazione ricavabile), la quale non è vera informazione perche' e'<br>sempre ricavabile alla bisogna.<br><br>Se te progetti una banca dati che sia composta di 2 valori<br>indipendenti e poi prevedi un terzo campo che contenga la somma degli<br>altri due.<br>La vera base dati e' composta dai 2 campi iniziali, il terzo non porta<br>informazione perche' e' ricavabile dagli altri due.<br><br>Quindi un trigger che faccia le somme non serve per avere una base<br>dati indipendente, perche' la vera banca dati indipendnete e' composta<br>dai due campi. Il terzo e' una derivazione dei primi due per somma e<br>quindi non è un valore indipendente.<br><br>Io non ho chiaro cosa stai cercando di fare, e cosa siano quei punti<br>che vuoi mettere in relazione con la am_com.<br>Ma io , piuttosto che farli calcolare a un trigger e archiviarli<br>hardcoded nella tabella, li esporrei tramite una vista che esprima la<br>query sql che stai cercando di fa calcolare al trigger.<br><br><br>A.<br><br>Il 19 luglio 2015 22:57, Alessandro Ciali <alessandro.ciali@gmail.com><br>ha scritto:<br>><br>> Questa tua mail è  per me molto interessante. Innanzitutto grazie per il<br>> suggerimento, provvederò a provare omettendo la tabella puntuale nella<br>> query. Riguardo la scelta di utilizzare regole di autocompilazione<br>> direttamente in Pg deriva dal fatto che,  da profano, mi son messo in testa<br>> di creare una  banca dati il più  possibile indipendente dal programma che<br>> poi la utilizza; in qgis ho semplicemente messo in grigio i campi che non<br>> hanno bisogno di input da parte dell'utente. Pensi che sia un approccio<br>> sbagliato?<br>><br>> Inviato da Samsung Mobile.<br>><br>><br>> -------- Messaggio originale --------<br>> Da: Andrea Peri<br>> Data:19/07/2015 21:02 (GMT+01:00)<br>> A: Alessandro Ciali<br>> Cc: Luca Lanteri , gfoss@lists.gfoss.it<br>> Oggetto: Re: Re: [Gfoss] Un'altra questione su PG<br>><br>> SInceramente non uso mai i triggers.<br>> Li trovo pochissimo pratici per queste attivita'.<br>><br>> Trovo un po' fuori contesto usare dei triggers per una attivita' di<br>> correzione o inserimento dati.<br>> Queste cose dovrebbero essere esplicitate in azioni da parte dell'utente.<br>> Altrimenti uno si vede cambiare un db sotto i piedi e non capisce perche'.<br>><br>> Comunque padronissimo di usarlo come credi meglio ovviamente.<br>> :)<br>><br>> Venendo al tuo caso:<br>><br>> a me sembra che la tua query sia destinata sia ridondante rispetto a<br>> cio' che filtra.<br>><br>> perche' ST:Within($1, c.geom)<br>> interseca la geometria che gli passa il trigger con la geoemtria di am_com.<br>> Da li' probabilmente ne ritornerebbe 1 sola.<br>><br>> Ma nella query te metti anche<br>> La tabella<br>> ,indagini."Sito_Puntuale" AS s<br>><br>> senza isnerirla in una regola di filtro.<br>> Per cui ti provoca un prodotto cartesiano e ti moltiplica i records<br>> per molte volte.<br>><br>><br>> Non so' se si sono altri problemi, ma questo secondo me non va bene.<br>><br>> A.<br>><br>><br>> Il 19 luglio 2015 19:29, Alessandro Ciali <alessandro.ciali@gmail.com><br>> ha scritto:<br>>><br>>> Si, ma una query di update non mi permette di Popolare i campi via via che<br>>> creo dei siti puntuali. Dovrei prima inserire i punti, salvare la tabella<br>>> e<br>>> poi far girare la query, che inoltre dovrebbe essere lanciata ogni volta<br>>> cche finisce la fase di editing, mentre un trigger parte tutte le volte<br>>> che<br>>> una riga viene salvata<br>>><br>>> Inviato da Samsung Mobile.<br>>><br>>><br>>> -------- Messaggio originale --------<br>>> Da: Andrea Peri<br>>> Data:19/07/2015 18:49 (GMT+01:00)<br>>> A: alessandro.ciali@gmail.com<br>>> Cc: Luca Lanteri , "GFOSS.it"<br>>> Oggetto: Re: [Gfoss] Un'altra questione su PG<br>>><br>>> Per quale ragioni fai uso di un trigger anziche' una query di update ?<br>>><br>>><br>>> Il 19 luglio 2015 18:02,  <alessandro.ciali@gmail.com> ha scritto:<br>>>> Ciao a tutti,<br>>>> mi sono arenato su un problema cui non riesco a trovare una soluzione…<br>>>> Vorrei estrarre alcuni dati da una copertura e passarli ai campi di una<br>>>> tabella puntuale, in base  alla posizione di nuovi punti che inserisco,<br>>>> ossia nel caso specifico passare il codice provincia e comune ai nuovi<br>>>> punti<br>>>> inseriti in una tabella “sito_puntuale”. I dati comune e provincia sono<br>>>> su<br>>>> una tabella spaziale “am_com”. Il tutto è in un database PGsql.<br>>>> Come in precedenza pensavo di risolvere il problema con un trigger, e<br>>>> quindi<br>>>> ho creato la seguente funzione sfruttando ST_Wtithin di postgis:<br>>>><br>>>> CREATE OR REPLACE FUNCTION indagini.cal_idn()<br>>>>   RETURNS trigger AS<br>>>> $BODY$DECLARE<br>>>>         cod          character(6);<br>>>> BEGIN<br>>>>         -- codcom da public.am_com<br>>>>  cod = codcom FROM public.am_com AS c,indagini."Sito_Puntuale" AS s WHERE<br>>>> (ST_Within(NEW.the_geom,c.geom));<br>>>>  -- calcola ubicazione_prov e ubicazione_com<br>>>>         NEW.ubicazione_prov = substr(cod, 1, 3);<br>>>>         NEW.ubicazione_com = substr(cod, 4, 3);<br>>>>         RETURN NEW;<br>>>> END;<br>>>> $BODY$<br>>>>   LANGUAGE plpgsql VOLATILE<br>>>>   COST 100;<br>>>> ALTER FUNCTION indagini.cal_idn()<br>>>>   OWNER TO postgres;<br>>>> GRANT EXECUTE ON FUNCTION indagini.cal_idn() TO public;<br>>>> GRANT EXECUTE ON FUNCTION indagini.cal_idn() TO postgres;<br>>>><br>>>> Purtroppo quando però vado a salvare mi viene restituito il seguente<br>>>> messaggio di errore:<br>>>><br>>>> Could not commit changes to layer Sito_Puntuale<br>>>><br>>>> Errors: ERROR: 1 feature(s) not added.<br>>>><br>>>> Provider errors:<br>>>><br>>>> PostGIS error while adding features: ERRORE: la query "SELECT codcom FROM<br>>>> public.am_com AS c,indagini."Sito_Puntuale" AS s WHERE (ST_Within( $1<br>>>> ,c.geom))" ha restituito più di una riga<br>>>><br>>>> CONTEXT: funzione PL/pgSQL "cal_idn" riga 5 a assegnazione<br>>>><br>>>><br>>>> Il tutto funziona solo con il 1° punto inserito in una tabella vuota. Mi<br>>>> sembra di aver capito che il problema risieda nel fatto che la funzione<br>>>> ST_Within considera tutte le geometriepresenti nella tabella<br>>>> “Sito_puntuale”<br>>>> e non solo la NEW….<br>>>><br>>>> Qualche buon anima mi saprebbe aiutare?<br>>>><br>>>> Grazie in anticipo<br>>>><br>>>><br>>>> Alessandro Ciali<br>>>><br>>>> Da: Luca Lanteri<br>>>> Data invio: ‎lunedì‎ ‎13‎ ‎luglio‎ ‎2015 ‎09‎:‎21<br>>>> A: Alessandro Ciali<br>>>> Cc: GFOSS.it<br>>>><br>>>> CIao Alessandro,<br>>>> grazie mille per la disponibilità.<br>>>><br>>>> Non ti preoccupare, tutto quello che vedi è stato fatto da autodidatti<br>>>> con<br>>>> conoscenze minime di programmazione, e proprio per questo che è ancora<br>>>> più<br>>>> importante unire forze e le competenze.<br>>>> In Piemonte diversi professionisti hanno iniziato ad utilizzare questi<br>>>> strumenti (mi pare di capire con soddisfazione) per realizzare i propri<br>>>> approfondimenti di microzonazione sismica con QGIS e stanno svolgendo un<br>>>> bel<br>>>> lavoro di testing.<br>>>><br>>>> A  disposizione per qualsiasi chiarimento.<br>>>> a presto<br>>>> Luca<br>>>><br>>>><br>>>> Il giorno 11 luglio 2015 17:46, Alessandro Ciali<br>>>> <alessandro.ciali@gmail.com> ha scritto:<br>>>>><br>>>>><br>>>>><br>>>>> Sarei ben lieto di partecipare al miglioramento, a che non sono un genio<br>>>>> della programmazione .a piuttosto un autodidatta coatto. Intanto<br>>>>> scarichero'<br>>>>> il tutto dal sito dell'ARPA per vedere se e come il mio lavoro possa<br>>>>> integrare ciò che è stato fatto. Lavorando in parte nel campo della<br>>>>> geologia<br>>>>> per la pianificazione territoriale, ma lavorando prev. In toscana, ho<br>>>>> sviluppato librerie di simboli che si attengono alle specifiche di<br>>>>> questa<br>>>>> regione; non mi sembra di aver trovato sul sito della RT librerie<br>>>>> specifiche<br>>>>> per QGIS, io le condividerei volentieri;  anzi visto che alcuni membri<br>>>>> di<br>>>>> RT<br>>>>> partecipa a questa lista, potrebbero, se sono interessati, a darmi<br>>>>> informazioni in merito. Per adesso grazie per le dritte, spero di poter<br>>>>> contribuire. Saluti a tutti<br>>>>><br>>>>> Inviato da Samsung Mobile.<br>>>>><br>>>>><br>>>><br>>>><br>>>> _______________________________________________<br>>>> Gfoss@lists.gfoss.it<br>>>> http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss<br>>>> Questa e' una lista di discussione pubblica aperta a tutti.<br>>>> I messaggi di questa lista non hanno relazione diretta con le posizioni<br>>>> dell'Associazione GFOSS.it.<br>>>> 750 iscritti al 18.3.2015<br>>><br>>><br>>><br>>> --<br>>> -----------------<br>>> Andrea Peri<br>>> . . . . . . . . .<br>>> qwerty àèìòù<br>>> -----------------<br>><br>><br>><br>> --<br>> -----------------<br>> Andrea Peri<br>> . . . . . . . . .<br>> qwerty àèìòù<br>> -----------------<br><br><br><br>-- <br>-----------------<br>Andrea Peri<br>. . . . . . . . .<br>qwerty àèìòù<br>-----------------<br></body>