Skip to content
This repository was archived by the owner on May 12, 2026. It is now read-only.

Commit d91cb10

Browse files
committed
feat(graphanalytics): add temporary table and view for element management in graph analytics
1 parent fe3202b commit d91cb10

2 files changed

Lines changed: 439 additions & 164 deletions

File tree

utils/fct/gw_fct_graphanalytics_manage_temporary.sql

Lines changed: 49 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,13 @@ BEGIN
117117
CREATE INDEX IF NOT EXISTS temp_pgr_connec_pgr_arc_id_idx ON temp_pgr_connec USING btree (pgr_arc_id);
118118
CREATE INDEX IF NOT EXISTS temp_pgr_connec_mapzone_id_idx ON temp_pgr_connec USING btree (mapzone_id);
119119

120+
CREATE TEMP TABLE IF NOT EXISTS temp_pgr_element (
121+
pgr_element_id INTEGER NOT NULL,
122+
mapzone_id INTEGER DEFAULT 0,
123+
CONSTRAINT temp_pgr_element_pkey PRIMARY KEY (pgr_element_id)
124+
);
125+
CREATE INDEX IF NOT EXISTS temp_pgr_element_mapzone_id_idx ON temp_pgr_element USING btree (mapzone_id);
126+
120127
IF v_project_type = 'UD' THEN
121128
CREATE TEMP TABLE IF NOT EXISTS temp_pgr_gully (
122129
pgr_gully_id INTEGER NOT NULL,
@@ -173,7 +180,7 @@ BEGIN
173180
);
174181
CREATE INDEX IF NOT EXISTS temp_pgr_connectedcomponents_component_idx ON temp_pgr_connectedcomponents USING btree (component);
175182
CREATE INDEX IF NOT EXISTS temp_pgr_connectedcomponents_node_idx ON temp_pgr_connectedcomponents USING btree (node);
176-
183+
177184
-- Create temporary tables depending on the project type
178185
IF v_fct_type = 'MAPZONE' THEN
179186

