Generalized Geohash/pt: mudanças entre as edições

De Documentação
Sem resumo de edição
Sem resumo de edição
Linha 1: Linha 1:
'''Generalização do algoritmo [[wikipedia:Geohash|Geohash]]''' para [[wikipedia:geocode|geocódigos]]. Vantagens:
'''Generalização do algoritmo [[wikipedia:Geohash|Geohash]]''' para [[wikipedia:geocode|geocódigos]], '''GGeohash''' (do inglês ''Generalized Geohash''). Vantagens:


*permite representações interna (no computador) e humana (como geocódigo) totalmente compatíveis e consistentes.
*permite representações interna (no computador) e humana (como geocódigo) totalmente compatíveis e consistentes.
Linha 5: Linha 5:
*permite escolha entre 2 curvas de preenchimento (Morton e Hilbert).
*permite escolha entre 2 curvas de preenchimento (Morton e Hilbert).
Opções podem ser visualizadas em https://osm-codes.github.io/Sfc4q/
Opções podem ser visualizadas em https://osm-codes.github.io/Sfc4q/
[[File:Comparing-Geoash-Hilbert.png|center|800px]]
Uma das '''inovações''' do GGeohash foi a introdução do conceito de níveis-meio (''L''½), que se originam da  união geométrica de células consecutivas do nível inteiro, permitindo formalizar melhor o Geohash clássico e  viabilizando a curva de Hilbert. Nos níveis-meio as curvas Morton e Hilbert são degeneradas.


Entre as várias opções, uma delas corresponde ao "Geohash clássico". As opções surgem da combinação dos seguintes parâmetros:
Entre as várias opções, uma delas corresponde ao "Geohash clássico". As opções surgem da combinação dos seguintes parâmetros:
Linha 29: Linha 33:
|
|
|
|
|}
== Alfabetos e convenções da notação ==
Lista completa de IDs com respectivos alfabetos-padrão para [[Wikipedia:Positional notation|conversão de base]], para as “bases potência de 2”. O identificador é a concatenação da palavra “base” com o valor da base e o rótulo (''label'') do alfabeto. O número de ''bits'' por dígito é o [[Wikipedia:Binary logarithm|log<sub>2</sub>]] da base. No alfabeto foram destacados os ''nhDigits'' (''non-hierarchical digits'') conforme notação [[Código natural|Natural Code]].
{| class="wikitable"
|'''base'''
|'''label'''
|'''ID'''
|'''bits'''
|'''alphabet''' (depois do espaço os ''nhDigits'')
|'''Reference standard'''
|-
|2
|js*
|''base2js''
|1
|<code>01</code>
|ECMA-262
|-
|4
|js*
|''base4js''
|2
|<code>0123</code>
|ECMA-262
|-
|4
|h
|''base4h''
|2
|<code>0123 GQ</code>
|ECMA + nhDigits alphabet
|-
|8
|js*
|''base8js''
|3
|<code>01234567</code>
|ECMA-262
|-
|8
|h
|''base8h''
|3
|<code>01234567 GQ HMRV</code>
|ECMA + nhDigits alphabet
|-
|16
|js*
|''base16js''
|4
|<code>0123456789abcdef</code>
|ECMA-262 and <nowiki>RFC 4648</nowiki>/sec8
|-
|16
|h
|''base16h''
|4
|<code>0123456789abcdef GQ HMRV JKNPSTZY</code>
|ECMA + nhDigits alphabet
|-
|32
|hex*
|''base32hex''
|5
|<code>0123456789abcdefghijklmnopqrstuv</code>
|ECMA-262 and <nowiki>RFC 4648</nowiki>/sec7
|-
|32
|ghs
|''base32ghs''
|5
|<code>0123456789bcdefghjkmnpqrstuvwxyz</code>
|Geohash
|-
|32
|nvu
|''base32nvu''
|5
|<code>0123456789BCDFGHJKLMNPQRSTUVWXYZ</code>
|No-Vowels except U (near non-syllabic)
|-
|32
|rfc
|''base32rfc''
|5
|<code>ABCDEFGHIJKLMNOPQRSTUVWXYZ234567</code>
|<nowiki>RFC 4648</nowiki>/sec6
|-
|64
|url*
|''base64url''
|6
|<code>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_</code>
|<nowiki>RFC 4648</nowiki>/sec5
|-
|64
|rfc
|''base64rfc''
|6
|<code>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/</code>
|<nowiki>RFC 4648</nowiki>/sec4
|-
| colspan="6" |<small>(*) default base. For example base32 is interpreted by default as base32hex.</small>
<small>    All base32 here are using with leading zeros, they are valid instances of “restricted hiearchy”, base32rh.</small>
|}
|}

