2 402
edições
m (→Bibliotecas) |
|||
(8 revisões intermediárias por 2 usuários não estão sendo mostradas) | |||
Linha 19: | Linha 19: | ||
==Implementação== | ==Implementação== | ||
Ver "region cover" (de fato esse é o nome mais popular para a funcionalidade) em | Ver "region cover" (de fato esse é o nome mais popular para a funcionalidade) em [https://igorgatis.github.io/ws2 igorgatis.github.io/ws2] ou [https://s2geometry.io/devguide/examples/coverings.html S2 Covering Examples]. | ||
A '''interseção''' pode ser uma boa referência: | A '''interseção''' pode ser uma boa referência: | ||
Linha 27: | Linha 27: | ||
*'''interseção com tamanhos variávies''': usar o número de células como parâmetro. A função buscaria a menor área de não-interseção, resultando em ''X⁺''. | *'''interseção com tamanhos variávies''': usar o número de células como parâmetro. A função buscaria a menor área de não-interseção, resultando em ''X⁺''. | ||
==Bibliotecas == | ===Bibliotecas === | ||
... No guia dos algoritmos de grade... Ver [https://github.com/AddressForAll/pg_pubLib-v1/tree/main/docs/src-illustrative pg_pubLib-v1/docs/src-illustrative] , mostra como funciona o algoritmo de cobertura com códigos hierárquicos binários (bitstrings). A partir dele foi implementado no PostGIS a [https://github.com/AddressForAll/pg_pubLib-v1/blob/main/docs/pgis-geohash.md solução real para Geohashes]. Ver Cover Functions em https://git.osm.codes/GGeohash (ver issues/1) | ... No guia dos algoritmos de grade... Ver [https://github.com/AddressForAll/pg_pubLib-v1/tree/main/docs/src-illustrative pg_pubLib-v1/docs/src-illustrative] , mostra como funciona o algoritmo de cobertura com códigos hierárquicos binários (bitstrings). A partir dele foi implementado no PostGIS a [https://github.com/AddressForAll/pg_pubLib-v1/blob/main/docs/pgis-geohash.md solução real para Geohashes]. Ver Cover Functions em https://git.osm.codes/GGeohash (ver issues/1) | ||
Linha 34: | Linha 34: | ||
[[Arquivo:Osmc-coverBR-byGeohashes.png|center]] | [[Arquivo:Osmc-coverBR-byGeohashes.png|center]] | ||
== Uso prático nos projetos == | |||
A principal aplicação nos projetos AddressForAll é a "cobertura de jurisdição" no [[OSMC]]. | |||
Ver também [[DNGS/Poliedro das nações]] e [[osmc:Convenções/Grade_científica_multifinalitária#Grade_e_Notação_Logística]]. | |||
Construir pagina [[osmc:Convenções/Coberturas]]. | |||
== Generalização e rotulação hierárquica== | |||
[[Arquivo:Mosaic-voronoi-andIndex.png|miniaturadaimagem|Mosaicos são compostos de ladrilhos, seguindo um padrão qualquer, regular ou irregular. <br/>O requisito de P1 é que cubra toda a superfície, sem deixar buracos. Em P1 define-se '''identificador de ladrilhos''': cada ladrilho pode ser identificado por seu nome (ex.cor), mas o mais curto é o rótulo numérico.]] | |||
Operacionalmente a subpavimentação, para que possa ser generalizada, pode partir de um sistema de mosaicos hierárquicos. Na ilustração ao lado o mosaico inicial. Em certas aplicações a rotulação (em destaque) também é importante. | |||
A partição sucessiva, por exemplo de todas as células do mosaico em duas, gera a noção de hierarquica. As células-filha vão sendo rotuladas por um path cuja raiz são os rótulos do mosaico inicial. A rotulação hierárquica cabe também nesta generalização. | |||
[[Arquivo:Mosaic-voronoi-andIndex-subpav-hierarchy.png|centro|semmoldura|480px]] | |||
A subpavimentação é um conceito geral, operacionalmente baseado apenas na noção de conjunto, e conceitualmente o sistema hierárquico de retângulos é extensível para sistema hierárquico de mosaicos irregulares. | |||
Resumindo: | |||
* O mosaico é a cobertura do plano por ladrilhos, ou seja, uma cobertura que não deixa buracos, por polígonos que não se sobrepõe. | |||
* As células do mosaico podem receber IDs (rótulos) | |||
* As células do mosaico podem ser submetidas a uma "subdivisão regular sucessiva" de todas as suas células. Por exemplo subdividir em 2. | |||
* Os IDs das células-filha são paths, e precisam ter como prefixo o ID da célula-mãe. | |||
===Extensão para triangulos e hexagonos=== | |||
Um processo análogo com triângulos é sempre possível, tendo em vista que um triângulo pode ser subdividido em 4 recursivamente, apesar de não poder ser subdibvido em 2 como o quadrilátero. | |||
Já o hexagono, muito usado em [[DGGS]], aparentemente não pode ser submetido a esse tipo de proceso. Ver | |||
*prova de que não existe subpavimentação hexasgobal https://stackoverflow.com/a/759232/287948 | |||
* prova de que na cobertura da esfera é impossível (precisa de pentágonos), https://stackoverflow.com/a/759232/287948 | |||
*ver guia de grades hexagonais, {{xref|Patel13}}, como contra-exemplo: nao apresenta algoritmo de cobertura. | |||
https://gis.stackexchange.com/q/473092/7505 | |||
== Implementações otimizadas == | |||
A partir da grade de maior resolução pode-se depois, por análise de strings apenas, chegar na cobertura hierárquica. | |||
O algoritmos da interseção todavia é pesado. Existe uma opção mais leva que é trocar o "traçado vetorial do PostGIS por traçado na grade". Ver algoritmos, que idealmente seriam convertidos em C: | |||
* [[wikipedia:Bresenham's line algorithm|Bresenham's line algorithm]] | |||
* Bresenham's bold line: http://eugen.dedu.free.fr/projects/bresenham/ | |||
==Ver também== | |||
... | |||
[[Categoria:Conceitos]] |
edições