Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

GEODATA DAYS 2024

#1 Fri 12 February 2021 12:13

geomou
Participant actif
Date d'inscription: 9 Apr 2012
Messages: 82

QGIS: Filtrer les donnees

Bonjour,

Dans une table attributaire, j'ai un champ qui contient des valeurs "rondes" (ex : 110.00, 111.00,..) et d'autres valeurs qui ne le sont pas (110.50, 111.50,...)
J'aimerais ne sélectionner que les valeurs rondes à l'aide d'un filtre (ou autre chose...je ne serai pas difficile ;-))
Existe-t-il un critère du type "ne contient pas" ?

Merci par avance pour votre aide

Hors ligne

 

#2 Fri 12 February 2021 14:13

chanteclair
Participant assidu
Lieu: Pau
Date d'inscription: 3 Jan 2007
Messages: 724

Re: QGIS: Filtrer les donnees

Bonjour,
Une recherche comme "MonChamp" ILIKE '%.50' ferait-elle le travail ?
Cordialement.

Hors ligne

 

#3 Fri 12 February 2021 15:05

geomou
Participant actif
Date d'inscription: 9 Apr 2012
Messages: 82

Re: QGIS: Filtrer les donnees

Merci pour ta réponse chanteclair mais ça ne fonctionne pas : Il ne trouve aucune valeur :-(

Hors ligne

 

#4 Fri 12 February 2021 15:59

Franck2908
Participant actif
Date d'inscription: 5 Mar 2010
Messages: 85

Re: QGIS: Filtrer les donnees

Bonjour,

tu peux essayer "MonChamp"::text like '%.00'

Hors ligne

 

#5 Fri 12 February 2021 16:13

geomou
Participant actif
Date d'inscription: 9 Apr 2012
Messages: 82

Re: QGIS: Filtrer les donnees

Expression invalide mais peut-être l'ai-je ma encodé. A quoi servent les ::

Hors ligne

 

#6 Fri 12 February 2021 16:15

MarineBdu1304
Participant occasionnel
Date d'inscription: 8 Apr 2016
Messages: 18

Re: QGIS: Filtrer les donnees

Bonjour,

Je suis désolée je m'incruste dans le sujet, j'ai une problématique semblable. Dans une couche ponctuelle (de bornes), je voudrais n'afficher que les bornes à un intervalle de 200 ou 500m (donc borne 200, 400, 600, etc... ou 500, 1000, 1500)... J'ai testé avec "mon champ" %200 mais en fait il me calcule le reste entier... donc pas vraiment ce que je cherche...

Merci d'avance pour vos réponses/éclaircissements !

Marine


"On peut juger de la grandeur d'une nation par la manière dont les animaux y sont traités."

Hors ligne

 

#7 Fri 12 February 2021 18:33

Miniopterine
Participant assidu
Date d'inscription: 29 Nov 2005
Messages: 278

Re: QGIS: Filtrer les donnees

et avec "monchamp" %200=0?

Hors ligne

 

#8 Fri 12 February 2021 19:12

Franck2908
Participant actif
Date d'inscription: 5 Mar 2010
Messages: 85

Re: QGIS: Filtrer les donnees

geomou a écrit:

Expression invalide mais peut-être l'ai-je ma encodé. A quoi servent les ::


les :: servent à transformer ton champ au format integer au format text afin de pouvoir lui appliquer la condition LIKE .
la condition LIKE n'est pas exploitable avec un champ en Integer.


votre champ est de quel format ?

Dernière modification par Franck2908 (Fri 12 February 2021 19:12)

Hors ligne

 

#9 Fri 12 February 2021 19:27

conejo
Participant assidu
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1662

Re: QGIS: Filtrer les donnees

Bonjour,

Si les valeurs de votre champ ne sont que des centaines, vous pouvez créer un champ dans lequel vous mettrez avec l'option right, tout ce qui se trouve après le point. 110.00 donnera 00 et 110.50 donnera 50. Ensuite sélection = 00, ce qui vous permettra de sélectionner les valeurs rondes.

Hors ligne

 

#10 Sat 13 February 2021 00:05

ThomasG
Membre
Lieu: Nantes
Date d'inscription: 9 Sep 2005
Messages: 946
Site web

Re: QGIS: Filtrer les donnees

Bonjour,


Sauf erreur, la réponse de Franck :: va marcher en PostgreSQL mais :: n'est pas une syntaxe valide dans le calculateur QGIS.

"MonChamp"::text like '%.00' bien qu'une bonne base doit plutôt être l'expression suivante

Code:

to_string('32.00') LIKE '%.00'

Marine pour tester votre autre cas (multiple de 200 et 500) il faut plutôt faire une double condition en utilisant modulo avec un "OR" comme ceci


Code:

"votre_champ" % 500 = 0 OR "votre_champ" % 200 = 0

Cordialement

Thomas

Hors ligne

 

#11 Sat 13 February 2021 15:29

p.jeremie
Participant assidu
Lieu: Valence
Date d'inscription: 10 Sep 2017
Messages: 416

Re: QGIS: Filtrer les donnees

Bonjour,

J'ai un doute sur le type de votre champ, il est bien en nombre décimal et pas en texte ?
Je demande car vous dites avoir des 00 après le séparateur décimal et en général on ne les voit pas.

Du coup je pense que la solution proposée par ThomasG ne fonctionnera pas si votre champ est numérique car on n'aura pas le .00 après conversion via to_string().

Si votre champ est bien numérique et non texte, vous pouvez passer par un modulo 1, qui permet de récupérer les nombres entiers :

Code:

"votre_champ" % 1 = 0

Hors ligne

 

#12 Mon 15 February 2021 09:43

MarineBdu1304
Participant occasionnel
Date d'inscription: 8 Apr 2016
Messages: 18

Re: QGIS: Filtrer les donnees

Bonjour,

Mon champ est de type texte.
La double condition n'a pas marché, voici le message d'erreur affiché : OGR [3] erreur 1: Type mismatch or improper type of arguments to % operator.

Merci beaucoup pour vos suggestions !


"On peut juger de la grandeur d'une nation par la manière dont les animaux y sont traités."

Hors ligne

 

#13 Mon 15 February 2021 10:53

p.jeremie
Participant assidu
Lieu: Valence
Date d'inscription: 10 Sep 2017
Messages: 416

Re: QGIS: Filtrer les donnees

MarineBdu1304 a écrit:

Bonjour,

Mon champ est de type texte.
La double condition n'a pas marché, voici le message d'erreur affiché : OGR [3] erreur 1: Type mismatch or improper type of arguments to % operator.

Merci beaucoup pour vos suggestions !


Bonjour,

Vous utilisez quelle version de QGIS ? Vous appliquez le filtre à quel endroit exactement ?
Je viens de tester sous QGIS 3.10 en paramétrant dans le filtre d'entités du fournisseur de données (Propriétés de la couche > Source / ou clic droit sur la couche > Filtrer)
Ca fonctionne avec

Code:

"mon_champ_texte" % 200 = 0 or "mon_champ_texte" % 500 = 0

Hors ligne

 

#14 Mon 15 February 2021 11:00

MarineBdu1304
Participant occasionnel
Date d'inscription: 8 Apr 2016
Messages: 18

Re: QGIS: Filtrer les donnees

Je suis sur la version 3.14.1, j'ai mis le filtre exactement au même endroit que vous pourtant, le message d'erreur apparaît encore. J'ai une collègue qui m'a proposé une autre solution (avec une petite manip intermédiaire) qui fonctionne. Cependant je ne comprends pas ce message d'erreur, si qqn-e trouve une explication, ça m'intéresse !

Merci pour votre aide smile


"On peut juger de la grandeur d'une nation par la manière dont les animaux y sont traités."

Hors ligne

 

#15 Mon 15 February 2021 12:04

Franck2908
Participant actif
Date d'inscription: 5 Mar 2010
Messages: 85

Re: QGIS: Filtrer les donnees

ThomasG a écrit:

Bonjour,


Sauf erreur, la réponse de Franck :: va marcher en PostgreSQL mais :: n'est pas une syntaxe valide dans le calculateur QGIS.

"MonChamp"::text like '%.00' bien qu'une bonne base doit plutôt être l'expression suivante

Code:

to_string('32.00') LIKE '%.00'

Marine pour tester votre autre cas (multiple de 200 et 500) il faut plutôt faire une double condition en utilisant modulo avec un "OR" comme ceci


Code:

"votre_champ" % 500 = 0 OR "votre_champ" % 200 = 0

Cordialement

Thomas


Bonjour,
j'avais testé et cela a fonctionné dans QGIS (Propriétés de la couche > Source / ou clic droit sur la couche > Filtrer) mais comme tout est stockée dans Postgres chez moi, c'est peut être pour cela que c'est passé ...

MarineBdu1304, une capture d'écran de la saisie de la condition pourrait nous éclairer.

Dernière modification par Franck2908 (Mon 15 February 2021 12:07)

Hors ligne

 

#16 Mon 15 February 2021 12:44

p.jeremie
Participant assidu
Lieu: Valence
Date d'inscription: 10 Sep 2017
Messages: 416

Re: QGIS: Filtrer les donnees

MarineBdu1304 a écrit:

Je suis sur la version 3.14.1, j'ai mis le filtre exactement au même endroit que vous pourtant, le message d'erreur apparaît encore. J'ai une collègue qui m'a proposé une autre solution (avec une petite manip intermédiaire) qui fonctionne. Cependant je ne comprends pas ce message d'erreur, si qqn-e trouve une explication, ça m'intéresse !

Merci pour votre aide smile


Quelle est votre source de données ? Shapefile, basé de données...

Hors ligne

 

#17 Mon 15 February 2021 13:16

MarineBdu1304
Participant occasionnel
Date d'inscription: 8 Apr 2016
Messages: 18

Re: QGIS: Filtrer les donnees

Voilà une capture d'écran en PJ.

Il s'agit d'une couche shapefile ajoutée depuis un serveur (cadre professionnel)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

"On peut juger de la grandeur d'une nation par la manière dont les animaux y sont traités."

Hors ligne

 

#18 Mon 15 February 2021 13:55

p.jeremie
Participant assidu
Lieu: Valence
Date d'inscription: 10 Sep 2017
Messages: 416

Re: QGIS: Filtrer les donnees

Il semble y avoir des souci d'encodage dans votre fichier. Sur le premier champ date on voit un problème de caractère.
Ça ne m'étonnerait pas que ça ait un lien.

Hors ligne

 

Pied de page des forums

Powered by FluxBB