@@ -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;
707745$BODY$
708746 LANGUAGE plpgsql VOLATILE
709747 COST 100 ;
710-
0 commit comments