osm-codes / gridmap-draftpages Goto Github PK
View Code? Open in Web Editor NEWexperimental and internal testing pages to map visualization and grid exploring
Home Page: https://afa.codes/
License: Apache License 2.0
experimental and internal testing pages to map visualization and grid exploring
Home Page: https://afa.codes/
License: Apache License 2.0
BR-PB
) como link. Quando clica fora do mapa, muda de seletor para link da cidade externa, sugerindo que se pode navegar para ela para obter mais do que área de fronteira.urn:lex:sp;sp;campinas
ou geo:olc:589JHCXV+WG
. Em particular o click de mouse fornece GeoURI.Estudar concorrentes e imaginar como destacar a caixa do geocódigo (ver layout do Eircode, CSS de caixa inferior do PlusCodes, Mapcode etc)
Retornar as informações do ponto ou geocodigo na side-box, não no mapa (exceto se solicitar popup num segundo click sobre o ponto).
Aparentemente carregou codigificação base16h antiga, com zero na frente:
por exemplo https://osm.codes/geo:-5.973992,-35.129019
A atual gasta uma linha inteira, não pode.
Ideal dentro do mapa. Uma solução seria passar para o canto superior direito,
Avaliar: outra solução, tendo em vista a issue 27, seria jogar no rodapé antes (e afastado) da escala.
Além disso, outro requisito, é que quando o nível maior que L14, precisa acrescentar mais um dígito.
A fonte tipográfica utilizada nas placas de carro do Mercosul, FE-Schrift, é comprovadamente mais legível (para humanos e computadores), evitando ambiguidade entre letras. Quando se tratar de geocódigo misto (p. ex. CO-MAG-SantaMaria~3T6L-L1K
), usar, como na placa, o prefixo nominal (CO-MAG-SantaMaria) com tamanho de fonte menor (de 50% a 75%).
Abaixo a comparação do uso da fonte apenas no final do geocódigo, e no geocódigo inteiro, com ou sem ponto de separação — tendo em vista que a fonte não oferece representação de letras minúsculas.
Em mapas ou interfaces de apresentação de pontos pode-se adotar a expressão sem o "~", em duas linhas:
Em placas de numeração predial, onde o contexto é certo e conhecido, pode-se omitir o contexto ou fazer uso do geocódigo absoluto, por exemplo BR~123-XY234Z
.
Todos os símbolos (glifos) da fonte e seu uso típico nas placas de automóveis do Mercosul:
Sempre consultar conteúdos fiáveis em inglês. Quanto ao formatos, no site preferir "WOFF (and its successor WOFF2) are compressed file formats created specifically for web fonts", aos demais como TTF ou OTF. WOFF é de 2009 (rec atualizada em 2012), porém só 30% menos compacto que WOFF2 de 2018 (rec atualizada em 2022), portanto WOFF ainda hoje satisfatório e mais freequentemente disponivel.
Baixar fonte original e testar, opções:
~
nem outras pontuações, nem minúsculas.Testar conforme dev Mozilla/font-fac ou Stack
@font-face {
font-family: 'FE-Schrift';
src: URL('path/FE-Schrift.woff') format('woff');
}
PS: neste link com form download PDF a história do desenvolvimento da fonte lembra que foi também testado para ser leígivel (sem ambiguidades usuais de O-0, I-l, W-vv, etc.) e eficiente com OCR, o que se confirma com a leitura OCR placas do Brasil. O mesmo OCR otimizado para placas estaria otimizado para placas de numeração predial ou textos com descrição de endereço postal.
Experimente usar click com grade, depois de https://osm.codes/BR-SP-SaoPaulo~32
Exemplo de caso que deveria fazer "+" , mas está com bug, https://osm.codes/BR+av
O click no "+" amarelo pode seguir do https://osm.codes/BR+6 para o BR+67
, até o BR+67777777777
, funciona.
Uma estratégia simples para o "+" avança em qualquer situação, é o último dígito quando for "não-hierárquico", e só depois concatenar o 7
(ao invés de apenas concatenar direto). Basta então substituir por nada a regex [^0-9a-f]$
, antes de concatenar.
Nesse caso do av
o último dígito é v
, portanto um dígito não-hierárquico, seria reduzido a a
e então concatenado a 7
, portanto https://osm.codes/BR+a7 que é uma célula menor que av
(portanto comportamento esperado).
Por exemplo https://osm.codes/CO-RIS-Dosquebradas~KX
abre a página sem o poligono da jurisdição: cirar um botão para ver a jurisdição ... Ou carregar e mostrar a partir de um certo zoom-out.
Exemplos: https://osm.codes/BR-BeloHorizonte ou https://osm.codes/BR-3106200
Precisam ter exatamente o mesmo comportamento de interface que o resultado redirecionado. No exemplo o comportamento de https://osm.codes/BR-MG-BeloHorizonte
O padrão QR code oferece diversas alternativas para se configurar, por exemplo caracteres especiais, só números, ou números e letras maiúsculas. A URL de localização por OSMcodes pode ser expressa por QR code de maneira otimizada (menor quantidade de QR-pixels) usando a opção alfanumérica maiúscula. Exemplos:
Descrição e URL | QR code |
---|---|
Região do lado do Taquaral em Campinas, BR-SP-Campinas~3S3 , sua URL maiúsculaHTTP://OSM.CODES/BR-SP-CAMPINAS~3S3 é válida e resulta em |
![]() |
O mesmo 3S3 porém com protocolo HTTPS. O "S" a mais não afeta o tamanho do QR code.HTTPS://OSM.CODES/BR-SP-CAMPINAS~3S3 |
![]() |
Na mesma região a posição da barraca do hotdog com precisão de um metro, HTTPS://OSM.CODES/BR-SP-CAMPINAS~3S1PT61 os 4 caracteres a mais ainda não afetam |
![]() |
Todos os QR codes acima são configurados com "level L" e "version 2". As imagens imagem formato PNG possuem 75x75 pixels (cada do "módulo QR" com 3 pixels de lado). Se fizermos corresponder um módulo de QR com um pixel de PNG teremos 25x25, que é a característica da "version 2". Convertendo o primeiro exemplo acima temos a miniatura .
Por outro lado se o encoder-QRcode não trabalhar com os parâmetros corretos, não haverá otimização, o gasto de QR-módulos será maior. Abaixo todos os exemplos tomam como referência a URL https://osm.codes/BR-SP-Campinas~3S3
Gerador e referências:
APIs:
Na API garantir que a resolução seja a mesma em qualquer leitor.
Para o lado web-service, ver osm-codes/WS#44 (comment)
e parece que já está funcionando!
PS: inclusive falta documentar a sintaxe não-documentada de "converta", por exemplo https://osm.codes/geo:ghs:-22.902330,-47.052539;u=0.5
Para o lado client, pendente fazer funcionar via URL, ex. https://test.osm.codes/geo:olc:589JHCPC+M8
Formatar com pontos, a cada 3 da esquerda para a direita: marcando a hierarquia. Por exemplo AB233CC
como AB2.33C.C
.
Implementações SQL e Javascript:
select regexp_replace('AB233CC', '(...)(?!$)', '\1.', 'g');
const reg = /(...)(?!$)/g
console.log( "AB233CC".replace(reg, '$1.') )
No Brasil a União e os estados não são válidos como jurisdições postais. No Uruguais alguns estados possuem fragmentos válidos.
Isso requer mais uma coluna ou objeto JSON de controle na tabela de jurisdiction: flag is_postal
... Dar baixa em osm-codes/WS#41
A interface hoje, no Brasil, mostra o mapa, mas devia mostrar apenas o seletor. Por exemplo BR-PB deveria abrir sem mapa, e oferecer o seletor de cidades da Paraíba
Ver e fechar indicando que mudamos para cá:
Para futuro: os mapas oficiais não serão deste projeto de "draftPages", serão do site2 e em conformidade com osm-codes/site-v2#4 , osm-codes/site-v2#3 e osm-codes/site-v2#2
O ideal é diferenciar, mudando cor de fundo e de fonte do tooltip da celula-mãe.
Outra possibilidade: ver se permite fundo transparente e letra central (sem direita/esquerda) gigante e por baixa dos demais tooltips.
Outra: não mostrar.
Outra: mostrar tooltip com geocódigo completo.
PS: a interface é hoje usada para criar ilustrações, então se for o caso o melhor é deixar seletor com combinação das várias opções. Talvez o melhor separar navegação científica para o usuário final e navegação para ilustrações... Havia uma issue já pedindo isso.
Primeiro botão ao lado do mapa, "My Location" . Mesmo efeito que click no mapa. Se não estiver no país ou cidade correta, dar erro: se existir perguntar se quer ver.
Testar em https://www.w3schools.com/html/tryit.asp?filename=tryhtml5_geolocation
Ideal apresentar o OSM Codes na navegação parcial do país.
Por exemplo https://osm.codes/BR-SP ou https://osm.codes/BR
Não podem mostrar mapa clicável (exceto por seletor vetorial) nem demais botoes, só os próximos passos da seleção.
Ver 92271e8
Nome da cidade ficando em branco, apesar do link funcionar. Por exemplo https://osm.codes/CO-15001-8GZZN
até redureciona para CO-BOY-Tunja~8GZZN
, mas não parece o nome Tunja.
O zoom da URL, por exemplo https://osm.codes/BR-SP-SaoPaulo~QD1VR está bom!
O problema é quando fazemos o click num ponto do lado, aí fica com zoom demais.
Alternativa 1:
Repetir o comportamento da URL ponto nos eventos de zoom-click. Talvez já resolva.
Alternativa 2:
No caso de células grandes (ex. BR-SP-SaoPaulo~39M), pode manter como está, mas no caso de click-célula pequena, caso de BR-SP-SaoPaulo~39X9G1, não pode dar zoom demais, manter solução anterior.
testar com ateção, por exemplo
https://test.osm.codes/geo:-9.539021,-36.040627;u=100
Da issue externa digital-guard/preserv-BR#130 (comment):
Precisamos entender a cada jurisdição:
Basta testar: precisa arrumar e voltar ao comportamento correto.
Mesmo apertando denovo o botão de mostrar tooltip
Qualquer pais, ex. https://osm.codes/BR-SP-SaoPaulo~3CUYBG
Depois de quebrar o seletor de Level em duas linhas
Incluir um filtro de "tipo de nível".
Tipos, faceis de definir numa planilha Excel:
all L
= TodosL int
= Só inteiros (não entram os níveis-meio)half L
= Só meios (não entram os inteiros)L hex
= Só hexadecimas: níveis cujos geocódigos são hexadecimais puros (nada de dígitos exóticos da base16h)L b32
= Só base32: subconjunto da base16h que intercala inteiros e meios, pulandoNo final da aside incluir <hr/> Equivalent cell in the Scientic grid: <code id="sciCode"></code>
e sempre atualizar com cada novo click.
A API precisa retonar já calculado o valor base16h, mas no futuro o cálculo pode ser feito por Javascript.
Por exemplo o geocódigo postal BR-SP-Campinas~3S2.HW2
representa a mesma célula que o geocódigo científico BR+DFB.702.7F0Q
.
Pode modificar a função de inclusao de pontos, 10m pra baixo dispensa pontos intermediários.
O número de níveis é sempre limitado, se o usuário tenta por Javascript deve dar alerta de erro, se tenta por URL, descartar os dígitos a mais (se possível alertar do descarte).
alert("Número de dígitos no geocódigo excedeu o limite de níveis da grade")
.
Atualmente se uso https://osm.codes/geo:-22.870490,-47.038992;u=100
caio numa situação ambígua, quase um ornitorrinco:
Mesmo para o Brasil continua valendo a situação de "não-terminado" para as cidades com apenas cobertura-base, sem overlay.
É necessário listar em "work cases" apenas as cidades terminadas, deixando as demais em "full list"
Listar aqui nesta issue as cidades com cobertura revisada (podem eventualmente permanecer apenas com cobertura-base). Status:
Cidade | Status | Overlay | Data da última revisão |
---|---|---|---|
BR-PA-Altamira | Aprovado | Sim | 2022-12-10 |
BR-SP-SaoPaulo | Revisar | Sim | 2022-12-10 |
BR-SP-Jandira | Aprovado | Não | 2022-12-10 |
BR-SP-Campinas | Aprovado | Sim | 2022-12-10 |
... | ... | ... | ... |
Para ficar bom #6
precisa fazer aparecer no lado /scientific
Por exemplo
A função Javascript generateSelectLevel()
está duplicada e rodando duas vezes: acompanhar no console, as duas versões são chamadas.
Pendente:
u
e reduzir a 3 ou 4 dígitos decimais as coordenadasOutro Bug: a função generateSelectLevel() está sendo disparada de maneira redundante, depois a generateSelectLevel2() sobrescreve.
Por exemplo https://osm.codes/geo:-22.9045,-47.07365 da ordem de meio minuto. Discutir aqui eventuais estratégias para otimizar.
Já foi comentada antes, em algum lugar, a indexação prévia dos países com geohash-bin de alguns bits, garantindo que células interiores dispensem análise de polígono e demais analisem apenas o trecho de interseção.
As definições de "gridMap pages" se restringem à interface client. Todos os web-services e definições server-side devem ser mantidas e documentadas em WS ou as libs por ele convocadas (ex. GGeohash).
Documentar o fato e mudar conf.nginx
para https://github.com/osm-codes/WS/blob/main/src/conf.nginx
O título fixo do HTML, <aside id="custom-map-controls"><h1>Postal OSMcodes</h1>..
, passaria a ser dinâmico. Por exemplo <h1>Postal OSMcodes of <i></i></h1>
pode ser referenciado por um id
ou por document.querySelector("#custom-map-controls i").innerHTML = "Nome da Cidade"
Como o nome da cidade é agora obrigatório (podendo aparecer alguns segundos depois se for página com URL de célula), sempre teremos um nome após a carga do GeoJSON da cidade.
Sobre a interface amarela de click "+1 dígito" e "-1 dígito",
Ainda em teste, requer aprovação. Se aprovada, sugere-se as seguintes avaliações e correções:
max
correto do país.alert()
ou modal dialog.function changeLevel_byDigits(x) {
const max=8;
const thisURL = window.location.href.replace(/#.*$/,'');
const code = document.getElementById('postalCode').textContent.replace('.','');
let len = (code == null || code == '(click the map)')? 0: code.length;
if (thisURL.indexOf('~')>0) {
if (x>0 && len<max) {
window.location.replace(thisURL+'7');
} else if (x<0 && len>1) {
window.location.replace( thisURL.substring(0,thisURL.length-1) );
} else alert('check code or level limits');
} else alert('Click a point first!');
}
Por exemplo em https://osm.codes/BR-SP-SaoPaulo~47M ao clicar em "+1" vai cair numa célula externa
Exemplo testado em https://osm.codes/BR-SP-Campinas~3SUH
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.