· 8 years ago · Mar 06, 2018, 06:48 PM
1CREATE TABLE region_subdiv AS
2SELECT row_number() over() AS gid, label, segment.geom AS geom
3FROM region source,
4LATERAL (SELECT ST_Multi(ST_SubDivide(geom), 255) AS geom) AS segment;
5CREATE INDEX region_subdiv_geom_idx ON region_subdiv USING GIST(geom);
6
7UPDATE region_subdiv SET geom=ST_Multi(ST_MakeValid(geom));
8UPDATE region_subdiv SET geom=ST_Buffer(geom, 0.0);
9UPDATE region_subdiv SET geom=ST_SimplifyPreserveTopology(geom, 0.0001) WHERE NOT ST_IsValid(geom);
10
11CREATE MATERIALIZED VIEW IF NOT EXISTS public.inverse_coverage AS
12 SELECT 1 AS gid, region.name AS region_name,
13 ST_Difference(path.geom, region.geom) AS geom
14 FROM path, LATERAL (SELECT cover.name, ST_Union(geom) AS geom FROM region_subdiv cover) AS coverage;