<div dir="ltr"><div>ciao,</div><div>cosa intendi per "database sqlite"? geopackage o spatialite?</div><div><br></div><div>ci sono due modi per risolvere la tua esigenza:</div><div><br></div><div>1</div><div>creare una vista geometrica in questo modo (esempio geopackage)<br></div><div><br></div><div>devi innanzitutto abilitare le funzioni spaziali (solo se lavori fuori da QGIS):</div><div>SELECT load_extension('mod_spatialite.so');<br>SELECT EnableGpkgAmphibiousMode();</div><div><br></div><div>create view [vista_geometrica] as</div><div>select *, st_length([geom]) as lunghezza,  st_length([geom])*[x] as costo</div><div>from [tabella_geometrica]</div><div><br></div><div>dove:</div><div>[vista_geometrica] è il nome in output che tu vuoi dare</div><div>[tabella_geometrica] è il tuo layer di linee</div><div>[geom] è il nome del tuo campo geometria (linee)</div><div>[x] è il tuo valore fisso (può anche essere un campo numerico)</div><div><br></div><div>una volta creata questa vista la devi catalogare nel geopackage (metodo manuale):</div><div><br></div><div>insert into gpkg_geometry_columns (table_name,column_name,geometry_type_name,srs_id,z,m) values (<br>'[vista_geometrica]',<br>'[geom]',<br>(select geometry_type_name from gpkg_geometry_columns where table_name='[tabella_geometrica]'),<br>(select srs_id from gpkg_contents where table_name='[tabella_geometrica]'),<br>0,0<br>);<br><br>insert into gpkg_extensions (table_name,column_name,extension_name,definition,scope) values (<br>'[vista_geometrica]',<br>(select column_name from gpkg_geometry_columns where table_name='[tabella_geometrica]'),<br>(select extension_name from gpkg_extensions where table_name='[tabella_geometrica]'),<br>(select definition from gpkg_extensions where table_name='[tabella_geometrica]'),<br>(select scope from gpkg_extensions where table_name='[tabella_geometrica]')<br>);<br><br>insert into gpkg_ogr_contents (table_name,feature_count) values (<br>'[vista_geometrica]',<br>(select count(*) from [tabella_geometrica])<br>);</div><div><br></div><div>è un po rocambolesco ma funziona.</div><div><br></div><div>ovviamente poi l'editing continui a farlo sulla tua [tabella_geometrica] e nella [vista_geometrica] troverai i dati aggiornati.</div><div><br></div><div><br></div><div><br></div><div><br></div><div>2.</div><div>come già qualcuno ha suggerito, con un trigger (anzi, due):<br></div><div><br></div><div>CREATE TRIGGER agg_lunghezza_after_insert_[tabella_geometrica]<br>   AFTER INSERT ON [tabella_geometrica]<br>     BEGIN<br>                UPDATE [tabella_geometrica] set lunghezza=st_length(geom), costo = st_length(geom)*[x] where gid=new.gid;<br>     END;<br><br>CREATE TRIGGER agg_lunghezza_after_update_[tabella_geometrica]<br>   AFTER UPDATE ON [tabella_geometrica]<br>     BEGIN<br>           UPDATE [tabella_geometrica] set lunghezza=st_length(geom), costo = st_length(geom)*[x] where gid=new.gid;<br>     END;</div><div><br></div><div><br></div><div>facci sapere.</div><div><br></div><div>saluti,</div><div>francesco<br></div><div><br></div><div><br></div><div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Il giorno mer 5 feb 2020 alle ore 07:19 FabioP <<a href="mailto:fabio.pifferini@masotti.ch" target="_blank">fabio.pifferini@masotti.ch</a>> ha scritto:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Buongiorno,<br>
lavoro con layer basati su un database sqlite, contenete informazioni<br>
tipologiche e geometriche.<br>
M'interesserebbe far si che alcuni campi (il cui valore è dipendente da<br>
altri valori nella tabella) venissero aggiornati in automatico ogni volta<br>
che si cambiano dei campi di riferimento.<br>
<br>
Per esempio:<br>
Ho i seguenti campi "Lunghezza" e "Costo",  <br>
Il valore del campo "Costo" = "Lunghezza" x fattore fisso.<br>
Vorrei che quando cambio il valore del campo "Lunghezza" su un determinato<br>
vettore, il corrispondente valore del campo "Costo" venisse aggiornato.<br>
<br>
Attendo volentieri qualche suggerimento, grazie mille.<br>
<br>
F. <br>
<br>
<br>
<br>
</blockquote></div></div>