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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Thu 10 August 2017 11:58

meonais
Participant occasionnel
Date d'inscription: 17 Jan 2017
Messages: 35

attribution valeurs sur réseau fonction rencontres succession points

Bonjour,

Je bloque depuis quelques jours sur les outils et la méthodologie à mettre en oeuvre pour cette étape...

Je souhaite attribuer des valeurs cumulatives à différents tronçons hydrographiques, d'aval en amont, en fonction des valeurs des points rencontrés le long de ce réseau hydrographique : la valeur du point rencontré doit être "transférée" au tronçon à son amont direct puis aux tronçons suivants, en cumulant les éventuelles autres valeurs rencontrées sur le chemin :
- Ainsi, un premier tronçon peut être limité à son amont par un point avec une valeur A
- Le tronçon directement à l'amont aura donc la valeur A
- Le tronçon qui suit vers l'amont également et ainsi de suite
- S'il y a un nouveau point avec une valeur B, alors le tronçon en amont direct de ce point aura la valeur A+B
etc...

Mes données :
- une couche de tronçons hydrographiques correctement orientés (?) et dessinés (?) : ils vont tous de l'amont à l'aval (je peux changer avec st_reverse() d'après mes essais) ;
- une couche de points avec des valeurs, correctement snapés aux tronçons et situés à l'extrémité d'un tronçon ; tous les tronçons n'ont pas forcément de point à leur extrémité

Mes essais :
- je suis d'abord partie avec l'utilisation des altitudes des points avec valeurs, de l'altitude des points aux extrémités de tronçons (créés avec ST_LineInterpolatePoint()), et de l'altitude moyenne de chaque tronçon.
J'arrive avec les requêtes à une représentation partielle pas du tout satisfaisante

- Avec l'ensemble de mes recherches, je me suis tournée vers la topologie et Pgrouting.
J'ai créé une topologie correcte des cours d'eau avec :

Code:

CREATE EXTENSION postgis_topology;
SELECT topology.CreateTopology('split_topo', 2154);
SELECT topology.AddTopoGeometryColumn('split_topo', 'public', 'split', 'topo_geom', 'LINESTRING');
UPDATE split SET topo_geom = topology.toTopoGeom(geom, 'split_topo', 1, 1.0);

J'ai donc bien les tables "edge_data", "node", etc . Mais je n'arrive pas bien à comprendre comment elles fonctionnent et comment les utiliser pour ma requête de cumul en fonction des points rencontrés d'aval en amont...
J'ai seulement compris que edge_data donnait l'identifiant du node amont et aval de chaque tronçon (edge), ainsi qu'un lien "gauche/droite" entre les tronçons (l'analyse des données ne me permets pas de bien identifier la logique de liaison left/right)
Je me penche un peu plus sur les cours de topologie mais...

J'ai donc voulu utiliser directement pgRouting

Code:

CREATE EXTENSION pgrouting;
alter table splitadd column source integer;
alter table splitadd column target integer;
select pgr_createTopology('split', 0.0001, the_geom:='geom', id:='idsplit', source:='source', target:='target');
SELECT pgr_analyzeGraph('split',  0.0001,
                    the_geom:='geom',  id:='idsplit',
                    source:='source', target:='target')

ce qui donne l'analyse suivante :

Code:

NOTICE:  PROCESSING:
NOTICE:  pgr_analyzeGraph('splitang',0.0001,'geom','idsplit','source','target','true')
NOTICE:  Performing checks, please wait ...
NOTICE:  Analyzing for dead ends. Please wait...
NOTICE:  Analyzing for gaps. Please wait...
NOTICE:  Analyzing for isolated edges. Please wait...
NOTICE:  Analyzing for ring geometries. Please wait...
NOTICE:  Analyzing for intersections. Please wait...
NOTICE:              ANALYSIS RESULTS FOR SELECTED EDGES:
NOTICE:                    Isolated segments: 0
NOTICE:                            Dead ends: 0
NOTICE:  Potential gaps found near dead ends: 0
NOTICE:               Intersections detected: 125
NOTICE:                      Ring geometries: 0

Total query runtime: 703 msec
1 ligne récupérée.

mais la table "...._vertices_pgr" est vide,

du coup je me suis arrêtée là...


je commence à nager sad... Je suis donc en recherche active de conseils et aiguillages, aides et bouts de codes pour avancer sur ma problématique smile

Merci de votre lecture et de vos conseils éventuels ! smile

Hors ligne

 

Pied de page des forums

Powered by FluxBB