Skip to content

Otimizar busca de municipio do ponto por not-shared-cell #95

@ppKrauss

Description

@ppKrauss

A vantagem da busca por células interiores (is_inner) é que a busca pode se restringir à BBOX (operador &&), sem conferir a interseção com o polígono. O número de células marcadas com is_inner, todavia, na maior parte dos países, não passa de 30%.

... Esquecemos que o ponto para "estar no município X" não precisa estar "dentro do polígono do município X", basta estar na sua cobertura. Usando essa propriedade podemos trocar o flag por is_not_shared (ou "is_unique"). No Brasil isso significa incluir todas as células de cobertura de litoral e fronteiras, acrescentando mais uns 20% de células municipais.

Conclusão: com a simples troca de flag chegamos nos 50% de comparações por BBOX, e excluimos elas das comparações por interseção.

Importante: a indexação GIST precisaria ser pela operação da busca, is_not_shared OR ST_Intersects(?), mas
  WHERE pt_geom && cell_geom AND (is_not_shared OR ST_Intersects(pt_geom,cell_geom)).

... testar com dois indices, um com outro sem o flag:


Toda célula interior é is_not_shared, mas precisamos expandir. Construção do flag is_not_shared para as células de cobertura municipal (não overlay).

UPDATE t SET is_not_shared=true
WHERE gid IN (SELECT gid FROM cobertura_municipal GROUP BY 1 HAVING COUNT(*)=1)

Problema: isso vale para células de mesmo nível, falta remover as grandes que cobrem as pequenas.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions