rajout du secteur_id

This commit is contained in:
MaelReboux 2019-04-28 22:57:00 +02:00
parent d6e3810713
commit 3e0c9c8494
3 changed files with 15 additions and 11 deletions

View file

@ -174,6 +174,7 @@ CREATE TABLE phase_2_pk_secteur
id integer, id integer,
name text, name text,
pgr_node_id integer, pgr_node_id integer,
secteur_id integer,
the_geom geometry(Point,2154), the_geom geometry(Point,2154),
CONSTRAINT phase_2_pk_secteur_pkey PRIMARY KEY (id), CONSTRAINT phase_2_pk_secteur_pkey PRIMARY KEY (id),
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'POINT'::text), CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'POINT'::text),

View file

@ -24,6 +24,7 @@ WITH candidates AS
SELECT SELECT
pk_org.id AS pk_id, pk_org.id AS pk_id,
pk_org.name AS name, pk_org.name AS name,
pk_org.secteur_id AS secteur_id,
node.id AS node_id, node.id AS node_id,
ST_Distance(pk_org.the_geom, ST_ClosestPoint(node.the_geom, pk_org.the_geom)) AS distance, ST_Distance(pk_org.the_geom, ST_ClosestPoint(node.the_geom, pk_org.the_geom)) AS distance,
ST_Snap( ST_Snap(
@ -32,7 +33,7 @@ SELECT
ST_Distance(pk_org.the_geom, ST_ClosestPoint(node.the_geom, pk_org.the_geom))* 1.01 -- dans la distance de ce plus proche point ST_Distance(pk_org.the_geom, ST_ClosestPoint(node.the_geom, pk_org.the_geom))* 1.01 -- dans la distance de ce plus proche point
) AS the_geom ) AS the_geom
FROM FROM
(SELECT id::integer, name, ST_Transform(the_geom,2154) AS the_geom FROM phase_2_pk_secteur_3857) AS pk_org, (SELECT id::integer, name, secteur_id, ST_Transform(the_geom,2154) AS the_geom FROM phase_2_pk_secteur_3857) AS pk_org,
(SELECT id, the_geom FROM osm_roads_pgr_vertices_pgr) AS node (SELECT id, the_geom FROM osm_roads_pgr_vertices_pgr) AS node
WHERE WHERE
ST_INTERSECTS(node.the_geom, ST_BUFFER(ST_Transform(pk_org.the_geom,2154) ,25) ) ST_INTERSECTS(node.the_geom, ST_BUFFER(ST_Transform(pk_org.the_geom,2154) ,25) )
@ -44,6 +45,7 @@ SELECT
a.pk_id AS id, a.pk_id AS id,
a.name, a.name,
b.node_id AS pgr_node_id, b.node_id AS pgr_node_id,
a.secteur_id::integer,
b.the_geom b.the_geom
FROM candidates a JOIN FROM candidates a JOIN
( (
@ -55,10 +57,10 @@ SELECT
min(distance) AS min_distance, min(distance) AS min_distance,
the_geom the_geom
FROM candidates FROM candidates
GROUP BY pk_id, node_id, the_geom GROUP BY pk_id, secteur_id, node_id, the_geom
) b ON a.pk_id = b.pk_id ) b ON a.pk_id = b.pk_id
WHERE b.rang = 1 WHERE b.rang = 1
GROUP BY a.pk_id, a.name, b.node_id, b.the_geom GROUP BY a.pk_id, a.name, a.secteur_id, b.node_id, b.the_geom
ORDER BY a.pk_id ORDER BY a.pk_id ;

View file

@ -56,8 +56,8 @@ $PSQL -h $DB_HOST -U $DB_USER -c "TRUNCATE TABLE phase_2_trace_pgr ;"
# et on calcule un itinéraire entre le PK de début et le PK suivant # et on calcule un itinéraire entre le PK de début et le PK suivant
$PSQL -X -h $DB_HOST -U $DB_USER $DB_NAME \ $PSQL -X -h $DB_HOST -U $DB_USER $DB_NAME \
-c "SELECT s.id, replace(s.nom_fr,' ','') AS nom_fr, replace(s.nom_br,' ','') AS nom_br, pk.pgr_node_id -c "SELECT pk.id, s.id AS secteur_id, replace(s.nom_fr,' ','') AS nom_fr, replace(s.nom_br,' ','') AS nom_br, pk.pgr_node_id
FROM phase_2_pk_secteur pk JOIN secteur s ON pk.id = s.id FROM phase_2_pk_secteur pk JOIN secteur s ON pk.secteur_id = s.id
ORDER BY pk.id ;" \ ORDER BY pk.id ;" \
--single-transaction \ --single-transaction \
--set AUTOCOMMIT=off \ --set AUTOCOMMIT=off \
@ -74,15 +74,16 @@ ORDER BY pk.id ;" \
# alors la requête supprime les espaces. TODO # alors la requête supprime les espaces. TODO
# le premier PK = PK de début # le premier PK = PK de début
secteur_id=${Record[0]} pk_id=${Record[0]}
secteur_nom_fr="${Record[1]}" secteur_id=${Record[1]}
secteur_nom_br="${Record[2]}" secteur_nom_fr="${Record[2]}"
pk_id_start=${Record[3]} secteur_nom_br="${Record[3]}"
pk_id_start=${Record[4]}
# maintenant il faut une 2e requête pour aller trouver le PK de fin # maintenant il faut une 2e requête pour aller trouver le PK de fin
# ce PK = le PK de début du secteur suivant # ce PK = le PK de début du secteur suivant
read pk_id_end <<< $($PSQL -h $DB_HOST -U $DB_USER --no-align -t --quiet \ read pk_id_end <<< $($PSQL -h $DB_HOST -U $DB_USER --no-align -t --quiet \
-c "SELECT pgr_node_id FROM phase_2_pk_secteur WHERE id = $secteur_id + 1 ;") -c "SELECT pgr_node_id FROM phase_2_pk_secteur WHERE id = $pk_id + 1 ;")
# on teste si on récupère qqch sinon ça veurt dire qu'on a pas de nœud de fin donc impossible de calculer un itinéraire # on teste si on récupère qqch sinon ça veurt dire qu'on a pas de nœud de fin donc impossible de calculer un itinéraire
if [[ -n "$pk_id_end" ]]; if [[ -n "$pk_id_end" ]];