ar_redadeg/scripts_v2/sql/patch_osm_roads_pgr.sql
2021-09-24 15:32:35 +02:00

41 lines
1.3 KiB
SQL

-- suppression des objets couche osm_roads_pgr qui intersectent avec les zones de boucles
DELETE FROM osm_roads_pgr WHERE id IN
(
SELECT a.id
FROM osm_roads_pgr a, osm_roads_pgr_patch_mask m
WHERE ST_INTERSECTS(a.the_geom, m.the_geom)
);
-- collage des objets de la couche osm_roads_pgr_patch à la place des objets supprimés
-- on crée un identifiant négatif
INSERT INTO osm_roads_pgr
SELECT
0-a.id AS id,
a.osm_id, a.highway, a.type, a.oneway, a.ref, a.name_fr, a.name_br,
NULL, NULL, NULL, NULL,
a.the_geom
FROM osm_roads_pgr_patch a, osm_roads_pgr_patch_mask m
WHERE ST_INTERSECTS(a.the_geom, m.the_geom);
-- calcul des 2 attributs de coût (= longueur)
UPDATE osm_roads_pgr
SET cost = st_length(the_geom), reverse_cost = st_length(the_geom)
WHERE id < 0 ;
-- recrée des nœuds uniquement sur les zones de patch
SELECT pgr_nodeNetwork('osm_roads_pgr', 0.001, rows_where := 'id < 0');
-- recalcul la topologie pgRouting uniquement sur les zones de patch
SELECT pgr_createTopology('osm_roads_pgr', 0.001, rows_where := 'id < 0', clean := false);
-- recalcul toute la topologie pgRouting en renumérotant de zéro
--SELECT pgr_createTopology('osm_roads_pgr', 0.001, clean := true);
--SELECT pgr_analyzegraph('osm_roads_pgr', 0.001);