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

Printemps des cartes 2024

#1 Thu 18 January 2024 15:29

WilDeir
Juste Inscrit !
Date d'inscription: 18 Jan 2024
Messages: 5

QGIS: Determiner le reste d'une division euclidienne depuis un champ

Salut à tous,

Il s'agit d'une question peut-être toute bête mais dont je ne trouve pas la solution. Comment calculer le reste d'une division de nombre entier, tant positif que négatif, à partir de la calculatrice de champ ?

Après avoir calculer l'orientation de mes polylignes dans un champ "orientation" (de -180 à 0 et de 0 à 180), je cherche un moyen de calculer le reste de la division de mon champ "orientation" par 90 afin d'obtenir des nombres communs qui déterminent des perpendiculaires. Par exemple, une orientation de -19 (ouest) et une orientation de 71 (est) divisée par 90 obtiennent tous le deux un reste de 71 qui confirme une perpendiculaire entre ces deux polylignes. Sur Excel on obtient rapidement ce résultat par la formule =MOD("orientation";90) mais je ne trouve pas d'équivalent sur QGIS.

J'ai bien essayé l'opérateur "%" de la calculatrice de champs et la formule suivante : "orientation" % 90, mais le résultat est égal à mes valeurs présentes dans mon champ "orientation".

En vous remerciant, Wil

Hors ligne

 

#2 Thu 18 January 2024 15:38

shirosaki
Participant actif
Lieu: Lyon
Date d'inscription: 30 Mar 2018
Messages: 124

Re: QGIS: Determiner le reste d'une division euclidienne depuis un champ

Bonjour,

l'opérateur "%" est normalement la solution pour votre cas

Exemples :
9 % 2 → 1
9 % -2 → 1
-9 % 2 → -1
5 % NULL → NULL


si cela ne marche pas, le problème vient peut être de votre champ "orientation" ?

Cordialement,

Dernière modification par shirosaki (Thu 18 January 2024 15:42)


Paul QUESNOT

Hors ligne

 

#3 Thu 18 January 2024 16:55

WilDeir
Juste Inscrit !
Date d'inscription: 18 Jan 2024
Messages: 5

Re: QGIS: Determiner le reste d'une division euclidienne depuis un champ

Le champ "orientation" dans lequel il y a mes valeurs fonctionne correctement avec tous les autres opérateurs (*, /, ^, etc...) et également dans le sens 90 % "orientation"... Mais à l'inverse, la formule  "orientation" % 90 ne marche toujours pas, même en rentrant les valeurs manuellement...

Merci

Hors ligne

 

#4 Mon 22 January 2024 09:32

Alban Kraus
Participant occasionnel
Lieu: Tulle (19)
Date d'inscription: 13 Jan 2022
Messages: 44

Re: QGIS: Determiner le reste d'une division euclidienne depuis un champ

Bonjour,

WilDeir a écrit:

une orientation de -19 (ouest) et une orientation de 71 (est) divisée par 90 obtiennent tous le deux un reste de 71


La division euclidienne est mal définie sur les nombres relatifs. Le langage C99 qu'utilise QGIS précise que le quotient est tronqué vers 0. Le quotient de -19 par 90 est donc -0 et le reste -19, ce qui est conforme à ce que vous observez.

Essayez de travailler en nombres positifs,

Code:

("orientation" + 360) % 90
WilDeir a écrit:

90 % "orientation"


La division n'est pas réflexive, le modulo non plus, vous n'auriez obtenu un bon résultat que sur un coup de chance.

Hors ligne

 

#5 Thu 25 January 2024 10:46

WilDeir
Juste Inscrit !
Date d'inscription: 18 Jan 2024
Messages: 5

Re: QGIS: Determiner le reste d'une division euclidienne depuis un champ

En effet, le problème venait des nombres négatifs. J'ai simplement utiliser une condition "si < 0 alors ajouter 180" :

CASE
  WHEN "monchamp" < 0 THEN "monchamp" + 180
  ELSE "monchamp"
END

Et tout fonctionne parfaitement,
Merci à tous !

Hors ligne

 

Pied de page des forums

Powered by FluxBB