osmc:Metodologia/Algoritmo SQL/Issues: mudanças entre as edições

m
m (solução por ST_Simplify)
Linha 168: Linha 168:
;
;
CREATE FUNCTION public.st_transform_resilient(
CREATE FUNCTION public.st_transform_resilient(
   g geometry,
   g geometry,       -- the input geometry
   srid integer,
   srid integer,     -- target SRID, to transform g
   size_fraction float DEFAULT 0.05,
   size_fraction float DEFAULT 0.05, -- 1/density for target density of points, relative to ST_CharactDiam.
   tolerance float DEFAULT 0 -- 0.00000005
   tolerance float DEFAULT 0 -- e.g. on srid=4326 use 0.00000005
) RETURNS public.geometry
) RETURNS public.geometry
     LANGUAGE sql IMMUTABLE
     LANGUAGE sql IMMUTABLE
AS $f$
AS $f$
  SELECT CASE
  SELECT CASE
       WHEN COALESCE(tolerance,0)>0 THEN -- ST_Simplify(celula) ou
       WHEN COALESCE(size_fraction,0.0)>0.0 AND COALESCE(tolerance,0)>0 THEN
         ST_SimplifyPreserveTopology(geom,tolerance) -- generico
         ST_SimplifyPreserveTopology(geom,tolerance) -- ST_Simplify enough for grid cells
       ELSE geom
       ELSE geom
       END
       END
Linha 185: Linha 185:
     WHEN size>0.0 THEN  ST_Transform(  ST_Segmentize(g,size)  , srid  )
     WHEN size>0.0 THEN  ST_Transform(  ST_Segmentize(g,size)  , srid  )
     ELSE  ST_Transform(g,srid)
     ELSE  ST_Transform(g,srid)
     END geom
     END geom, size
   FROM (
   FROM (
     SELECT CASE
     SELECT CASE
2 384

edições