Giter Site home page Giter Site logo

osm-codes / gridmap-draftpages Goto Github PK

View Code? Open in Web Editor NEW
0.0 0.0 0.0 66.87 MB

experimental and internal testing pages to map visualization and grid exploring

Home Page: https://afa.codes/

License: Apache License 2.0

HTML 0.91% JavaScript 36.87% CSS 3.47% Hack 0.24% PHP 56.57% PLpgSQL 0.12% Perl 0.01% Raku 0.01% Terra 0.01% Turing 0.01% Less 0.78% Python 0.05% Makefile 0.01% Shell 0.03% Lua 0.82% Ruby 0.05% EJS 0.01% Mustache 0.05% Gherkin 0.02% Vue 0.01%
geoc geocoding geocoding-api geolocation

gridmap-draftpages's People

Contributors

0e1 avatar ppkrauss avatar

Watchers

 avatar  avatar

gridmap-draftpages's Issues

Usar a fonte FE-Schrift na interface de mapa ou apresentação do geocódigo

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.

image

Em mapas ou interfaces de apresentação de pontos pode-se adotar a expressão sem o "~", em duas linhas:
image

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:

image

image

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:

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.

Tooltip de subgrade não mostra dados corretos

Ao clicar em subgrade (ou ponto dela como ilustrado) as informações não são consistentes com o município. No caso de "ponto" ainda é "descritor de célula indicada pelo seu ponto central", então requer área.

image

Coordenadas fora do lugar

ATUAL ERRADO:

image

CORRETO:
image

Pendente:

  • Posicionar corretamente com alinhamento dirieto na primeira linha
  • eliminar u e reduzir a 3 ou 4 dígitos decimais as coordenadas
  • on-mouse-over avisando "click here to get Latitude-Longitude in Geo URI standard" e direcionando para href="#id_caixa_inoput_geo"

Outro Bug: a função generateSelectLevel() está sendo disparada de maneira redundante, depois a generateSelectLevel2() sobrescreve.

Remover ou diferenciar tooltip da celula-mãe subre a subgrade

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.

image

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.

Isolar cidades com cobertura e overlay revisados

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"

image


Listar aqui nesta issue as cidades com cobertura revisada (podem eventualmente permanecer apenas com cobertura-base). Status:

  • Conferir: não foi conferido/validado
  • Revisar: a conferência resultou em recomendação para se revisar o overlay
  • Aprovado: overlay (ou sua ausência) aprovado.
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
... ... ... ...

Apenas jurisdições validas no modo Postal

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

image

Seletor de níveis com erro

Não pode apresentar níveis superiores à jurisdição: o melhor é que todos esses parâmetros sejam fornecidos pela API no ato da carga da jurisdição, garantindo que o Javascript nunca erre.

image

Resolver melhor defaults e/ou mecanismo zoon-click

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.

Solução do zoom-click

Alternativa 1:

Repetir o comportamento da URL ponto nos eventos de zoom-click. Talvez já resolva.

Alternativa 2:

  • no caso de entrada na página por URL de ponto, desabilitar zoom-click por default.
  • no caso de entrada pela cidade, o primeiro click é um evento especial, precisa gerar comportamento da URL-ponto, fazendo o zoom-click adequado e depois desabilitando. Mas só o primeiro click depois da "entrada vazia".

Solução do click-célula

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.

image

Seletor de restrição na base16h do OSMcode cientifico

Depois de quebrar o seletor de Level em duas linhas
image

Incluir um filtro de "tipo de nível". image

Tipos, faceis de definir numa planilha Excel:

  • all L = Todos
  • L 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, pulando

Garantir a disponibilidade do tileLayer

Recentemente o cinza sumiu, e persiste o bug das fotos de satélite terem sumido.

image

Importante:

  1. Usar somente fontes de tileLayer confiáveis.
    portanto remover opções que não sejam estáveis e confiáveis
  2. Negociar como ONG ou pagar se necessário para não comprometer a aplicação inteira.

Proposta do changeLevel_byDigits

Sobre a interface amarela de click "+1 dígito" e "-1 dígito",
image

Ainda em teste, requer aprovação. Se aprovada, sugere-se as seguintes avaliações e correções:

  1. Avaliar se a interface seria mais amigável (ou indiferente) se não recarregasse a página inteira. Se for, aí o algoritmo fica mais complexo.
  2. Obter o valor máximo de dígitos, para max correto do país.
  3. Decidir, para a interface inteira, se os erros serão anunciados por alert() ou modal dialog.
  4. Conferir se existe alguma falha, ao combinar com outras ações.
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!');
}

Possível efeito colateral em células de fronteira

Por exemplo em https://osm.codes/BR-SP-SaoPaulo~47M ao clicar em "+1" vai cair numa célula externa

image

image

Grade Cientifica falha no mais-digitos

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).

Protocolo geo muito lento

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.

postal, usar nome da cidade no titulo

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"

image

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.

Requisitos pendentes para postal

Mapa

  • Não permitir navegação para fora da bbox da cidade

Side-box

Passo1

  • No na side-box usar a seguinte sequência de botões meios para interatividade:

image

  • reordenar conforme ilustrado
  • manter cidade como seletor e prefixo ISO (ex. 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.
  • seletor grid deixa de ser "grid" e passa a ser apenas um seletor com 3 opções, {"sem grade", "com grade", "grade de pontos"}.
  • na box do botão "Encode" vale tudo, por exemplo urn:lex:sp;sp;campinas ou geo:olc:589JHCXV+WG. Em particular o click de mouse fornece GeoURI.
  • demais controles mais em baixo isolados.

Passo 2

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).

Remover indicador de numero de digitos na Postal

A indicação de dígitos aparece com erro e, como são poucos níveis, não será mais necessária.

image

PS: importante ajustar para a cidade apenas os níveis maiores (células menores), conforme requisito pendente.

QRcode da célula

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úscula
HTTP://OSM.CODES/BR-SP-CAMPINAS~3S3 é válida e resulta em
image
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
image
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
image

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 image.

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

Problema QR code
Grafar tudo em minúsculas, https://osm.codes/br-sp-campinas~3s3 (ou misturar maiúsculas com minúsculas), aumentou a PNG para 87x87 image
Grafar otimizadamente, HTTPS://OSM.CODES/BR-SP-CAMPINAS~3S3
mas mudando a configuração de "level L" para o seguinte, "level M". Vai ser mais resiliente mas vai consumir 29x29 módulos ao invés de 25. A PNG subiu para 87x87.
image

Gerador e referências:

APIs:

Na API garantir que a resolução seja a mesma em qualquer leitor.

Permitindo digitos além do máximo no geocódigo

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").

Bug no geocódigo postal, ver análogo no científico:
image

limitar a 1 metro de lado

Não permitir célula ou subgrade inferior... Talvez na própria API PostgreSQL limitar. Na inferior a 1m.

image

Persistir as subgrades

Na interface de grade cientifica voltar ao que era antes: persistir as grades, ou seja, vários clicks, não só o corrente.

image

formatar geocodigo na visualização principal

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.') )

Passar geo URI para dentro do mapa

A atual gasta uma linha inteira, não pode.

image

Ideal dentro do mapa. Uma solução seria passar para o canto superior direito,

image

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.