[QGIS-it-user] tipo di campi espressione in viste geopackage

gentile lista,
ho un piccolo problema che però non riesco a risolvere:
all’interno di un geopackage ho creato una vista, nella quale ho generato un campo con una espressione (tipicamente un count(*) as tot_comuni, per fare un esempio);

il problema è dato dal fatto che questo campo, proveniente da una espressione, in SQLITE non ha un tipo (pur avendo provato tutti i cast del mondo), come leggo da qui:

https://www.sqlite.org/datatype3.html

  • 3.2 Affinity Of Expressions: “… Otherwise, an expression has no affinity.”
  • 3.3 Column Affinity For Views And Subqueries: … “expressions always have no affinity”.

infatti un:
pragma table_info([mia_tabella]);

restituisce:

0 gid INTEGER 0 0
1 geom MULTIPOLYGON 0 0
2 nome TEXT(58) 0 0
3 tot_comuni 0 0

(cioè il campo tot_comuni non ha tipologia)

e fin qui sembra un problema di SQLITE: tale problema però si ripercuote in QGIS in quanto il campo viene visto come un Qstring (pur contenendo solamente degli interi) e quindi ad esempio non posso costruire una legenda graduata basata su questo campo (cosa assai spiacevole).
un workaround potrebbe essere quello di riconoscere il tipo di campo, invece di assegnargli un Qstring se il tipo non è presente nel pragma, magari leggendo il valore del primo record, come suggerito qui (in ambiente java però):
https://stackoverflow.com/questions/54480436/how-to-get-sqlite-column-types-from-view-columns

nel caso specifico sono in QGIS 3.4.10 sia deb che win, SQLITE 3.26.0.

che ne pensate?

apro un ticket?

grazie.

saluti,
francesco

francesco marucci wrote

tale problema però si ripercuote in
QGIS in quanto il campo viene visto come un Qstring (pur contenendo
solamente degli interi) e quindi ad esempio non posso costruire una
legenda
graduata basata su questo campo (cosa assai spiacevole).

Ciao,
hai provato ad usare una espressione per tematizzare, per esempio

to_int(tuo_campo)

ciao

-----
https://pigrecoinfinito.wordpress.com/
--
Sent from: http://osgeo-org.1560.x6.nabble.com/QGIS-Italian-User-f5250612.html

Ho avuto un problema simile, anche se non dovuto al passaggio su SpatiaLite, ma leggendo un file csv. Ho risolto creando un nuovo campo e trasferendoci i valori dell’attributo letti come “string”, con la funzione to_int dal menù conversioni del calcolatore di campi. Poi ho cancellato la colonna con le stringhe.
Carlo

···

Carlo TERSIGNI
Via della Badia di cava 104, scala Z, 00142 - ROMA
tel.: 333-4653589
e-mail: carter.012@gmail.com

Totò,
come workaround il tuo consiglio è sicuramente valido ed applicandolo funziona, riesco a tematizzare.
mi piaceva capire se si poteva fare qualcosa di più per definire in Qgis questi campi “fantasma”.

grazie

un saluto,
francesco

Il giorno mar 10 dic 2019 alle ore 11:04 Totò <pigrecoinfinito@gmail.com> ha scritto:

Ciao,
hai provato ad usare una espressione per tematizzare, per esempio

to_int(tuo_campo)

ciao