IGNF / route-graph-generator

Script collection used to generate routing data for Road2 (https://github.com/IGNF/road2)
https://ignf.github.io/route-graph-generator/
GNU General Public License v3.0
7 stars 3 forks source link

La fonction public.clean_graph() n'existe pas #3

Open frozar opened 1 year ago

frozar commented 1 year ago

J'ai pu remplir la base de donnée pivot et je travaille sur la création de la base de données pour pgRouting avec la commande r2gg-pivot2pgrouting. Lorsque je lance cette commande, l'ensemble du script s'exécute correctement jusqu'au moment où la fonction public.clean_graph() est utilisée : https://github.com/IGNF/route-graph-generator/blob/9bb6ad5573204f44ed21304418925a700f9ae6c1/r2gg/_pivot_to_pgr.py#L374-L378

A ce moment, j'ai le message d'erreur suivant :

Traceback (most recent call last):
  File "/home/frozar/.local/bin/r2gg-pivot2pgrouting", line 33, in <module>
    sys.exit(load_entry_point('r2gg', 'console_scripts', 'r2gg-pivot2pgrouting')())
  File "/home/frozar/wk/flaxib/wk/route-graph-generator/r2gg/__init__.py", line 12, in pivot2pgrouting
    pgr_convert(config, resource, db_configs, connection, logger)
  File "/home/frozar/wk/flaxib/wk/route-graph-generator/r2gg/_main.py", line 132, in pgr_convert
    pivot_to_pgr(resource, cost_calculation_file_path, connection, connection_out, logger)
  File "/home/frozar/wk/flaxib/wk/route-graph-generator/r2gg/_pivot_to_pgr.py", line 384, in pivot_to_pgr
    cursor_isolated.execute(clean_graph_query)
psycopg2.errors.UndefinedFunction: function public.clean_graph(unknown) does not exist
LINE 1: SELECT public.clean_graph('pedestrian')

En cherchant dans le projet pour savoir où est défini la fonction public.clean_graph(), je ne trouve rien.

Je pense donc que la définition de cette fonction n'est pas dans ce projet.

Si tel est le cas, pouvez-vous rajouter la définition de cette fonction dans le fichier _pivot_to_pgr.py svp ?

azarz commented 1 year ago

Bonjour ! La fonction clean_graph() est définie dans le projet https://github.com/IGNF/pgrouting-procedures, qu'il est nécessaire d'utiliser sur la base de données si ensuite on veut utiliser le serveur road2 avec pgRouting, car elle contient notamment le point d'entrée de road2 pour la communication avec pgRouting.

Dans l'état actuel du code, il est nécessaire d'installer les procédures SQL définies dans ce projet sur votre BDD avant de générer des données pour pgRouting. Une piste d'amélioration du projet r2gg pourrait être d'inclure les procédures définies dans pgrouting-procedures dans un script qui soit lancé avant _pivot_to_pgr.py