Edição das 07h04min de 8 de maio de 2023

Generalização do algoritmo Geohash para geocódigos, GGeohash (do inglês Generalized Geohash). Vantagens:

  • permite representações interna (no computador) e humana (como geocódigo) totalmente compatíveis e consistentes.
  • permite adequação da representação humana à sua cultura ou preferências do usuário.
  • permite escolha entre 2 curvas de preenchimento (Morton e Hilbert).

Opções podem ser visualizadas em https://osm-codes.github.io/Sfc4q/

Comparing-Geoash-Hilbert.png

Uma das inovações do GGeohash foi a introdução do conceito de níveis-meio (L½), que se originam da união geométrica de células consecutivas do nível inteiro, permitindo formalizar melhor o Geohash clássico e viabilizando a curva de Hilbert. Nos níveis-meio as curvas Morton e Hilbert são degeneradas.

Entre as várias opções, uma delas corresponde ao "Geohash clássico". As opções surgem da combinação dos seguintes parâmetros:

Opção Alternativas Descrição
Número de bits por dígito 1,2,3,4 ou 5 Determina o número de subdivisões da célula e a compatibilidade da notação posicional
Base e alfabeto para humanos base2h, 4h, 8h e 16h ou base32;

e respectivas variantes de al

Base e alfabeto para se representar o geocódigo para humanos, mantendo a compatibilidade com número de dígitos
Curva de preenchimento Morton ou Hilbert Define como será a indexação e ordem da segunda.
...

Alfabetos e convenções da notação

Lista completa de IDs com respectivos alfabetos-padrão para conversão de base, para as “bases potência de 2”. O identificador é a concatenação da palavra “base” com o valor da base e o rótulo (label) do alfabeto. O número de bits por dígito é o log2 da base. No alfabeto foram destacados os nhDigits (non-hierarchical digits) conforme notação Natural Code.

base label ID bits alphabet (depois do espaço os nhDigits) Reference standard
2 js* base2js 1 01 ECMA-262
4 js* base4js 2 0123 ECMA-262
4 h base4h 2 0123 GQ ECMA + nhDigits alphabet
8 js* base8js 3 01234567 ECMA-262
8 h base8h 3 01234567 GQ HMRV ECMA + nhDigits alphabet
16 js* base16js 4 0123456789abcdef ECMA-262 and RFC 4648/sec8
16 h base16h 4 0123456789abcdef GQ HMRV JKNPSTZY ECMA + nhDigits alphabet
32 hex* base32hex 5 0123456789abcdefghijklmnopqrstuv ECMA-262 and RFC 4648/sec7
32 ghs base32ghs 5 0123456789bcdefghjkmnpqrstuvwxyz Geohash
32 nvu base32nvu 5 0123456789BCDFGHJKLMNPQRSTUVWXYZ No-Vowels except U (near non-syllabic)
32 rfc base32rfc 5 ABCDEFGHIJKLMNOPQRSTUVWXYZ234567 RFC 4648/sec6
64 url* base64url 6 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_ RFC 4648/sec5
64 rfc base64rfc 6 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ RFC 4648/sec4
(*) default base. For example base32 is interpreted by default as base32hex.

    All base32 here are using with leading zeros, they are valid instances of “restricted hiearchy”, base32rh.