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

m
Linha 8: Linha 8:
O projeto como um todo faz uso de 2 sistemas de coordenadas globais:
O projeto como um todo faz uso de 2 sistemas de coordenadas globais:


*'''LatLong''': WGS84 no formato ''default'' [[Geo URI]], ou seja, coordenadas (''latitude'',''longitude'').  
*'''LatLong''': coordenadas de ''latitude'' e ''longitude''. A rigor coordenadas WGS84 no formato ''default'' [[Geo URI]].  


* '''global_cell_id''': global mosaic of DNGS cells. O mosaico global é composto de faces quadrilateras, identificadas pelo prefixo de célula:  
* '''global_cell_id''': global mosaic of DNGS cells. O mosaico global é composto de faces quadrilateras, identificadas pelo prefixo de célula:  
** '''face_id''': chave primária de 12 bits (''SRID'', ''country_id'', ''country_cover_id''),  com 8 bits para  ''SRID×country_id'' e 4 bits para  ''country_cover_id''.  
** '''face_id''': chave primária de 12 bits (''SRID'', ''country_id'', ''country_cover_id''),  com 8 bits para  ''SRID×country_id'' e 4 bits para  ''country_cover_id''.  
** '''cell_id''': identificador local de célula, dado por ''bit string'' com tamanho variável. Começa pelo vazio, que resulta na própria ''country_cover_id'', como grade nível ''L0''. Depois a cada 2 bits temos um nível hierárquico (''L1'', ''L2'', ...) até o nível ''Lmax'' ou completar 56 bits (limite para [[Código_Natural/Representação_interna#hInt|hInt]]). Em caso de fronteira apenas porções do território nacional são válidas, mas essa validade é presumida.
** '''cell_id''': identificador local de célula, dado por ''bit string'' com tamanho variável. Começa pelo vazio, que resulta na própria ''country_cover_id'', como grade nível ''L0''. Depois a cada 2 bits temos um nível hierárquico (''L1'', ''L2'', ...) até o nível ''Lmax'' ou completar 56 bits (limite para [[Código_Natural/Representação_interna#hInt|hInt]]). Em caso de fronteira apenas porções do território nacional são válidas, mas essa validade é presumida.
** '''XY''':  a cada conjunto de países com mesmo SRID pode-se adotar as mesmas coordenadas planas, de modo que XY é opcional a LatLong como entrada em tal contexto. <br/>Não confundir com o plano canônico ''XY'' limitado a cada face.


Na maior parte das aplicações o ''global_cell_id'' pode ser substituído pelo ''national_cell_id'', onde ''face_id''=''country_cover_id'', ou seja, ''SRID'' e ''country_id'' são constantes. Para as aplicações globais foram definidos os métodos [[osmc:Metodologia/Algoritmo_SQL#Seletor_de_projeção|seletor de projeção]] e [[osmc:Metodologia/Algoritmo_SQL#Seletor de jurisdição e L0|seletor de jurisdição]], que devolvem a ''face_id'' e seus parâmetros. <br>No padrão DNGS polígonos, linhas e multipontos só podem ser definidos no interior de uma nação.
Na maior parte das aplicações o ''global_cell_id'' pode ser simplificado para um identificador local da nação, com ''face_id''=''country_cover_id'', ou seja, omitindo ''SRID'' e ''country_id'' quando são constantes. Todavia o ganho com isso, por não alterar o total máximo de 64 bits, não justifica a perda de interoperabilidade, sugere-se manter pelo menos internamente no banco de dados.
 
Para as aplicações globais foram definidos os métodos [[osmc:Metodologia/Algoritmo_SQL#Seletor_de_projeção|seletor de projeção]] e [[osmc:Metodologia/Algoritmo_SQL#Seletor de jurisdição e L0|seletor de jurisdição]], que devolvem a ''face_id'' e seus parâmetros. <br>No padrão DNGS polígonos, linhas e multipontos só podem ser definidos no interior de uma nação.


O algoritmo  de [[GGeohash|GGeohash ''encode'' da ''face_id'']] fornece o ''cell_id'' dentro da respectiva face. Esse tipo de algoritmo pode fazer uso outros dois sistemas de coordenadas:
O algoritmo  de [[GGeohash|GGeohash ''encode'' da ''face_id'']] fornece o ''cell_id'' dentro da respectiva face. Esse tipo de algoritmo pode fazer uso outros dois sistemas de coordenadas:


* '''JI0''': cada ''face_id'' pode ser representado por índices ''j0'' e  ''i0'' da grade ''L0'', que por sua vez podem levar à origem <math>(x0_{j0},y0_{i0})</math> de cada célula da cobertura, nas coordenadas da projeção SRID. Na prática o que temos também é <math>(x0_{face\_id},y0_{face\_id})</math> a origem em termos de ''face_id''.
* '''JI0''': cada ''face_id'' pode ser representado por índices ''j0'' e  ''i0'' da grade ''L0'', que por sua vez podem levar à origem <math>(x0_{j0},y0_{i0})</math> de cada célula da cobertura, nas coordenadas da projeção SRID. Na prática o que temos também é <math>(x0_{face\_id},y0_{face\_id})</math> a origem em termos de ''face_id''.
* '''XY''' da ''face_id'': o sistema de coordenadas planas SRID é reescrito para cada ''face_id'', para que inicie em (0,0). Segue a "convenção cartesiana escolar", de X horizontal e Y vertical. Quando discretizado para um certo nível ''L'' pode ser também chamado de ''XYL'', complementar de ''JIL''.
* '''XY''' da ''face_id'' no nível ''L'': o sistema de coordenadas planas SRID é reescrito para cada ''face_id'', para que inicie em (0,0). Segue a "convenção cartesiana escolar", de X horizontal e Y vertical. <br/>Quando discretizado é denominado ''XYLref'', complementar de ''JIL''.
* '''JIL''', índices ''JI'' da ''face_id'' no nível ''L'':  no interior da face, cada célula de nível ''L'' pode ser localizada por seus índices ''j'' e ''i''. O ''encode''/''decode'' de ''cell_id'' é realizado primariamente com essas coordenadas.
* '''JIL''', índices ''J'' e ''I'' da célula-filha da ''face_id'' no nível ''L'':  no interior da face, cada célula de nível ''L'' pode ser localizada por seus índices ''j'' e ''i''. O ''encode''/''decode'' de ''cell_id'' é realizado primariamente com essas coordenadas. Geometricamente cada ''jiL'' pode ser associado univocamente ao retângulo da sua célula, ou a um único ''XYref'' (canto inferior esquerdo) ou ao seu ''XYcenter''.  


O sistema ''JI'' difere da tradição matemática de indexação de matrizes, com elementos&nbsp;<math>a_{ij}</math>, índice&nbsp;''i'' variando nas linhas e ''j''&nbsp;variando nas colunas. A origem tradicional&nbsp;<math>a_{11}</math> é no canto superior esquerdo, enquanto a origem ''XY'' do eixo cartesiano é no canto inferior.
O sistema ''JI'' difere da tradição matemática de indexação de matrizes, com elementos&nbsp;<math>a_{ij}</math>, índice&nbsp;''i'' variando nas linhas e ''j''&nbsp;variando nas colunas. A origem tradicional&nbsp;<math>a_{11}</math> é no canto superior esquerdo, enquanto a origem ''XY'' do eixo cartesiano é no canto inferior.
2 583

edições