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

GeoDataDays 2025

#1 Fri 21 February 2014 15:51

DPISSIS
Juste Inscrit !
Date d'inscription: 11 May 2012
Messages: 3

Requete sur addition d'attributs au cours d'un reseau de polyligne

Bonjour,

Je fait un Shp avec des polylignes, un reseau hydraulique, les polylignes sont dessinées dans le sens de l'écoulement, j'ai attribué un attribut "nombre de branchement" par tronçon (polyligne),
J'essaie avec une requete de créer un champ qui totalise le nombre de branchement.

J'ai reussi avec spacialite, via une requete sql a additionner le troncon amont avec celui de l'aval avec
une instruction du type enpoint(   )=startpoint (    )

mais sur un troisieme troncon il s'agit d'additionner les 2 premiers.

exemple : (d'amont en aval)
                       nb Branchement        nb total (a calculer)
Tronçon1            1                                          1
Tronçon2            2                                          3
Tronçon3            4                                          7

Je ne sais pas comment faire
Merci

Hors ligne

 

#2 Fri 21 February 2014 16:21

cyrille
Participant assidu
Date d'inscription: 7 Feb 2006
Messages: 403

Re: Requete sur addition d'attributs au cours d'un reseau de polyligne

Bonjour, la clause groupe by peut vous servir ?

Hors ligne

 

#3 Fri 21 February 2014 18:19

DPISSIS
Juste Inscrit !
Date d'inscription: 11 May 2012
Messages: 3

Re: Requete sur addition d'attributs au cours d'un reseau de polyligne

Je croise une j'ai une piste.

Il s'agit bien de relier le tronçon aval a celui amont par l'instruction endponit et startpoint
on peut ainsi récupérer l'ID du tronçon amont.
Ensuite, passer par un champ intermedaire "Nb branchement Amont" qui serait égale au Nb branchement total amont + Nb Branchement sur le tronçon
Nb branchement total = Nb branchement Amont + Nb Branchement sur le troncon

Y a plus qu'a

Hors ligne

 

#4 Mon 24 February 2014 09:55

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

Re: Requete sur addition d'attributs au cours d'un reseau de polyligne

pour ce genre de calcul, il n'y a pas forcément besoin de passer par un sgbdr. On peut utiliser le plugin group stats.


geodata au cerema et petits billets en géomatique

Hors ligne

 

#5 Mon 24 February 2014 10:53

Leyan
Participant assidu
Date d'inscription: 14 Oct 2013
Messages: 160

Re: Requete sur addition d'attributs au cours d'un reseau de polyligne

ici groupstat ne va pas t'aider, puisque le calcul est basé sur la topologie du réseau. Une solution manuelle comme tu proposes peut marcher si tes besoins sont simples, mais cela risque d'être limité. L'algorithme que tu présentes ne fonctionne que si tu fais le calcul au moins autant de fois que ton chemin le plus long, et je ne suis pas sûr de comprendre comment tu récupères le nombre de branchements amont.

Pour faire plus propre, c'est un peu compliqué. QGis ne gère pas la topologie lui-même, donc il va te falloir soit mettre tes donnés dans un format topologique et utiliser les fonctions adaptées (quelque chose comme pgRouting pour postgresql ? On dirait qu'il y a un plugin QGis pour s'en servir) ou développer une solution ad hoc, par exemple un petit plugin Python.

Hors ligne

 

#6 Sun 02 March 2014 11:16

DPISSIS
Juste Inscrit !
Date d'inscription: 11 May 2012
Messages: 3

Re: Requete sur addition d'attributs au cours d'un reseau de polyligne

j'ai trouvé une solution qui fonctionne. il y a peut etre mieux mais pour le moment !!!!!

j'ai donc fait une sequete spatial dans spatialite

du genre
Select
R1.*,
R2.idTroncon as idTamont
from T_troncon as R1, T_Troncon as R2
where st_within (st_startpoint(R1.geom),buffer(st_endpoint(R2.geom),1))

la requête retourne ce qu'il faut et permet de connaître les connexion entre tronçon,
cependant les tronçon de début de réseau ne ressortent pas, il doit y avoir une combine, mais étant débutant, je ne la connaît pas.
il faut retourner tous les tronçon de la table même s'il n'y pas de tronçon amont !!!!!

la deuxième manip, a été faite dans Excel en Visual Basic

Il s'agit de faire le calcul du nombre de Br Total,
sachant qu'il faut commencer par les tronçons amont pour finir par l'aval.
j'ai donc créer une matrice en indiquant uniquement le dernier tronçon, avec une boucle la matrice se rempli avec un indice de rang.
On fait ensuite les calculs en remontant la matrice a l'envers, comme cela le calcul se fait dans l'ordre.

Il y a peut être des logiciel plus performant qui le font, je ne sais pas.

le test a été fait sur un réseau de plus de 200 tronçons, et cela fonctionne, la macro Excel met environ 2 minute a faire tous les calculs.

Fait refait un lien dans QGIS avec mon tableau excel

Hors ligne

 

Pied de page des forums

Copyright Association GeoRezo