· 8 years ago · Apr 09, 2018, 07:02 AM
1CREATE OR REPLACE FUNCTION vrg.VRGTest_Ver5(_tbl1_VRG regclass,_tbl2_urban regclass,_tbl3_postcodes regclass,t_name varchar(30))
2RETURNS SETOF record AS
3
4 $BODY$
5 BEGIN
6
7 EXECUTE format(
8
9 ' CREATE TABLE IF NOT EXISTS %I.%I
10(
11 PostcodeName text,
12 vrgid double precision,
13 urban_gid integer,
14 vrg_area double precision,
15 urban_area double precision,
16 weights double precision
17 )',
18 'vrg',
19 ('' || t_name)
20 );
21
22 EXECUTE format ('SELECT
23 postcodes.name as PostcodeName,
24 fishnet.fid as vrgid,
25 urban.gid as urban_gid,
26 st_area(fishnet.geom) as vrg_area,
27 ST_AREA(ST_INTERSECTION(urban.geom, fishnet.geom)) as urban_area,
28 ST_AREA(ST_INTERSECTION(urban.geom, fishnet.geom))/st_area(fishnet.geom) as weights
29 FROM ' || _tbl1_VRG || ' AS fishnet,'
30 || _tbl2_urban || ' as urban,'
31 || _tbl3_postcodes || ' as postcodes
32 WHERE
33 ST_INTERSECTS(urban.geom, fishnet.geom) and ST_INTERSECTS(fishnet.geom, postcodes.geom)')
34 into t_name;
35 END;
36 $BODY$ LANGUAGE PLPGSQL;
37
38select vrg.VRGTest_Ver5( 'vrg.bb_sumatrapart_grid_1000m' ,'vrg.ghs_pop_indonesia_v2_reclass_poly_union_v2_projected','vrg.gfk_2016_id_5_digit_pcd_areas2013_projected',
39 'vrg.ResultTest') it goes to infinite loop.