From f6244e57adf199ac5ddad4aac2a7267dc074fc34 Mon Sep 17 00:00:00 2001 From: lazaa32 Date: Thu, 19 Nov 2020 10:52:49 +0100 Subject: [PATCH 1/2] Use ST_SnapToGrid to avoid ERROR: GEOSUnaryUnion: TopologyException: found non-noded intersection between LINESTRING. Cluster only landcover subclasses: wood and forest. --- layers/landcover/generalized.sql | 423 +++++++++++++++++-------------- 1 file changed, 238 insertions(+), 185 deletions(-) diff --git a/layers/landcover/generalized.sql b/layers/landcover/generalized.sql index 373da4676..d024b4d10 100644 --- a/layers/landcover/generalized.sql +++ b/layers/landcover/generalized.sql @@ -5,273 +5,326 @@ DROP TABLE IF EXISTS osm_landcover_gen_z10; DROP TABLE IF EXISTS osm_landcover_gen_z11; DROP TABLE IF EXISTS osm_landcover_gen_z12; DROP TABLE IF EXISTS osm_landcover_gen_z13; +DROP TABLE IF EXISTS simplify_vw_z7 CASCADE; +DROP TABLE IF EXISTS simplify_vw_z8 CASCADE; +DROP TABLE IF EXISTS simplify_vw_z9 CASCADE; +DROP TABLE IF EXISTS simplify_vw_z10 CASCADE; +DROP TABLE IF EXISTS simplify_vw_z11 CASCADE; +DROP TABLE IF EXISTS simplify_vw_z12 CASCADE; +DROP TABLE IF EXISTS simplify_vw_z13 CASCADE; --- etldoc: osm_landcover_polygon -> osm_landcover_gen_z7 -CREATE TABLE osm_landcover_gen_z7 AS +-- etldoc: osm_landcover_polygon -> osm_landcover_gen_z13 +CREATE TABLE simplify_vw_z13 AS ( - WITH simplify_vw_z7 AS - ( - SELECT subclass, - ST_MakeValid( - ST_SimplifyVW(geometry, zres(7)*zres(7))) AS geometry + SELECT subclass, + ST_MakeValid( + ST_SnapToGrid( + ST_SimplifyVW(geometry, power(zres(13),2)), + 0.001)) AS geometry FROM osm_landcover_polygon - WHERE ST_Area(geometry) > power(zres(5),2) - ) + WHERE ST_Area(geometry) > power(zres(10),2) +); +CREATE INDEX ON simplify_vw_z13 USING GIST (geometry); -SELECT subclass, - ST_MakeValid( - (ST_Dump( - ST_Union(geometry))).geom) AS geometry - FROM - ( - SELECT subclass, - ST_ClusterDBSCAN(geometry, eps := 0, minpoints := 1) OVER () AS cid, - geometry - FROM simplify_vw_z7 - ) union_geom -GROUP BY subclass, - cid - ); - -CREATE INDEX ON osm_landcover_gen_z7 USING GIST (geometry); - --- etldoc: osm_landcover_polygon -> osm_landcover_gen_z8 -CREATE TABLE osm_landcover_gen_z8 AS +CREATE TABLE osm_landcover_gen_z13 AS ( - WITH simplify_vw_z8 AS - ( - SELECT subclass, - ST_MakeValid( - ST_SimplifyVW(geometry, zres(8)*zres(8))) AS geometry - FROM osm_landcover_polygon - WHERE ST_Area(geometry) > power(zres(6),2) - ) - SELECT subclass, - ST_MakeValid( - (ST_Dump( - ST_Union(geometry))).geom) AS geometry - FROM - ( - SELECT subclass, - ST_ClusterDBSCAN(geometry, eps := 0, minpoints := 1) OVER () AS cid, - geometry - FROM simplify_vw_z8 - ) union_geom -GROUP BY subclass, - cid - ); - -CREATE INDEX ON osm_landcover_gen_z8 USING GIST (geometry); - --- etldoc: osm_landcover_polygon -> osm_landcover_gen_z9 -CREATE TABLE osm_landcover_gen_z9 AS -( - WITH simplify_vw_z9 AS - ( - SELECT subclass, - ST_MakeValid( - ST_SimplifyVW(geometry, zres(9)*zres(9))) AS geometry - FROM osm_landcover_polygon - WHERE ST_Area(geometry) > power(zres(7),2) - ) - -SELECT subclass, ST_MakeValid( (ST_dump( ST_Union(geometry))).geom) AS geometry FROM ( - SELECT subclass, + SELECT subclass, ST_ClusterDBSCAN(geometry, eps := 0, minpoints := 1) over () AS cid, geometry - FROM simplify_vw_z9 - WHERE ST_NPoints(geometry) < 50) union_geom50 - GROUP BY subclass, + FROM simplify_vw_z13 + WHERE ST_NPoints(geometry) < 50 AND subclass IN ('wood', 'forest')) union_geom50 + GROUP BY subclass, cid - UNION ALL - SELECT subclass, st_makevalid((ST_dump(ST_Union(geometry))).geom) AS geometry + UNION ALL + SELECT subclass, ST_MakeValid((ST_dump(ST_Union(geometry))).geom) AS geometry FROM ( - SELECT subclass, - ST_ClusterDBSCAN(geometry, eps := 0, minpoints := 1) over () AS cid, geometry - FROM simplify_vw_z9 - WHERE ST_NPoints(geometry) >= 50 AND ST_NPoints(geometry) < 300) union_geom300 - GROUP BY subclass, - cid - UNION ALL - SELECT subclass, - ST_MakeValid( - (ST_Dump( - ST_Union(geometry))).geom) AS geometry - FROM ( - SELECT subclass, + SELECT subclass, ST_ClusterDBSCAN(geometry, eps := 0, minpoints := 1) over () AS cid, geometry - FROM simplify_vw_z9 - WHERE ST_NPoints(geometry) >= 300) union_geom_rest - GROUP BY subclass, + FROM simplify_vw_z13 + WHERE ST_NPoints(geometry) >= 50 AND ST_NPoints(geometry) < 300 AND subclass IN ('wood', 'forest')) union_geom300 + GROUP BY subclass, cid + UNION ALL + SELECT subclass, + geometry + FROM simplify_vw_z13 + WHERE (ST_NPoints(geometry) >= 300 AND subclass IN ('wood', 'forest')) OR (subclass NOT IN ('wood', 'forest')) ); -CREATE INDEX ON osm_landcover_gen_z9 USING GIST (geometry); +CREATE INDEX ON osm_landcover_gen_z13 USING GIST (geometry); --- etldoc: osm_landcover_polygon -> osm_landcover_gen_z10 -CREATE TABLE osm_landcover_gen_z10 AS + +-- etldoc: osm_landcover_polygon -> osm_landcover_gen_z12 +CREATE TABLE simplify_vw_z12 AS ( - WITH simplify_vw_z10 AS - ( - SELECT subclass, - ST_MakeValid( - ST_SimplifyVW(geometry, zres(10)*zres(10))) AS geometry - FROM osm_landcover_polygon - WHERE ST_Area(geometry) > power(zres(8),2) - ) + SELECT subclass, + ST_MakeValid( + ST_SnapToGrid( + ST_SimplifyVW(geometry, power(zres(12),2)), + 0.001)) AS geometry + FROM simplify_vw_z13 + WHERE ST_Area(geometry) > power(zres(9),2) +); +CREATE INDEX ON simplify_vw_z12 USING GIST (geometry); -SELECT subclass, +CREATE TABLE osm_landcover_gen_z12 AS +( +SELECT subclass, ST_MakeValid( (ST_dump( ST_Union(geometry))).geom) AS geometry FROM ( - SELECT subclass, + SELECT subclass, ST_ClusterDBSCAN(geometry, eps := 0, minpoints := 1) over () AS cid, geometry - FROM simplify_vw_z10 - WHERE ST_NPoints(geometry) < 50) union_geom50 - GROUP BY subclass, + FROM simplify_vw_z12 + WHERE ST_NPoints(geometry) < 50 AND subclass IN ('wood', 'forest')) union_geom50 + GROUP BY subclass, cid - UNION ALL - SELECT subclass, st_makevalid((ST_dump(ST_Union(geometry))).geom) AS geometry + UNION ALL + SELECT subclass, ST_MakeValid((ST_dump(ST_Union(geometry))).geom) AS geometry FROM ( - SELECT subclass, + SELECT subclass, ST_ClusterDBSCAN(geometry, eps := 0, minpoints := 1) over () AS cid, geometry - FROM simplify_vw_z10 - WHERE ST_NPoints(geometry) >= 50 AND ST_NPoints(geometry) < 300) union_geom300 - GROUP BY subclass, + FROM simplify_vw_z12 + WHERE ST_NPoints(geometry) >= 50 AND ST_NPoints(geometry) < 300 AND subclass IN ('wood', 'forest')) union_geom300 + GROUP BY subclass, cid - UNION ALL + UNION ALL SELECT subclass, geometry - FROM simplify_vw_z10 - WHERE ST_NPoints(geometry) >= 300 + FROM simplify_vw_z12 + WHERE (ST_NPoints(geometry) >= 300 AND subclass IN ('wood', 'forest')) OR (subclass NOT IN ('wood', 'forest')) ); -CREATE INDEX ON osm_landcover_gen_z10 USING GIST (geometry); +CREATE INDEX ON osm_landcover_gen_z12 USING GIST (geometry); + -- etldoc: osm_landcover_polygon -> osm_landcover_gen_z11 -CREATE TABLE osm_landcover_gen_z11 AS +CREATE TABLE simplify_vw_z11 AS ( - WITH simplify_vw_z11 AS - ( - SELECT subclass, - ST_MakeValid( - ST_SimplifyVW(geometry, zres(11)*zres(11))) AS geometry - FROM osm_landcover_polygon - WHERE ST_Area(geometry) > power(zres(8),2) - ) + SELECT subclass, + ST_MakeValid( + ST_SnapToGrid( + ST_SimplifyVW(geometry, power(zres(11),2)), + 0.001)) AS geometry + FROM simplify_vw_z12 + WHERE ST_Area(geometry) > power(zres(8),2) +); +CREATE INDEX ON simplify_vw_z11 USING GIST (geometry); -SELECT subclass, +CREATE TABLE osm_landcover_gen_z11 AS +( +SELECT subclass, ST_MakeValid( (ST_dump( ST_Union(geometry))).geom) AS geometry FROM ( - SELECT subclass, + SELECT subclass, ST_ClusterDBSCAN(geometry, eps := 0, minpoints := 1) over () AS cid, geometry - FROM simplify_vw_z11 - WHERE ST_NPoints(geometry) < 50) union_geom50 - GROUP BY subclass, + FROM simplify_vw_z11 + WHERE ST_NPoints(geometry) < 50 AND subclass IN ('wood', 'forest')) union_geom50 + GROUP BY subclass, cid - UNION ALL - SELECT subclass, st_makevalid((ST_dump(ST_Union(geometry))).geom) AS geometry + UNION ALL + SELECT subclass, ST_MakeValid((ST_dump(ST_Union(geometry))).geom) AS geometry FROM ( - SELECT subclass, + SELECT subclass, ST_ClusterDBSCAN(geometry, eps := 0, minpoints := 1) over () AS cid, geometry - FROM simplify_vw_z11 - WHERE ST_NPoints(geometry) >= 50 AND ST_NPoints(geometry) < 300) union_geom300 - GROUP BY subclass, + FROM simplify_vw_z11 + WHERE ST_NPoints(geometry) >= 50 AND ST_NPoints(geometry) < 300 AND subclass IN ('wood', 'forest')) union_geom300 + GROUP BY subclass, cid - UNION ALL + UNION ALL SELECT subclass, geometry FROM simplify_vw_z11 - WHERE ST_NPoints(geometry) >= 300 + WHERE (ST_NPoints(geometry) >= 300 AND subclass IN ('wood', 'forest')) OR (subclass NOT IN ('wood', 'forest')) ); CREATE INDEX ON osm_landcover_gen_z11 USING GIST (geometry); --- etldoc: osm_landcover_polygon -> osm_landcover_gen_z12 -CREATE TABLE osm_landcover_gen_z12 AS + + +-- etldoc: osm_landcover_polygon -> osm_landcover_gen_z10 +CREATE TABLE simplify_vw_z10 AS ( - WITH simplify_vw_z12 AS - ( - SELECT subclass, - ST_MakeValid( - ST_SimplifyVW(geometry, zres(12)*zres(12))) AS geometry - FROM osm_landcover_polygon - WHERE ST_Area(geometry) > power(zres(9),2) - ) + SELECT subclass, + ST_MakeValid( + ST_SnapToGrid( + ST_SimplifyVW(geometry, power(zres(10),2)), + 0.001)) AS geometry + FROM simplify_vw_z11 + WHERE ST_Area(geometry) > power(zres(8),2) +); +CREATE INDEX ON simplify_vw_z10 USING GIST (geometry); -SELECT subclass, +CREATE TABLE osm_landcover_gen_z10 AS +( +SELECT subclass, ST_MakeValid( (ST_dump( ST_Union(geometry))).geom) AS geometry FROM ( - SELECT subclass, + SELECT subclass, ST_ClusterDBSCAN(geometry, eps := 0, minpoints := 1) over () AS cid, geometry - FROM simplify_vw_z12 - WHERE ST_NPoints(geometry) < 50) union_geom50 - GROUP BY subclass, + FROM simplify_vw_z10 + WHERE ST_NPoints(geometry) < 50 AND subclass IN ('wood', 'forest')) union_geom50 + GROUP BY subclass, cid - UNION ALL - SELECT subclass, st_makevalid((ST_dump(ST_Union(geometry))).geom) AS geometry + UNION ALL + SELECT subclass, ST_MakeValid((ST_dump(ST_Union(geometry))).geom) AS geometry FROM ( - SELECT subclass, + SELECT subclass, ST_ClusterDBSCAN(geometry, eps := 0, minpoints := 1) over () AS cid, geometry - FROM simplify_vw_z12 - WHERE ST_NPoints(geometry) >= 50 AND ST_NPoints(geometry) < 300) union_geom300 - GROUP BY subclass, + FROM simplify_vw_z10 + WHERE ST_NPoints(geometry) >= 50 AND ST_NPoints(geometry) < 300 AND subclass IN ('wood', 'forest')) union_geom300 + GROUP BY subclass, cid - UNION ALL + UNION ALL SELECT subclass, geometry - FROM simplify_vw_z12 - WHERE ST_NPoints(geometry) >= 300 + FROM simplify_vw_z10 + WHERE (ST_NPoints(geometry) >= 300 AND subclass IN ('wood', 'forest')) OR (subclass IN ('wood', 'forest')) ); -CREATE INDEX ON osm_landcover_gen_z12 USING GIST (geometry); +CREATE INDEX ON osm_landcover_gen_z10 USING GIST (geometry); --- etldoc: osm_landcover_polygon -> osm_landcover_gen_z13 -CREATE TABLE osm_landcover_gen_z13 AS + +-- etldoc: osm_landcover_polygon -> osm_landcover_gen_z9 +CREATE TABLE simplify_vw_z9 AS ( - WITH simplify_vw_z13 AS - ( - SELECT subclass, - ST_MakeValid( - ST_SimplifyVW(geometry, zres(13)*zres(13))) AS geometry - FROM osm_landcover_polygon - WHERE ST_Area(geometry) > power(zres(10),2) - ) + SELECT subclass, + ST_MakeValid( + ST_SnapToGrid( + ST_SimplifyVW(geometry, power(zres(9),2)), + 0.001)) AS geometry + FROM simplify_vw_z10 + WHERE ST_Area(geometry) > power(zres(7),2) +); +CREATE INDEX ON simplify_vw_z9 USING GIST (geometry); +CREATE TABLE osm_landcover_gen_z9 AS +( SELECT subclass, ST_MakeValid( (ST_dump( ST_Union(geometry))).geom) AS geometry FROM ( - SELECT subclass, + SELECT subclass, ST_ClusterDBSCAN(geometry, eps := 0, minpoints := 1) over () AS cid, geometry - FROM simplify_vw_z13 - WHERE ST_NPoints(geometry) < 50) union_geom50 - GROUP BY subclass, + FROM simplify_vw_z9 + WHERE ST_NPoints(geometry) < 50 AND subclass IN ('wood', 'forest')) union_geom50 + GROUP BY subclass, cid - UNION ALL - SELECT subclass, st_makevalid((ST_dump(ST_Union(geometry))).geom) AS geometry + UNION ALL + SELECT subclass, ST_MakeValid((ST_dump(ST_Union(geometry))).geom) AS geometry + FROM ( + SELECT subclass, + ST_ClusterDBSCAN(geometry, eps := 0, minpoints := 1) over () AS cid, geometry + FROM simplify_vw_z9 + WHERE ST_NPoints(geometry) >= 50 AND ST_NPoints(geometry) < 300 AND subclass IN ('wood', 'forest')) union_geom300 + GROUP BY subclass, + cid + UNION ALL + SELECT subclass, + ST_MakeValid( + (ST_Dump( + ST_Union(geometry))).geom) AS geometry FROM ( - SELECT subclass, + SELECT subclass, ST_ClusterDBSCAN(geometry, eps := 0, minpoints := 1) over () AS cid, geometry - FROM simplify_vw_z13 - WHERE ST_NPoints(geometry) >= 50 AND ST_NPoints(geometry) < 300) union_geom300 - GROUP BY subclass, + FROM simplify_vw_z9 + WHERE ST_NPoints(geometry) >= 300 AND subclass IN ('wood', 'forest')) union_geom_rest + GROUP BY subclass, cid - UNION ALL + UNION ALL SELECT subclass, geometry - FROM simplify_vw_z13 - WHERE ST_NPoints(geometry) >= 300 + FROM simplify_vw_z9 + WHERE subclass NOT IN ('wood', 'forest') + ); + +CREATE INDEX ON osm_landcover_gen_z9 USING GIST (geometry); + + +-- etldoc: osm_landcover_polygon -> osm_landcover_gen_z8 +CREATE TABLE simplify_vw_z8 AS +( + SELECT subclass, + ST_MakeValid( + ST_SnapToGrid( + ST_SimplifyVW(geometry, power(zres(8),2)), + 0.001)) AS geometry + FROM simplify_vw_z9 + WHERE ST_Area(geometry) > power(zres(6),2) + ); +CREATE INDEX ON simplify_vw_z8 USING GIST (geometry); + +CREATE TABLE osm_landcover_gen_z8 AS +( +SELECT subclass, + ST_MakeValid( + (ST_Dump( + ST_Union(geometry))).geom) AS geometry + FROM + ( + SELECT subclass, + ST_ClusterDBSCAN(geometry, eps := 0, minpoints := 1) OVER () AS cid, + geometry + FROM simplify_vw_z8 + ) union_geom + GROUP BY subclass, + cid + UNION ALL + SELECT subclass, + geometry + FROM simplify_vw_z8 + WHERE subclass NOT IN ('wood', 'forest') + ); + +CREATE INDEX ON osm_landcover_gen_z8 USING GIST (geometry); + + +-- etldoc: osm_landcover_polygon -> osm_landcover_gen_z7 +CREATE TABLE simplify_vw_z7 AS +( + SELECT subclass, + ST_MakeValid( + ST_SnapToGrid( + ST_SimplifyVW(geometry, power(zres(7),2)), + 0.001)) AS geometry + FROM simplify_vw_z8 + WHERE ST_Area(geometry) > power(zres(5),2) +); +CREATE INDEX ON simplify_vw_z7 USING GIST (geometry); + +CREATE TABLE osm_landcover_gen_z7 AS +( +SELECT subclass, + ST_MakeValid( + (ST_Dump( + ST_Union(geometry))).geom) AS geometry + FROM + ( + SELECT subclass, + ST_ClusterDBSCAN(geometry, eps := 0, minpoints := 1) OVER () AS cid, + geometry + FROM simplify_vw_z7 + ) union_geom +GROUP BY subclass, + cid ); -CREATE INDEX ON osm_landcover_gen_z13 USING GIST (geometry); \ No newline at end of file +CREATE INDEX ON osm_landcover_gen_z7 USING GIST (geometry); + +DROP TABLE IF EXISTS simplify_vw_z7 CASCADE; +DROP TABLE IF EXISTS simplify_vw_z8 CASCADE; +DROP TABLE IF EXISTS simplify_vw_z9 CASCADE; +DROP TABLE IF EXISTS simplify_vw_z10 CASCADE; +DROP TABLE IF EXISTS simplify_vw_z11 CASCADE; +DROP TABLE IF EXISTS simplify_vw_z12 CASCADE; +DROP TABLE IF EXISTS simplify_vw_z13 CASCADE; From 7841c3e85404b1b52d4a3913dcadfb7c95e90fd5 Mon Sep 17 00:00:00 2001 From: lazaa32 Date: Thu, 19 Nov 2020 13:06:26 +0100 Subject: [PATCH 2/2] Indent AND. --- layers/landcover/generalized.sql | 51 ++++++++++++++++++++++---------- 1 file changed, 35 insertions(+), 16 deletions(-) diff --git a/layers/landcover/generalized.sql b/layers/landcover/generalized.sql index d024b4d10..536b0b873 100644 --- a/layers/landcover/generalized.sql +++ b/layers/landcover/generalized.sql @@ -36,7 +36,8 @@ SELECT subclass, SELECT subclass, ST_ClusterDBSCAN(geometry, eps := 0, minpoints := 1) over () AS cid, geometry FROM simplify_vw_z13 - WHERE ST_NPoints(geometry) < 50 AND subclass IN ('wood', 'forest')) union_geom50 + WHERE ST_NPoints(geometry) < 50 + AND subclass IN ('wood', 'forest')) union_geom50 GROUP BY subclass, cid UNION ALL @@ -45,14 +46,17 @@ SELECT subclass, SELECT subclass, ST_ClusterDBSCAN(geometry, eps := 0, minpoints := 1) over () AS cid, geometry FROM simplify_vw_z13 - WHERE ST_NPoints(geometry) >= 50 AND ST_NPoints(geometry) < 300 AND subclass IN ('wood', 'forest')) union_geom300 + WHERE ST_NPoints(geometry) >= 50 + AND ST_NPoints(geometry) < 300 + AND subclass IN ('wood', 'forest')) union_geom300 GROUP BY subclass, cid UNION ALL SELECT subclass, geometry FROM simplify_vw_z13 - WHERE (ST_NPoints(geometry) >= 300 AND subclass IN ('wood', 'forest')) OR (subclass NOT IN ('wood', 'forest')) + WHERE (ST_NPoints(geometry) >= 300 AND subclass IN ('wood', 'forest')) + OR (subclass NOT IN ('wood', 'forest')) ); CREATE INDEX ON osm_landcover_gen_z13 USING GIST (geometry); @@ -81,7 +85,8 @@ SELECT subclass, SELECT subclass, ST_ClusterDBSCAN(geometry, eps := 0, minpoints := 1) over () AS cid, geometry FROM simplify_vw_z12 - WHERE ST_NPoints(geometry) < 50 AND subclass IN ('wood', 'forest')) union_geom50 + WHERE ST_NPoints(geometry) < 50 + AND subclass IN ('wood', 'forest')) union_geom50 GROUP BY subclass, cid UNION ALL @@ -90,14 +95,17 @@ SELECT subclass, SELECT subclass, ST_ClusterDBSCAN(geometry, eps := 0, minpoints := 1) over () AS cid, geometry FROM simplify_vw_z12 - WHERE ST_NPoints(geometry) >= 50 AND ST_NPoints(geometry) < 300 AND subclass IN ('wood', 'forest')) union_geom300 + WHERE ST_NPoints(geometry) >= 50 + AND ST_NPoints(geometry) < 300 + AND subclass IN ('wood', 'forest')) union_geom300 GROUP BY subclass, cid UNION ALL SELECT subclass, geometry FROM simplify_vw_z12 - WHERE (ST_NPoints(geometry) >= 300 AND subclass IN ('wood', 'forest')) OR (subclass NOT IN ('wood', 'forest')) + WHERE (ST_NPoints(geometry) >= 300 AND subclass IN ('wood', 'forest')) + OR (subclass NOT IN ('wood', 'forest')) ); CREATE INDEX ON osm_landcover_gen_z12 USING GIST (geometry); @@ -126,7 +134,8 @@ SELECT subclass, SELECT subclass, ST_ClusterDBSCAN(geometry, eps := 0, minpoints := 1) over () AS cid, geometry FROM simplify_vw_z11 - WHERE ST_NPoints(geometry) < 50 AND subclass IN ('wood', 'forest')) union_geom50 + WHERE ST_NPoints(geometry) < 50 + AND subclass IN ('wood', 'forest')) union_geom50 GROUP BY subclass, cid UNION ALL @@ -135,20 +144,22 @@ SELECT subclass, SELECT subclass, ST_ClusterDBSCAN(geometry, eps := 0, minpoints := 1) over () AS cid, geometry FROM simplify_vw_z11 - WHERE ST_NPoints(geometry) >= 50 AND ST_NPoints(geometry) < 300 AND subclass IN ('wood', 'forest')) union_geom300 + WHERE ST_NPoints(geometry) >= 50 + AND ST_NPoints(geometry) < 300 + AND subclass IN ('wood', 'forest')) union_geom300 GROUP BY subclass, cid UNION ALL SELECT subclass, geometry FROM simplify_vw_z11 - WHERE (ST_NPoints(geometry) >= 300 AND subclass IN ('wood', 'forest')) OR (subclass NOT IN ('wood', 'forest')) + WHERE (ST_NPoints(geometry) >= 300 AND subclass IN ('wood', 'forest')) + OR (subclass NOT IN ('wood', 'forest')) ); CREATE INDEX ON osm_landcover_gen_z11 USING GIST (geometry); - -- etldoc: osm_landcover_polygon -> osm_landcover_gen_z10 CREATE TABLE simplify_vw_z10 AS ( @@ -172,7 +183,8 @@ SELECT subclass, SELECT subclass, ST_ClusterDBSCAN(geometry, eps := 0, minpoints := 1) over () AS cid, geometry FROM simplify_vw_z10 - WHERE ST_NPoints(geometry) < 50 AND subclass IN ('wood', 'forest')) union_geom50 + WHERE ST_NPoints(geometry) < 50 + AND subclass IN ('wood', 'forest')) union_geom50 GROUP BY subclass, cid UNION ALL @@ -181,14 +193,17 @@ SELECT subclass, SELECT subclass, ST_ClusterDBSCAN(geometry, eps := 0, minpoints := 1) over () AS cid, geometry FROM simplify_vw_z10 - WHERE ST_NPoints(geometry) >= 50 AND ST_NPoints(geometry) < 300 AND subclass IN ('wood', 'forest')) union_geom300 + WHERE ST_NPoints(geometry) >= 50 + AND ST_NPoints(geometry) < 300 + AND subclass IN ('wood', 'forest')) union_geom300 GROUP BY subclass, cid UNION ALL SELECT subclass, geometry FROM simplify_vw_z10 - WHERE (ST_NPoints(geometry) >= 300 AND subclass IN ('wood', 'forest')) OR (subclass IN ('wood', 'forest')) + WHERE (ST_NPoints(geometry) >= 300 AND subclass IN ('wood', 'forest')) + OR (subclass IN ('wood', 'forest')) ); CREATE INDEX ON osm_landcover_gen_z10 USING GIST (geometry); @@ -217,7 +232,8 @@ SELECT subclass, SELECT subclass, ST_ClusterDBSCAN(geometry, eps := 0, minpoints := 1) over () AS cid, geometry FROM simplify_vw_z9 - WHERE ST_NPoints(geometry) < 50 AND subclass IN ('wood', 'forest')) union_geom50 + WHERE ST_NPoints(geometry) < 50 + AND subclass IN ('wood', 'forest')) union_geom50 GROUP BY subclass, cid UNION ALL @@ -226,7 +242,9 @@ SELECT subclass, SELECT subclass, ST_ClusterDBSCAN(geometry, eps := 0, minpoints := 1) over () AS cid, geometry FROM simplify_vw_z9 - WHERE ST_NPoints(geometry) >= 50 AND ST_NPoints(geometry) < 300 AND subclass IN ('wood', 'forest')) union_geom300 + WHERE ST_NPoints(geometry) >= 50 + AND ST_NPoints(geometry) < 300 + AND subclass IN ('wood', 'forest')) union_geom300 GROUP BY subclass, cid UNION ALL @@ -238,7 +256,8 @@ SELECT subclass, SELECT subclass, ST_ClusterDBSCAN(geometry, eps := 0, minpoints := 1) over () AS cid, geometry FROM simplify_vw_z9 - WHERE ST_NPoints(geometry) >= 300 AND subclass IN ('wood', 'forest')) union_geom_rest + WHERE ST_NPoints(geometry) >= 300 + AND subclass IN ('wood', 'forest')) union_geom_rest GROUP BY subclass, cid UNION ALL