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

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#1 Thu 04 April 2019 11:18

D3us
Participant actif
Date d'inscription: 6 Mar 2019
Messages: 57

Reconnaitre une edge table

Bonjour,

Je suis rendu au moment où je génère mon trajet avec QGIS à l'aide de l'algorithme de mon choix (a*, dijkstra etc...)
Sauf que cela ne fonctionne pas, alors je me demande si j'ai bien été sur la table, voilà ce que j'ai fait.
Après avoir intégré mon fichier osm a ma base de données avec osm2pgsql, j'ai lancer la génération de la topographie :

Code:

select pgr_createTopology('planet_osm_roads', 0.000001);

Puis j'ai lancé la requête suivante pour créer les colonnes qui me manquaient (source et target sont déjà présents) :

Code:

ALTER TABLE planet_osm_roads
    ADD COLUMN cost_len double precision,
    ADD COLUMN cost_time double precision,
    ADD COLUMN rcost_len double precision,
    ADD COLUMN rcost_time double precision,
    ADD COLUMN x1 double precision,
    ADD COLUMN y1 double precision,
    ADD COLUMN x2 double precision,
    ADD COLUMN y2 double precision,
    ADD COLUMN to_cost double precision,
    ADD COLUMN rule text,
    ADD COLUMN isolated integer;

Enfin j'ai rempli ces colonnes automatiquement avec différentes fonction (st_startpoint, st_length_spheroid etc...)

Code:

UPDATE planet_osm_roads SET x1 = st_x(st_startpoint(way)),
                      y1 = st_y(st_startpoint(way)),
                      x2 = st_x(st_endpoint(way)),
                      y2 = st_y(st_endpoint(way)),
  cost_len  = st_length_spheroid(way, 'SPHEROID["WGS84",6378137,298.25728]'),
  rcost_len = st_length_spheroid(way, 'SPHEROID["WGS84",6378137,298.25728]');
  


UPDATE planet_osm_roads SET
    cost_time = CASE
        WHEN oneway='TF' THEN 10000.0
        ELSE NULL
        END,
    rcost_time = CASE
        WHEN oneway='FT' THEN 10000.0
        ELSE NULL
        END;

Et quand je charge ma table dans QGIS avec pgroutingLayer, Cela me retourne "no path found in (U) dijkstra : [source] to [target]"
Donc je me demande si la "edge_table" ne serait pas une autre table que celle que j'ai choisi, d'où ma question : Comment reconnait on une edge table ?

Hors ligne

 

#2 Fri 12 April 2019 16:12

D3us
Participant actif
Date d'inscription: 6 Mar 2019
Messages: 57

Re: Reconnaitre une edge table

Bonjour,

Je poste la solution ici pour répondre aux futurs personnes ayant un problème similaire.
Premièrement, une edge_table est une table disposant de champs géométrique permettant la création de topologie.

Deuxièmement, il faut utiliser la fonction pgr_nodeNetwork() pour relier les jonctions de routes correctement entre elles, d'où le soucis de l'itinéraire non trouvé.

Hors ligne

 

#3 Tue 23 April 2019 11:51

Tanina234
Juste Inscrit !
Date d'inscription: 7 Nov 2018
Messages: 8

Re: Reconnaitre une edge table

Bonjour,

Je travaille sur le pgRouting ,  ce que je fais c'est que je crée ma colonne 'source' et 'target ' en premier avec un simple ALTER TABLE :

Code:

 ALTER TABLE matable
add "source" int8 ; 

ALTER TABLE matable
add "target" int8 ;

puis je crée ma topologie avec:

Code:

select pgr_createTopology('matable',1, 'geom', 'id', 'source', 'target', rows_where:= 'true', clean:= true);

après il faut faire attention au seuil de tolérance , ça doit matcher avec l'unité de la données!

:)

Dernière modification par Tanina234 (Tue 23 April 2019 11:52)

Hors ligne

 

#4 Fri 26 April 2019 10:32

D3us
Participant actif
Date d'inscription: 6 Mar 2019
Messages: 57

Re: Reconnaitre une edge table

Bonjour, oui j'ai déjà créé ma topologie, et du coup j'ai lancé

Code:

SELECT pgr_nodeNetwork('planet_osm_line', 0.001, 'osm_id' , 'way' , 'noded' );

Et ça fait 2 jours que ça tourne :'(

C'est normal ?

Hors ligne

 

Pied de page des forums

Powered by FluxBB