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