Ciao a tutti,
ormai è da tempo che noto questo problema in QGIS e chiedo conferma:
ho realizzato con spatialite_gui una tabella con geometria cosi definita:
(ecco il Create statement):
CREATE TABLE "pti_pill"
(
"pk_uid" integer NOT NULL,
"rif_quadro" text ,
"fraz_loc" text ,
"data_ril" double ,
"path_supporto" text ,
"path_armatura" text ,
"tipo" text ,
"materiale" text ,
"stato" text ,
"proprieta" text ,
"nro_sorgenti" integer ,
"lungh_sbraccio" double ,
"potenza" integer ,
"tipo_lampada" text ,
"tipo_armatura" text ,
"stato_sorgente" text ,
"altezza_pl" double ,
"cod_lampada" integer ,
"geom" POINT,
PRIMARY KEY ("pk_uid"))
Ciao a tutti,
ormai è da tempo che noto questo problema in QGIS e chiedo conferma:
ho realizzato con spatialite_gui una tabella con geometria cosi definita:
(ecco il Create statement):
CREATE TABLE “pti_pill”
(
“pk_uid” integer NOT NULL,
“rif_quadro” text ,
“fraz_loc” text ,
“data_ril” double ,
“path_supporto” text ,
“path_armatura” text ,
“tipo” text ,
“materiale” text ,
“stato” text ,
“proprieta” text ,
“nro_sorgenti” integer ,
“lungh_sbraccio” double ,
“potenza” integer ,
“tipo_lampada” text ,
“tipo_armatura” text ,
“stato_sorgente” text ,
“altezza_pl” double ,
“cod_lampada” integer ,
“geom” POINT,
PRIMARY KEY (“pk_uid”))
Ciao Salvatore,
hai seguito spatialite cookbook di Furieri?
mi pare strano che aggiungi la colonna geom direttamente in query create,
di solito si aggiunge a posteriori.
Domandona: perchè non crei le tabelle di spatialite direttamente dentro
Qgis?
Ciao Luca,
si, seguo sempre il cookbook di Furieri.
La geometria la ho aggiunta dopo, come da cookbook.
è un problema che esiste da tempo anche per gli shapefile, qgis trasforma
tutto in testo!!!
proverò a creare il vettore spatialite da qgis, ma credo che non cambi
nulla.
Gentilmente filma le operazioni che fai in Qgis, e posta il video sul
Tubo, grazie.
Appena posso faccio il video,
altre cosa che ho notato:
1. un campo definito integer in spatialite, qgis lo vede text ma mi permette
immissione numerica senza segnalare errore;
2. il problema su QGIS è random, cioè su alcuni db sembra siano tutti text,
in altri visualizza bene il tipo di dato.
Salvatore, non è un errore che un campo integere accetti su spatialite valori testuali dato che è una regola di spatialite. I campi sono debolmente tipizzati e sta al Management System evitare questo.
Da Spatialite Cookbook pag 63:
A proposito dei tipi di SQLite
Detto molto velocemente: SQLite non usa per niente tipi di dati
.
Siete assolutamente liberi di inserire qualsiasi
tipo di dato in qualsiasi colonna: il tipo dichiarato per i dati della colonna ha solo funzione
estetica
, me non è
controllato nè obbligato.
Questo non è per niente un
bug
: è una
specifica scelta di progetto
.
Comunque, tutti gli altri DBMS applicano precise qualificazione e controlli di tipo, perciò il comportamento
di SQLite può apparire strano e sconcertante.
Siete avvertiti
.
In ogni caso SQLite gestisce internamente i seguenti tipi
di dato:
•
NULL
: nessun dato.
•
INTEGER
: interi a
64bit
, in grado di gestire valori molto grandi.
•
DOUBLE
: tipo decimale, doppia precisione.
•
TEXT
: qualsiasi stringa di testo con codifica
UTF8
, di lunghezza arbitraria.
•
BLOB
: qualsiasi Oggetto Binario Lungo [
Binary Long Object]
, di lunghezza arbitraria ed illimitata.
Ricordate
: qualsiasi
cella
(intersezione di
riga/colonna
) può memorizzare ogni tipo arbitrario di dato.
Esiste una sola eccezione: le colonne dichiarate come
INTEGER PRIMARY KEY
richiedono assolutamente
valori interi.
Il giorno 20 dicembre 2016 12:03, Luca Mandolesi <mandoluca@gmail.com> ha
scritto:
Salvatore, non è un errore che un campo integere accetti su spatialite
valori testuali dato che è una regola di spatialite. I campi sono
debolmente tipizzati e sta al Management System evitare questo.
Ciao Luca,
ho letto anche io il cookbook di Furieri.
Il mio problema è relativo alla coppia spatialite qgis;
in qgis, diversamente da spatialite, ogni tipo di dato ha delle regole ben
precise: