osm-codes / GGeohash

Generalized Geohash Algorithms of the OSM.codes
Apache License 2.0
0 stars 0 forks source link

Implementar função de máscara de unicidade para nomes #26

Open ppKrauss opened 1 year ago

ppKrauss commented 1 year ago

A função devolve uma grade b32 no entorno do ponto, garantindo a não-repetição de IDs nessa grade, quando designada apenas pelo primeiro dígito.

Discussão

A função seria utilizada em tabelas de conversão de nomes, por exemplo o nome de bairro Sousas em BR-SP-Campinas-Sousas~123 precisa ser canonizado para BR-SP-Campinas~$x123. A tabela de ponto-cobertura, pela unicidade, garante que o dígito 1 será associado a "Q1" e não a "J1".

Na tabela pública de definição de nomes, BR-SP-Campinas-Sousas está associado ao ponto geo:-22.881100,-46.969733 (= BR+dfb74174da7 = BR-SP-Campinas~Q1GMF7), relativo ao centro do bairro/distrito. Internamente, todavia, a resolução do nome pode fazer uso de cache, uma array representando o de-para dos 32 possíveis dígitos com respectivos sufixos. É uma mera operação de conversão de strings, não de células de grade.

Fica a dúvida quanto à escala de definição, por exemplo com a regra "mais 2 dígitos" expressaríamos Q1G como centro, e fica subintendido que é "na escala Q"... Se o centro for expresso por Q1G1 vai para a "escala Q1".

Notas

De forma análoga a #25 a função gera uma cobertura em torno de um ponto, mas com outro objetivo. Aqui buscamos associar o nome (ex. bairro Sousas) a um prefixo adequado, encaixando o sufixo.

É preciso padronizar o grau de encurtamento... Por outro lado OSMcodes é mais flexível quanto aos tamanhos, devido aos overlays. Em meio rual seria o análogo a criar overlays a partir de nomes. No meio urbano, todavia, é um segundo nível de encurtamento.

Por exemplo em Campinas queremos definir um subnome, BR-SP-Campinas-Taquaral, para designar região do entorno do parque. Por exemplo, seria razoável traduzir BR-SP-Campinas-Taquaral~$x para BR-SP-Campinas~N3$x. Mas tanto as fronteiras do parque como do bairro vão para além de N3 (ilustração), então nesse caso não temos o que fazer, será simplemente N... Ainda assim o morador pode julgar razoável denominar o endereço "Taquaral 3RS0" ao invés de "N3RS0".

image

Fica para a comunidade se prefere usar N ou N3 como representante/coberura do bairro Taquaral.

O bairro Sousas não seria diferente, todavia Sousas está metade em "Q" e metade em "J", já não caberia esta estratégia.

Tal como no PlusCodes shortening, a forma mais eficiente e "barata" de se implementar uma tabela de nomes, é fornecendo um ponto de referência para determinar o seu entorno.