ménage autour de la maj de la couche de routage…

This commit is contained in:
MaelReboux 2019-05-09 10:06:54 +02:00
parent aeb01dc8e1
commit 488569d5bb
5 changed files with 94 additions and 16 deletions

View file

@ -30,10 +30,34 @@ echo ""
# 3. calcul de la couche osm_roads = intersection buffer trace et routes OSM # 3. calcul de la couche osm_roads = intersection buffer trace et routes OSM
echo "calcul de la couche osm_roads" echo ">> calcul de la couche osm_roads"
echo ""
# on supprime puis on recrée la table
psql -h $HOST_DB_osm -U osmbr -d osm -c "DROP TABLE IF EXISTS osm_roads ;"
psql -h $HOST_DB_osm -U osmbr -d osm -c "
CREATE TABLE osm_roads
(
uid bigint,
osm_id bigint,
highway text,
type text,
oneway text,
ref text,
name_fr text,
name_br text,
the_geom geometry,
CONSTRAINT osm_roads_pkey PRIMARY KEY (uid),
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'LINESTRING'::text OR geometrytype(the_geom) = 'MULTILINESTRING'::text),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 2154)
);"
echo ""
echo " table osm_roads créée"
echo ""
echo " chargement des données"
echo "" echo ""
psql -h $HOST_DB_osm -U osmbr -d osm -c "TRUNCATE TABLE osm_roads ;"
psql -h $HOST_DB_osm -U osmbr -d osm -c "WITH trace_buffer AS ( psql -h $HOST_DB_osm -U osmbr -d osm -c "WITH trace_buffer AS (
SELECT SELECT
secteur_id, secteur_id,
@ -72,7 +96,7 @@ echo ""
# 4. export de osm_roads depuis la base OSM # 4. export de osm_roads depuis la base OSM
echo "import de osm_roads depuis la base OSM vers la base redadeg" echo "transfert de osm_roads depuis la base OSM vers la base redadeg"
echo "" echo ""
pg_dump --file data/osm_roads.sql --host $HOST_DB_osm --username osmbr --no-password --format=p --no-owner --section=pre-data --section=data --no-privileges --no-tablespaces --no-unlogged-table-data --no-comments --table public.osm_roads osm pg_dump --file data/osm_roads.sql --host $HOST_DB_osm --username osmbr --no-password --format=p --no-owner --section=pre-data --section=data --no-privileges --no-tablespaces --no-unlogged-table-data --no-comments --table public.osm_roads osm

56
scripts/create_osm_roads_pgr.sh Executable file
View file

@ -0,0 +1,56 @@
#!/bin/bash
echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
echo " Création de la couche osm_roads_pgr"
echo ""
echo ""
HOST_DB_redadeg=localhost
HOST_DB_osm=192.168.56.1
# suppose le le .pgpass est correctement configuré pour le compte qui lance ce script
echo ">> suppression de la topologie existante"
echo ""
#psql -h $HOST_DB_redadeg -U redadeg -d redadeg -c "SELECT DropTopology('osm_roads_topo') ;"
echo ""
# création d'un schéma qui va accueillir le réseau topologique de la couche osm_roads
echo ">> création d'une nouvelle topologie"
echo ""
#psql -h $HOST_DB_redadeg -U redadeg -d redadeg -c "SELECT topology.CreateTopology('osm_roads_topo', 2154);"
# on a donc un nouveau schéma osm_roads_topo qui contient 4 tables : edge_data, face, node, relation
# et un nouvel enregistrement dans la table topology.layer
# logiquement : c'est 1 mais on va quand même faire une requête
psql -X -h $HOST_DB_redadeg -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
layer_id=${Record[0]}
echo ""
echo "layer_id de osm_roads = $layer_id"
echo ""
done
echo ">> ajout d'un nouvel attribut sur la table osm_roads"
echo ""
psql -h $HOST_DB_redadeg -U redadeg -d redadeg -c "SELECT topology.AddTopoGeometryColumn('osm_roads_topo', 'public', 'osm_roads', 'topo_geom', 'LINESTRING');"
echo ""
echo "fait"
echo ""
echo "fini >> exécuter update_osm_roads_pgr.sh "
echo ""

View file

@ -10,7 +10,7 @@
-- dans la base redadeg on a chargé la couche osm_roads qui a été calculée -- dans la base redadeg on a chargé la couche osm_roads qui a été calculée
-- à partir de données OSM -- à partir de données OSM
-- on efface la topolgie existante -- on efface la topologie existante
SELECT DropTopology('osm_roads_topo') ; SELECT DropTopology('osm_roads_topo') ;
-- 1. création d'un schéma qui va accueillir le réseau topologique de la couche osm_roads -- 1. création d'un schéma qui va accueillir le réseau topologique de la couche osm_roads
@ -113,10 +113,6 @@ ON a.edge = b.id
-- si besoin : nettoyage par Drop du schéma
SELECT topology.DropTopology('osm_roads_topo');
-- permissions -- permissions
ALTER SCHEMA osm_roads_topo OWNER TO redadeg ; ALTER SCHEMA osm_roads_topo OWNER TO redadeg ;
ALTER TABLE osm_roads_topo.edge_data OWNER TO redadeg ; ALTER TABLE osm_roads_topo.edge_data OWNER TO redadeg ;

View file

@ -4,13 +4,20 @@
./traitements_phase_1.sh ./traitements_phase_1.sh
./create_osm_roads.sh ./create_osm_roads.sh
# import du tracé phase 1 dans la base OSM
# extraction du réseau de voies à proximité
# chargement de la couche osm_roads dans la base redadeg
./create_osm_roads_pgr.sh
# à utiliser si on veut complètement recréer un graphe routier à neuf
./update_osm_roads_pgr.sh ./update_osm_roads_pgr.sh
# maj des couches de routage
#./update_server_routing_tables.sh
./traitements_phase_2.sh ./traitements_phase_2.sh

View file

@ -11,11 +11,6 @@
-- or cette couche est calculée à partir d'une BD osm cf la documentation -- or cette couche est calculée à partir d'une BD osm cf la documentation
-- maj de la topologie de la couche osm_roads_pgr qui sert au routage
-- 3 min
UPDATE osm_roads SET topo_geom = topology.toTopoGeom(the_geom, 'osm_roads_topo', 1, 0.00001);
-- maj de la couche support des calculs d'itinéraire -- maj de la couche support des calculs d'itinéraire
-- 30 s -- 30 s
-- on commence par vider les couches existantes -- on commence par vider les couches existantes