Pages: 1
- Sujet précédent - QGIS: Identifier les 3 lignes les plus courtes de maniere regressive - Sujet suivant
#1 Tue 29 November 2022 10:41
- GlaDal
- Participant assidu
- Date d'inscription: 30 Aug 2013
- Messages: 1087
QGIS: Identifier les 3 lignes les plus courtes de maniere regressive
Bonjour à toutes et tous !
Je travaille sur une couche vecteur linéaire avec un champ unique correspondant à une classe (il y'en a 5 en tout).
Je cherche à identifier (sélection ou extraction) les trois lignes de plus petites longueurs et ce de manière régressive, c'est à dire : identifier les 3 lignes les plus courtes en commençant par la classe 5 soit si sont identifiés les 3 lignes les plus courtes dans la classe 5, j'arrête mon calcul mais si seul 2 lignes ont été identifiées dans la classe 5, je cherche la troisième ligne dans la classe 4 et ainsi de suite jusqu'à identifier au total 3 lignes.
Partant pour un peu d'aide !
Merci d'avance !
Hors ligne
#2 Wed 30 November 2022 16:17
- GlaDal
- Participant assidu
- Date d'inscription: 30 Aug 2013
- Messages: 1087
Re: QGIS: Identifier les 3 lignes les plus courtes de maniere regressive
Je complète la demande car il manque un élément (merci SANTANNA). Il faut ajouter à cela un paramètre où les longueurs supérieures à 10m ne sont pas prises en compte.
Par exemple : il y a 6 entités en classe 5 dont 2 entités font 5m et 4 entités 12m. En classe 4, j'ai 4 entités dont 2 entités inférieures à 10m (les autres sont supérieures à 10m).
J'aimerais identifier les 2 entités inférieures à 10m de la classe 5 et l'entité inférieure à 10m et la plus petite des deux longueurs restantes de la classe 4. Je n'identifie pas les entités inférieures à 10m des classes 1, 2 et 3 car j'ai déjà identifié 3 entités les plus petites (et inférieures à 10m).
Hors ligne
#3 Thu 01 December 2022 17:10
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3940
Re: QGIS: Identifier les 3 lignes les plus courtes de maniere regressive
Hello,
J'envoie ce message et je retourne ramasser le reste de mes dents qui se sont fracassées (bien! bien!) en essayant de régler ton problème via les expressions. Les outils de manipulation et de tri des listes ne m'ont jamais paru aussi limités ;( (ou c'est peut-être moi qui sais pas par quel bout prendre ta requête)
Ce qui est génial par contre avec QGIS est que t'as tellement d'options pour faire les choses que...
Je te propose donc (vu que "Extraire" te va aussi) de passer par du SQL et donc une couche virtuelle depuis DB Manager
Code:
select leschampsquetuveux, lefameuxchampclasse, st_length(geometry) as longueur, geometry from macouche where longueur < 10 order by lefameuxchampclasse desc, longueur asc limit 3
Une autre solution qui marcherait serait de créer sa propre fonction Python, mais bon... je m'en vais ramasser mes dents pour l'instant.
Hors ligne
Pages: 1
- Sujet précédent - QGIS: Identifier les 3 lignes les plus courtes de maniere regressive - Sujet suivant