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 Wed 21 June 2017 12:14

callensj
Juste Inscrit !
Date d'inscription: 21 Jan 2009
Messages: 4

QGIS 2.14: Comparer 2 lignes d'une même colonne dans un vecteur

Bonjour,

Après quelques recherches inabouties je me décide à poster ma question. En effet, je n'arrive pas à trouver comment résoudre mon problème.
- J'ai une couche de points GPS au format shp que je numérote via la fonction $id.
- Ensuite je supprime les points dont je ne veux pas pour diverses raisons (sortie de zone, erreur d'enregistrement etc...).
- Pour finir j'aimerais transformer mes points en lignes. Pour cela j'ai besoin d'une colonne de regroupement. J'aimerais construire cette colonne en comparant l'id de mon entité avec l'id de l'entité suivante et si la différence entre les deux est inférieur à 5, la colonne prend le même numéro et sinon numéro +1. Je le fais assez simplement sous excel via SI(id2-id1<5;même numéro;numéro+1) mais j'aurais aimé savoir s'il était possible de le faire sous QGIS.

J'ai l'habitude de comparer des colonnes ou des couches, mais une comparaison dans une même table, je ne sais pas trop comment faire.

Je travaille sous Windows 7, Qgis 2.14 64 bits.

Un tout grand merci pour le temps que vous consacrerez à répondre à ma question

Bonne journée à tous

Hors ligne

 

#2 Wed 21 June 2017 14:46

jmarsac
Participant assidu
Lieu: NICE
Date d'inscription: 26 Oct 2005
Messages: 567
Site web

Re: QGIS 2.14: Comparer 2 lignes d'une même colonne dans un vecteur

Quelque chose comme cela  ?

Code:

create table t7 (id integer);

insert into t7 (id) values (generate_series(1,10000));

delete from t7 where id in (3,5,9,11,15,20,32)

with cte as (select row_number() over() i, * from t7) select  row_number() over() r, ((i-1)/5) + 1 ei, * from cte;

C'est la colonne ei qui permettra le regroupement

Dernière modification par jmarsac (Wed 21 June 2017 15:14)


Jean-Marie
Azimut

Hors ligne

 

Pied de page des forums

Powered by FluxBB