#1 Thu 13 June 2013 17:59
- nawak
- Participant assidu
- Date d'inscription: 11 Sep 2007
- Messages: 216
spatialite type integer count
Bonjour,
Lorsque je fais une requête avec sqlite avec un count, la colonne obtenue n'est pas de type INTEGER (ou numeric) ce qui m'empeche de faire une graduation de couleurs sous qgis.
Merci de vos lumières
Hors ligne
#2 Fri 14 June 2013 09:57
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1160
Re: spatialite type integer count
Salut,
Caster le résultat du count en integer dans votre requête devrait résoudre le problème (le type d'un count est généralement un bigint).
Dernière modification par tumasgiu (Fri 14 June 2013 09:59)
Hors ligne
#3 Fri 14 June 2013 11:55
- nawak
- Participant assidu
- Date d'inscription: 11 Sep 2007
- Messages: 216
Re: spatialite type integer count
Qu'entendez vous par Caster ?
Hors ligne
#4 Fri 14 June 2013 12:18
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: spatialite type integer count
Bonjour,
"Caster", ou "transtyper", signifie que l'on change le type d'une donnée.
Exemple: l'entier 1 peut etre casté en chaine de caractère "1" en castant son type:
select cast(1 as text);
En general, tous les types peuvent etre castés en String/Text. Le contraire n'est pas vrai: caster "toto" en integer ne marchera pas
Nicolas
Hors ligne
#5 Fri 14 June 2013 15:42
- nawak
- Participant assidu
- Date d'inscription: 11 Sep 2007
- Messages: 216
Re: spatialite type integer count
Bonjour,
et Merci pour votre réponse. Est-il possible de caster l'ensemble d'une colonne directement dans une requête ?
Merci encore
Hors ligne
#6 Fri 14 June 2013 15:51
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1160
Re: spatialite type integer count
Code:
SELECT CAST(MaColonneACaster as MonType) FROM LaetitiaCasta
Hors ligne
#7 Mon 17 June 2013 14:41
- nawak
- Participant assidu
- Date d'inscription: 11 Sep 2007
- Messages: 216
Re: spatialite type integer count
Merci
Hors ligne
#8 Mon 17 June 2013 14:45
- nawak
- Participant assidu
- Date d'inscription: 11 Sep 2007
- Messages: 216
Re: spatialite type integer count
J'ai comme l'impression que sur ma version de spatialite, la fonction CAST n'est pas intégrée...ça marche chez vous ?
Hors ligne
#9 Mon 17 June 2013 16:01
Re: spatialite type integer count
Etonnant, j'ai découvert ce problème lié à SQLITE - et non spatialite- la semaine dernière..
J'ai résumé ça en anglais dans la liste QGIS et dans les listes SQLITE:
http://osgeo-org.1560.x6.nabble.com/Spa … 58436.html
Les colonnes calculées ne sont pas typées, et pas vraiment typables dans SQLITE. C'est mal mais aucun développeur SQLITE n' prévu de modif pour l'instant.
Deux options:
- trouver un développeur apte à proposer cette évolution (contactez moi!)
- hacker dans les clients une autodétection de type basée sur le contenu (très mal, mais certainement plus rapide)
Plus largement, ce serait vraiment bien de pousser nos cas d'utilisation sqlite à la communauté source, qui a l'air de développer essentiellement pour des usages mobiles, ou embarqués. Nos besoins d'administrateurs de données méritent d'être appuyés, et financés . Je pense aux vues, aux commentaires associés aux tables et aux champs.. au plus proche du comportement de Postgis pour un maximum de simplicité.
Régis
Hors ligne
#10 Mon 17 June 2013 16:26
Re: spatialite type integer count
Bonjour à tous,
même soucis la semaine dernière et même conclusion que haubourg.
J'ai du ruser pour trier par ordre numérique croissant sur la colonne Count(), en la complétant à gauche par des '0' et en triant par ordre alphabétique
Mathieu BOSSAERT
Association GeoRezo
Hors ligne
#11 Fri 02 August 2013 15:12
- cyrille
- Participant assidu
- Date d'inscription: 7 Feb 2006
- Messages: 401
Re: spatialite type integer count
Bonjour, j'ai eu ce problème cette semaine.
Je ne pouvais pas faire ma graduation de couleurs sous qgis. Apres avoir requete sous Spatialite car mes colonnes etaient en texte alors que je les voulais en entier.
J'ai donc commencé par créer ma table vide en precisant les type de colonne (text, int ou double)
CREATE TABLE XXXX ("geometry" NUM, "pu_id" TEXT, "area" DOUBLE, "perimeter" DOUBLE,
"sidelength" DOUBLE, "nbre_stations" INT, "noms_velibs" TEXT)
(je ne suis pas sur des types : int pour entier, double pour decimal ? )
Ensuite on passe à la requete
insert into XXXX ("geometry" , "pu_id" , "area" , "perimeter" ,
"sidelength" , "nbre_stations" , "noms" )
select .........
puis
SELECT RecoverGeometryColumn(XXXX , 'geometry', 2154, 'POLYGON', 'XY');
et au final quand j'importe cette table spatiale sous Qgis, les graduations couleur sont accessibles car les champs ont le bon type.
Hors ligne