diff --git a/scripts/update_osm_roads_pgr.sh b/scripts/update_osm_roads_pgr.sh index b40638f..b1269f9 100755 --- a/scripts/update_osm_roads_pgr.sh +++ b/scripts/update_osm_roads_pgr.sh @@ -18,14 +18,45 @@ echo "" echo " prend environ 5 min" echo "" -# cette couche vient d'une base osm donc il faut la recharger -$PSQL -h $DB_HOST -U $DB_USER -d $DB_NAME -c "TRUNCATE TABLE public.osm_roads;" -$PSQL -h $DB_HOST -U $DB_USER -d $DB_NAME < data/osm_roads.sql +# la couche osm_roads vient d'être mise à jour ou recrée +# on a besoin du layer_id +# au cas où ça change : on le récupère par requête +$PSQL -X -h $DB_HOST -U redadeg -d redadeg \ + -c "SELECT layer_id FROM topology.layer WHERE table_name = 'osm_roads' ;" \ + --single-transaction \ + --set AUTOCOMMIT=off \ + --set ON_ERROR_STOP=on \ + --no-align \ + -t \ + --field-separator ' ' \ + --quiet | while read -a Record ; do -# maj de la topologie de la couche osm_roads_pgr qui sert au routage + layer_id=${Record[0]} + + echo "" + echo "layer_id de osm_roads = $layer_id" + echo "" + +done + +# sauf que je n'arrive pas à sortir cette valeur du subshell créé par la boucle do /!\ +# donc je remet ici à la main. A corriger… TODO +layer_id=1 + +# on calcule le graphe topologique en remplissant le nouvel attribut géométrique +# le 1er chiffre est l'identifiant du layer dans la table topology.layer +# le 2e chiffre est la tolérance en mètres +echo ">> calcul du graphe topologique" +$PSQL -h $DB_HOST -U redadeg -d redadeg -c "UPDATE osm_roads SET topo_geom = topology.toTopoGeom(the_geom, 'osm_roads_topo', $layer_id, 0.00001);" +echo "" +echo "fait" +echo "" + +echo ">> maj de la couche osm_roads_pgr qui sert au routage depuis la topologie" $PSQL -h $DB_HOST -U $DB_USER -d $DB_NAME < update_osm_roads_pgr.sql +echo "" echo "fini" echo ""