Closed 0e1 closed 2 years ago
Foi criada função buffer_geom
para aplicar buffer_type
à geometria da jurisdição.
buffer_type
considerados:
buffer_type: 1
, valor default, aplica um buffer de aproximadamente 50 metros. Não é necessário informá-lo no _makeconf.yaml. É inserido automaticamente pela função jsonb_mustache_prepare caso não seja informado.
buffer_type: 0
, sem buffer. Para utilizá-lo, deve-se informá-lo no _makeconf.yaml
buffer_type: 2
, aplica um buffer de aproximadamente 500 metros. Para utilizá-lo, deve-se informá-lo no respectivo layer do _makeconf.yaml
Função buffer_geom
:
CREATE OR REPLACE FUNCTION ingest.buffer_geom(geom geometry, buffer_type integer )
RETURNS geometry AS $f$
SELECT
CASE
WHEN buffer_type=0 THEN geom -- no buffer
WHEN buffer_type=1 THEN ST_Buffer(geom,0.0005) -- ~50m
WHEN buffer_type=2 THEN ST_Buffer(geom,0.005) -- ~500m
ELSE geom -- no buffer
END
$f$ LANGUAGE SQL IMMUTABLE;
Parece que tudo resolvido, e já esta sendo útil para detectar problemas de SRID e mistura de jurisdições. Se precisar (agora com @crebollobr), acrescentar mais um buffer_type=3 de 5 km, util para jurisdições continentais (ex. limites do Brasil).
Atualmente, as geometrias das jurisdições são obtidas do OpenStreetMap obtidos em Fevereiro/2022. Especificamente, do pacote de dados https://github.com/digital-guard/preserv-BR/tree/main/data/_pk0004.03. As geometrias, no caso do Brasil tem origem em dados do IBGE, majoritariamente. Ao longo do tempo sofrem modificações pela comunidade. É de se esperar diferença entre geometrias do OSM e as utilizadas pelos doadores de dados.
Assim, será aplicado um buffer às geometrias do OSM por default. Opcionalmente, poderá ser aplicado um buffer maior ou não aplicar nenhum.
Passos a seguir, sendo utilizada a geometria de Porto Alegre/RS como caso: