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,
name text,
pgr_node_id integer,
secteur_id integer,
the_geom geometry(Point,2154),
CONSTRAINT phase_2_pk_secteur_pkey PRIMARY KEY (id),
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'POINT'::text),

View file

@ -24,6 +24,7 @@ WITH candidates AS
SELECT
pk_org.id AS pk_id,
pk_org.name AS name,
pk_org.secteur_id AS secteur_id,
node.id AS node_id,
ST_Distance(pk_org.the_geom, ST_ClosestPoint(node.the_geom, pk_org.the_geom)) AS distance,
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
) AS the_geom
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
WHERE
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.name,
b.node_id AS pgr_node_id,
a.secteur_id::integer,
b.the_geom
FROM candidates a JOIN
(
@ -55,10 +57,10 @@ SELECT
min(distance) AS min_distance,
the_geom
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
WHERE b.rang = 1
GROUP BY a.pk_id, a.name, b.node_id, b.the_geom
ORDER BY a.pk_id
GROUP BY a.pk_id, a.name, a.secteur_id, b.node_id, b.the_geom
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
$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
FROM phase_2_pk_secteur pk JOIN secteur s ON pk.id = s.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.secteur_id = s.id
ORDER BY pk.id ;" \
--single-transaction \
--set AUTOCOMMIT=off \
@ -74,15 +74,16 @@ ORDER BY pk.id ;" \
# alors la requête supprime les espaces. TODO
# le premier PK = PK de début
secteur_id=${Record[0]}
secteur_nom_fr="${Record[1]}"
secteur_nom_br="${Record[2]}"
pk_id_start=${Record[3]}
pk_id=${Record[0]}
secteur_id=${Record[1]}
secteur_nom_fr="${Record[2]}"
secteur_nom_br="${Record[3]}"
pk_id_start=${Record[4]}
# maintenant il faut une 2e requête pour aller trouver le PK de fin
# 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 \
-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
if [[ -n "$pk_id_end" ]];