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é ?

#1 Tue 29 November 2022 10:41

GlaDal
Participant assidu
Date d'inscription: 30 Aug 2013
Messages: 1070

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: 1070

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: 3931

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

 

Pied de page des forums

Powered by FluxBB