2 402
edições
(Uma revisão intermediária pelo mesmo usuário não está sendo mostrada) | |||
Linha 121: | Linha 121: | ||
=== Otimização do cálculo de cobertura === | === Otimização do cálculo de cobertura === | ||
Ver [[osmc:Metodologia/Algoritmo_SQL#Tratamento_das_configurações|Tratamento das configurações]] onde já foi discutido e solucionado o tema. Aqui retomando para questões de otimização. | |||
A definição nacional, no caso do Brasil é | A definição nacional, no caso do Brasil é | ||
Linha 148: | Linha 150: | ||
#* <code>x0=x0_from_ij0[ij0]; y0=y0_from_ij0[ij0];</code> ou função de ij0 retorando xy0. | #* <code>x0=x0_from_ij0[ij0]; y0=y0_from_ij0[ij0];</code> ou função de ij0 retorando xy0. | ||
#* <code>cbits0 = grid_br.IJ0_to_vbitL0( ij0, false )</code> | #* <code>cbits0 = grid_br.IJ0_to_vbitL0( ij0, false )</code> | ||
# Código ''cbits'' e geometria da célula do nível ''L'': | # Código ''cbits'' e geometria da célula do nível ''L'': | ||
#* <code>ijL=grid_br.xyL_collapseTo_ijL(x-xy0[1], y-xy0[2], L);</code> | #* <code>ijL=grid_br.xyL_collapseTo_ijL(x-xy0[1], y-xy0[2], L);</code> | ||
#* <code>cbits = cbits0 || ints_to_interleavedbits(ijL)</code> | #* <code>cbits = cbits0 || ints_to_interleavedbits(ijL)</code> | ||
#* <code> | #* <code>grid_br.xyS_draw_anycell( grid_br.ijL_to_xyL(ijL) )</code> | ||
Com um passo a mais para contemplar os casos de pontos sobre cobertura fantasma. Existe uma condição de validade e um ajuste do ponto ao nível: | Com um passo a mais para contemplar os casos de pontos sobre cobertura fantasma. Existe uma condição de validade e um ajuste do ponto ao nível: | ||
Linha 160: | Linha 161: | ||
drop FUNCTION if exists grid_br.xyS_to_cbits(int,int,int,boolean) | drop FUNCTION if exists grid_br.xyS_to_cbits(int,int,int,boolean) | ||
; | ; | ||
-- | -- revisar se é YX! | ||
CREATE FUNCTION grid_br.xyS_to_cbits( | CREATE FUNCTION grid_br.xyS_to_cbits( | ||
y int, | y int, | ||
Linha 169: | Linha 170: | ||
-- falta conferir se lenght(cbits0)>4 AND s<3 | -- falta conferir se lenght(cbits0)>4 AND s<3 | ||
SELECT CASE WHEN use_country_prefix THEN b'0001001100' ELSE b'' END | SELECT CASE WHEN use_country_prefix THEN b'0001001100' ELSE b'' END | ||
|| cbits0 || ints_to_interleavedbits(x-xy0[1], y-xy0[2], | || cbits0 || ints_to_interleavedbits( grid_br.xyS_collapseTo_ijL(x-xy0[1], y-xy0[2], S) ) | ||
FROM ( | FROM ( | ||
SELECT grid_br.ijS_to_xySref(ij0) as xy0, grid_br.IJ0_to_L0(ij0,false) as cbits0 | SELECT grid_br.ijS_to_xySref(ij0) as xy0, grid_br.IJ0_to_L0(ij0,false) as cbits0 |
edições