#1 Wed 19 August 2020 22:32
- Theos2000
- Participant assidu
- Date d'inscription: 15 Jun 2015
- Messages: 221
PG_routing : pgr_drivingdistance n'existe pas
Bonjour,
J'ai souhaité me replonger dans un travail effectué sur Pg_routing il y a 2 ans. Or aprés plusieurs sauvegardes et restaurations de cette base lorsque je lance mes requetes avec PG_routing ca me dit : "la fonction pgr_drivingdistance(unknown, integer, numeric, boolean, boolean) n'existe pas....."
Est ce que quelqu'un a déja vu ca ? j'ai vérifié que le shéma topology et que les couches n'avaient pas été modifié et que les couches mobilisés pour le calcul d'isochrone existaient bien, ce qui est le cas...
Du coup je comprend pas trop pourquoi un tel message....
Merci
Hors ligne
#2 Thu 20 August 2020 10:23
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: PG_routing : pgr_drivingdistance n'existe pas
Bonjour,
pg_routing a ete réinstallé sur la nouvelle base ?
c'est une extension a part, à installer comme Postgis.
Nicolas
Hors ligne
#3 Thu 20 August 2020 11:31
- Theos2000
- Participant assidu
- Date d'inscription: 15 Jun 2015
- Messages: 221
Re: PG_routing : pgr_drivingdistance n'existe pas
Oui pg_routing a été installé sur la nouvelle base
Code:
CREATE EXTENSION pgrouting SCHEMA public VERSION "3.0.0";
Cependant le travail avait été ralisé avec la version 2.5 et la on est en version 3.0.
Hors ligne
#4 Thu 20 August 2020 15:05
- Theos2000
- Participant assidu
- Date d'inscription: 15 Jun 2015
- Messages: 221
Re: PG_routing : pgr_drivingdistance n'existe pas
En fait j'ai trouvé des variantes dans les fonctions
en version 3 la fonction ressemblait a celle ci :
Code:
- FUNCTION: public.pgr_drivingdistance(text, anyarray, double precision, boolean, boolean) -- DROP FUNCTION public.pgr_drivingdistance(text, anyarray, double precision, boolean, boolean); CREATE OR REPLACE FUNCTION public.pgr_drivingdistance( text, anyarray, double precision, directed boolean DEFAULT true, equicost boolean DEFAULT false, OUT seq integer, OUT from_v bigint, OUT node bigint, OUT edge bigint, OUT cost double precision, OUT agg_cost double precision) RETURNS SETOF record LANGUAGE 'sql' COST 100 VOLATILE STRICT ROWS 1000 AS $BODY$ SELECT * FROM _pgr_drivingDistance(_pgr_get_statement($1), $2, $3, $4, $5); $BODY$; ALTER FUNCTION public.pgr_drivingdistance(text, anyarray, double precision, boolean, boolean) OWNER TO postgres; COMMENT ON FUNCTION public.pgr_drivingdistance(text, anyarray, double precision, boolean, boolean)
Or en version 2.5 elle ressemble a ca
Code:
-- FUNCTION: public.pgr_drivingdistance(text, bigint, double precision, boolean) -- DROP FUNCTION public.pgr_drivingdistance(text, bigint, double precision, boolean); CREATE OR REPLACE FUNCTION public.pgr_drivingdistance( edges_sql text, start_vid bigint, distance double precision, directed boolean DEFAULT true, OUT seq integer, OUT node bigint, OUT edge bigint, OUT cost double precision, OUT agg_cost double precision) RETURNS SETOF record LANGUAGE 'sql' COST 100 VOLATILE STRICT ROWS 1000 AS $BODY$ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false) a; $BODY$; ALTER FUNCTION public.pgr_drivingdistance(text, bigint, double precision, boolean) OWNER TO postgres;
Hors ligne
#5 Mon 04 October 2021 15:12
- Theos2000
- Participant assidu
- Date d'inscription: 15 Jun 2015
- Messages: 221
Re: PG_routing : pgr_drivingdistance n'existe pas
Bonjour je me permet de relancer le sujet si par hasard quelqu'un avait un élément de réponse suite au passage de la version 2.6 de pG routing à la version 3.0. la requete initiale était
Code:
with e1 as ( SELECT et.edge_id , st_buffer(et. geom,10, 'endcap=square join=round') as geom , 1 as factor FROM (SELECT id1,cost from pgr_drivingdistance( 'SELECT edge_id as id,start_node as source , end_node as target, tps_voiture as cost FROM routing.edge_data', 159082,0.20,false,false) ) firstPath CROSS JOIN (SELECT id1,cost from pgr_drivingDistance( 'SELECT edge_id as id,start_node as source , end_node as target,tps_voiture as cost FROM routing.edge_data', 159082,0.20,false,false) ) secondPath INNER JOIN routing.edge_data et ON firstPath.id1 = et.start_node AND secondPath.id1 = et.end_node ) SELECT serial::integer ,a.geom FROM (select ST_MakePolygon(ST_ExteriorRing(ST_GeometryN(st_union(geom),1))) as geom from e1) as a left join (select * from donnee_initiale.gare_routing_2154 where serial = 159082) as b on st_intersects (a.geom,b.geom) group by serial,a.geom
Mais cela renvoit
Code:
ERROR: ERREUR: la fonction pgr_drivingdistance(unknown, integer, numeric, boolean, boolean) n'existe pas LINE 7: (SELECT id1,cost from pgr_drivingdistance(
Alors que cela fonctionne avec la version de PG routing installé sur la 11
Hors ligne