Pages: 1
- Sujet précédent - attribution valeurs sur réseau fonction rencontres succession points - Sujet suivant
#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
... Je suis donc en recherche active de conseils et aiguillages, aides et bouts de codes pour avancer sur ma problématique ![]()
Merci de votre lecture et de vos conseils éventuels ! ![]()
Hors ligne
Pages: 1
- Sujet précédent - attribution valeurs sur réseau fonction rencontres succession points - Sujet suivant