@@ -188,7 +195,7 @@ BEGIN
188195
CREATE INDEX IF NOT EXISTS idx_temp_pgr_graphconfig_mapzone_id ON temp_pgr_graphconfig USING btree (mapzone_id);
189196
CREATE INDEX IF NOT EXISTS idx_temp_pgr_graphconfig_pgr_node_id ON temp_pgr_graphconfig USING btree (pgr_node_id);
190197
CREATE INDEX IF NOT EXISTS idx_temp_pgr_graphconfig_pgr_arc_id ON temp_pgr_graphconfig USING btree (pgr_arc_id);
191-
198+
192199
EXECUTE format(
193200
'CREATE TEMP TABLE IF NOT EXISTS temp_pgr_mapzone (LIKE %I.%I INCLUDING ALL)',
194201
'SCHEMA_NAME',
@@ -207,11 +214,11 @@ BEGIN
207214
CREATE INDEX IF NOT EXISTS temp_pgr_mapzone_mapzone_id_idx ON temp_pgr_mapzone USING btree (mapzone_id);
208215
ALTER TABLE temp_pgr_mapzone ALTER COLUMN expl_id SET DEFAULT ARRAY[0]::integer[];
209216
ALTER TABLE temp_pgr_mapzone ALTER COLUMN muni_id SET DEFAULT ARRAY[0]::integer[];
210-
217+
211218
IF v_fct_name <> 'SECTOR' THEN
212219
ALTER TABLE temp_pgr_mapzone ALTER COLUMN sector_id SET DEFAULT ARRAY[0]::integer[];
213220
END IF;
214-
221+
215222

216223
ALTER TABLE temp_pgr_node ADD COLUMN IF NOT EXISTS component INTEGER DEFAULT 0;
217224
CREATE INDEX IF NOT EXISTS temp_pgr_node_component_idx ON temp_pgr_node USING btree (component);
@@ -224,7 +231,7 @@ BEGIN
224231

225232
ALTER TABLE temp_pgr_connec ADD COLUMN IF NOT EXISTS component INTEGER DEFAULT 0;
226233
CREATE INDEX IF NOT EXISTS temp_pgr_connec_component_idx ON temp_pgr_connec USING btree (component);
227-
234+
228235
IF v_project_type = 'UD' THEN
229236
ALTER TABLE temp_pgr_gully ADD COLUMN IF NOT EXISTS component INTEGER DEFAULT 0;
230237
CREATE INDEX IF NOT EXISTS temp_pgr_gully_component_idx ON temp_pgr_gully USING btree (component);
@@ -251,8 +258,8 @@ BEGIN
251258

252259
-- for specific functions
253260

254-
IF v_fct_name IN ('MINCUT', 'MINSECTOR') THEN
255-
261+
IF v_fct_name IN ('MINCUT', 'MINSECTOR') THEN
262+
256263
CREATE TEMP TABLE IF NOT EXISTS temp_pgr_node_minsector (LIKE temp_pgr_node INCLUDING ALL);
257264

258265
ALTER TABLE temp_pgr_arc_linegraph ADD COLUMN IF NOT EXISTS adjacent_mincut_id INTEGER DEFAULT 0;
@@ -270,9 +277,9 @@ BEGIN
270277
CREATE TEMP TABLE IF NOT EXISTS temp_pgr_minsector_mincut_valve (LIKE SCHEMA_NAME.minsector_mincut_valve INCLUDING ALL);
271278
END IF;
272279

273-
ELSE
280+
ELSE
274281
IF v_fct_name = 'DWFZONE' THEN
275-
282+
276283
CREATE TEMP TABLE IF NOT EXISTS temp_pgr_drivingdistance_initoverflowpath (
277284
seq INTEGER NOT NULL,
278285
"depth" INTEGER NULL,
@@ -292,7 +299,7 @@ BEGIN
292299
IF v_fct_name = 'OMUNIT' THEN
293300
ALTER TABLE temp_pgr_arc ADD COLUMN IF NOT EXISTS macromapzone_id INTEGER DEFAULT 0;
294301
CREATE INDEX IF NOT EXISTS temp_pgr_arc_macromapzone_id_idx ON temp_pgr_arc USING btree ("macromapzone_id");
295-
302+
296303
CREATE TEMP TABLE IF NOT EXISTS temp_pgr_omunit (LIKE SCHEMA_NAME.omunit INCLUDING ALL);
297304
CREATE TEMP TABLE IF NOT EXISTS temp_pgr_macroomunit (LIKE SCHEMA_NAME.macroomunit INCLUDING ALL);
298305

@@ -394,6 +401,21 @@ BEGIN
394401
AND e.active = TRUE;
395402
$sql$, v_mapzone_field);
396403

404+
-- in psector mode elements does not change.
405+
EXECUTE format($sql$
406+
CREATE OR REPLACE TEMPORARY VIEW v_temp_element AS
407+
SELECT
408+
e.element_id,
409+
e.expl_id,
410+
e.the_geom
411+
FROM element e
412+
JOIN exploitation ex ON ex.expl_id = e.expl_id
413+
JOIN value_state_type vst ON vst.id = e.state_type
414+
WHERE e.state = 1
415+
AND vst.is_operative = TRUE
416+
AND ex.active = TRUE;
417+
$sql$);
418+
397419
EXECUTE format($sql$
398420
CREATE OR REPLACE TEMPORARY VIEW v_temp_link_connec AS
399421
SELECT
@@ -562,6 +584,20 @@ BEGIN
562584
AND e.active = TRUE;
563585
$sql$, v_mapzone_field);
564586

587+
EXECUTE format($sql$
588+
CREATE OR REPLACE TEMPORARY VIEW v_temp_element AS
589+
SELECT
590+
e.element_id,
591+
e.expl_id,
592+
e.the_geom
593+
FROM element e
594+
JOIN exploitation ex ON ex.expl_id = e.expl_id
595+
JOIN value_state_type vst ON vst.id = e.state_type
596+
WHERE e.state = 1
597+
AND vst.is_operative = TRUE
598+
AND ex.active = TRUE;
599+
$sql$);
600+
565601
EXECUTE format($sql$
566602
CREATE OR REPLACE TEMPORARY VIEW v_temp_link_connec AS
567603
SELECT
@@ -622,7 +658,7 @@ BEGIN
622658

623659
END IF;
624660

625-
END IF;
661+
END IF;
626662

627663
-- CHECKS - TODO
628664
-- =======================
@@ -644,6 +680,7 @@ BEGIN
644680
DROP VIEW IF EXISTS v_temp_node;
645681
DROP VIEW IF EXISTS v_temp_arc;
646682
DROP VIEW IF EXISTS v_temp_connec;
683+
DROP VIEW IF EXISTS v_temp_element;
647684
DROP VIEW IF EXISTS v_temp_gully;
648685
DROP VIEW IF EXISTS v_temp_link_connec;
649686
DROP VIEW IF EXISTS v_temp_link_gully;
@@ -655,6 +692,7 @@ BEGIN
655692
DROP TABLE IF EXISTS temp_pgr_node;
656693
DROP TABLE IF EXISTS temp_pgr_arc;
657694
DROP TABLE IF EXISTS temp_pgr_connec;
695+
DROP TABLE IF EXISTS temp_pgr_element;
658696
DROP TABLE IF EXISTS temp_pgr_gully;
659697
DROP TABLE IF EXISTS temp_audit_check_data;
660698
DROP TABLE IF EXISTS temp_pgr_connectedcomponents;
@@ -707,4 +745,3 @@ END;
707745
$BODY$
708746
LANGUAGE plpgsql VOLATILE
709747
COST 100;
710-

0 commit comments

Comments
 (0)