diff --git a/scripts/create_tables.sql b/scripts/create_tables.sql index 6036799..9b10691 100644 --- a/scripts/create_tables.sql +++ b/scripts/create_tables.sql @@ -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), diff --git a/scripts/traitements_phase_2.1.sql b/scripts/traitements_phase_2.1.sql index 194b49b..9140fa3 100644 --- a/scripts/traitements_phase_2.1.sql +++ b/scripts/traitements_phase_2.1.sql @@ -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 ; diff --git a/scripts/traitements_phase_2.sh b/scripts/traitements_phase_2.sh index 6c56838..bc347ed 100755 --- a/scripts/traitements_phase_2.sh +++ b/scripts/traitements_phase_2.sh @@ -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" ]];