Using shoreline clipped geoms

This commit is contained in:
antoniocarlon 2018-05-17 16:57:04 +02:00
parent f050c05a55
commit f1668777d5

View File

@ -228,6 +228,12 @@ extent INTEGER DEFAULT 4096, buf INTEGER DEFAULT 256, clip_geom BOOLEAN DEFAULT
RETURNS TABLE (mvt BYTEA) RETURNS TABLE (mvt BYTEA)
AS $$ AS $$
DECLARE DECLARE
state_geoname CONSTANT TEXT DEFAULT 'us.census.tiger.state';
county_geoname CONSTANT TEXT DEFAULT 'us.census.tiger.county';
tract_geoname CONSTANT TEXT DEFAULT 'us.census.tiger.census_tract';
blockgroup_geoname CONSTANT TEXT DEFAULT 'us.census.tiger.block_group';
block_geoname CONSTANT TEXT DEFAULT 'us.census.tiger.block';
mastercard_schema CONSTANT TEXT DEFAULT 'us.mastercard'; mastercard_schema CONSTANT TEXT DEFAULT 'us.mastercard';
mastercard_geoid CONSTANT TEXT DEFAULT 'region_id'; mastercard_geoid CONSTANT TEXT DEFAULT 'region_id';
mastercard_category_column CONSTANT TEXT DEFAULT 'category'; mastercard_category_column CONSTANT TEXT DEFAULT 'category';
@ -256,6 +262,7 @@ DECLARE
geom_relations_do TEXT[]; geom_relations_do TEXT[];
geom_relations_mc TEXT; geom_relations_mc TEXT;
simplification_tolerance NUMERIC DEFAULT 0.0001;
area_normalization TEXT DEFAULT ''; area_normalization TEXT DEFAULT '';
i INTEGER DEFAULT 0; i INTEGER DEFAULT 0;
BEGIN BEGIN
@ -263,6 +270,21 @@ BEGIN
area_normalization := '/area_ratio'; area_normalization := '/area_ratio';
END IF; END IF;
CASE
WHEN geography_level = state_geoname THEN
simplification_tolerance := 0.1;
WHEN geography_level = county_geoname THEN
simplification_tolerance := 0.01;
WHEN geography_level = tract_geoname THEN
simplification_tolerance := 0.001;
WHEN geography_level = blockgroup_geoname THEN
simplification_tolerance := 0.0001;
WHEN geography_level = block_geoname THEN
simplification_tolerance := 0.0001;
ELSE
RETURN;
END CASE;
bounds := cdb_observatory.OBS_GetTileBounds(z, x, y); bounds := cdb_observatory.OBS_GetTileBounds(z, x, y);
geom := ST_MakeEnvelope(bounds[1], bounds[2], bounds[3], bounds[4], 4326); geom := ST_MakeEnvelope(bounds[1], bounds[2], bounds[3], bounds[4], 4326);
ext := ST_MakeBox2D(ST_Point(bounds[1], bounds[2]), ST_Point(bounds[3], bounds[4])); ext := ST_MakeBox2D(ST_Point(bounds[1], bounds[2]), ST_Point(bounds[3], bounds[4]));
@ -270,7 +292,7 @@ BEGIN
---------DO--------- ---------DO---------
getmeta_parameters := '[ '; getmeta_parameters := '[ ';
FOREACH measurement IN ARRAY do_measurements LOOP FOREACH measurement IN ARRAY do_measurements LOOP
getmeta_parameters := getmeta_parameters || '{"numer_id":"' || measurement || '","geom_id":"' || geography_level || '"},'; getmeta_parameters := getmeta_parameters || '{"numer_id":"' || measurement || '","geom_id":"' || geography_level || '_clipped"},';
END LOOP; END LOOP;
getmeta_parameters := substring(getmeta_parameters from 1 for length(getmeta_parameters) - 1) || ' ]'; getmeta_parameters := substring(getmeta_parameters from 1 for length(getmeta_parameters) - 1) || ' ]';
@ -359,7 +381,7 @@ BEGIN
THEN ST_Area($5) / Nullif(ST_Area(%1$s), 0) THEN ST_Area($5) / Nullif(ST_Area(%1$s), 0)
WHEN ST_Within(%1$s, $5) WHEN ST_Within(%1$s, $5)
THEN 1 THEN 1
ELSE ST_Area(cdb_observatory.safe_intersection($5, %1$s)) / Nullif(ST_Area(%1$s), 0) ELSE ST_Area(cdb_observatory.safe_intersection(st_simplifyvw(%1$s, $7), $5)) / Nullif(ST_Area(%1$s), 0)
END area_ratio END area_ratio
FROM %6$s FROM %6$s
%4$s %4$s
@ -371,7 +393,7 @@ BEGIN
geom_colnames, numer_colnames_do, numer_colnames_mc, numer_tablenames_do_outer, numer_tablenames_mc, geom_colnames, numer_colnames_do, numer_colnames_mc, numer_tablenames_do_outer, numer_tablenames_mc,
geom_tablenames, geom_relations_mc, mastercard_table, mastercard_category_column, geom_tablenames, geom_relations_mc, mastercard_table, mastercard_category_column,
numer_colnames_do_normalized, numer_colnames_mc_normalized, geom_geomref_colnames) numer_colnames_do_normalized, numer_colnames_mc_normalized, geom_geomref_colnames)
USING ext, extent, buf, clip_geom, geom, mastercard_category USING ext, extent, buf, clip_geom, geom, mastercard_category, simplification_tolerance
RETURN; RETURN;
END END
$$ LANGUAGE plpgsql PARALLEL RESTRICTED; $$ LANGUAGE plpgsql PARALLEL RESTRICTED;