Pages: 1
- Sujet précédent - QGIS: Determiner le reste d'une division euclidienne depuis un champ - Sujet suivant
#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: 125
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 actif
- Lieu: Tulle (19)
- Date d'inscription: 13 Jan 2022
- Messages: 57
Re: QGIS: Determiner le reste d'une division euclidienne depuis un champ
Bonjour,
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
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
Pages: 1
- Sujet précédent - QGIS: Determiner le reste d'une division euclidienne depuis un champ - Sujet suivant