Giter Site home page Giter Site logo

cmdalbem / ciclomapa Goto Github PK

View Code? Open in Web Editor NEW
72.0 72.0 7.0 24.49 MB

Beautiful, interactive & open bike maps of Brazilian cities. Powered by OpenStreetMap.

Home Page: https://ciclomapa.org.br

License: GNU General Public License v3.0

JavaScript 90.47% HTML 1.40% CSS 5.81% Less 2.32%
bike-data bike-parking bike-path bike-rental bike-sharing cycling hacktoberfest mapbox openstreetmap osm react webapp

ciclomapa's People

Contributors

cmdalbem avatar dependabot[bot] avatar lguima avatar willemarcel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

ciclomapa's Issues

Dados do Rio de Janeiro (e outras cidades) não conseguem ser atualizados com OSM

Olá, Tudo bem?

Tentei atualizar os dados do Rio de Janeiro no ciclomapa, mas ele fica eternamente atualizando e não importa os dados do OSM.

Estou tentando desde o dia 3 de janeiro até a presente data (5 de janeiro) e não consigo puxar os dados do OSM através do botão de atualizar dados do site. Ainda diz que são dados de 34 dias atrás.

Não sei como resolver o problema, mas fica aqui o registro.

Adicionar possibilidade de resolver comentário

Fiz algumas mudanças sugeridas por comentários, porém não há uma maneira de marcar o comentário como resolvido.

Uma possibilidade seria fazer integração com o OSM e criar uma nota usando a API. Quando a nota for resolvida, o comentário seria removido também do ciclomapa.

Exemplo de nota no OSM: https://www.openstreetmap.org/note/2734308
Documentação da API: https://wiki.openstreetmap.org/wiki/API_v0.6#Create_a_new_note:_Create:_POST_.2Fapi.2F0.6.2Fnotes

Melhorias de SEO

Existem várias oportunidades de melhorar o SEO do CicloMapa, garantindo assim que pessoas encontrem o site mais facilmente assim como nosso conteúdo:

  • Fazer cada cidade parecer como se fosse uma página diferente, criando uma URL unica pra cada uma e alterando dinamicamente tags como title e description
  • Fazer cada elemento de mapa (ciclovia, bicicletário, etc.) ser vista como uma página
  • Checar se todos textos da UI estejam visíveis pras ferramentas de busca. Ex: explicações das métricas, texto do "Sobre", etc.

Não exibir calçadas na camada "Proibido"

Os elementos no iD Calçada e Calçadão não tem acesso especificado para bicicletas, mas tem usuários que especificam explicitamente a proibição - "bicycle=no" - ou a necessidade de desmontar - "bicycle=dismount". Quando estas etiquetas são utilizadas, os trechos passam a aparecer no CicloMapa na camada "Proibido".

A questão levantada é que em todas as calçadas já é obrigatório por lei desmontar esteja isso mapeado explicitamente ou não, então não faria sentido aparecer todas as calçadas nesta camada (caso estejam todas com acesso à bicicleta mapeado). Talvez aparecer os calçadões não teria problema.

Para solucionar este problema, o filtro da camada "Proibido" deveria desconsiderar as vias com etiquetas "highway=footway" + "footway=sidewalk".

P.S.:Questão levantada no grupo do Telegram "Comunidade CicloMapa"

Lembrar posição anterior do usuário

Hoje em dia o app sempre abre no local default, que é Fortaleza. Poderíamos estar salvando localmente a última posição (lat, long e zoom) do usuário pra abrir o app de novo de onde ele estava.

Add internationalization

The test version of ciclomapa is already supporting cities outside Brazil, let's add support for internationalization?

I have experience doing it with react-intl and I can try to implement it. As we don't have many views, I believe it will be simple.

Melhorar experiência para cidades desatualizadas há muito tempo

Hoje se um usuário acessa uma cidade que está com os dados muito deatualizados, digamos, há mais de alguns meses, ele pode não saber disso e acabar tomando decisões em cima disso.

Algumas ideias inicias (adicionem mais!):

  • Forçar atualizar automaticamente com o OSM
  • Chamar atenção (mudar cor, mostrar tooltip) do menu que mostra quando foi atualizado pela última vez
  • Mostrar notificação regular só chamando atenção pra esse fato (talvez com call-to-action pra já atualizar?)
  • Chamar atenção quando o usuário fizer download
  • Atualizar automaticamente todas cidades (ou pelo menos as capitais ou as mais acessadas) de tempos em tempos (#6)

Tratamento especial para ciclovias dentro do parques

Deveriam ciclovias dentro de parques serem consideradas ciclovias mesmo?
Em discussões da equipe com a comunidade achamos que ciclovias desconectadas do resto da rede deveriam ser consideradas "Trilhas" - porém esse nome seria meio ruim também.

Melhoria de etiquetas de ciclorrotas

Opa Cristiano, primeiramente parabéns pelo trabalho!

Uma coisinha que acho que é erro (não aparece no CicloMapa): referente às ciclorrotas, há a etiqueta cycleway:both=shared_lane (e suas variantes: cycleway:left=shared_lane e cycleway:right=shared_lane) para expressar o lado permitido do ciclismo.

E pelo que entendi da Wiki (e passando uma query no Overpass), usando essa etiqueta não é necessário (talvez nem permitido?) usar cycleway=shared_lane.

Imagino que seja só questão de adicionar aqueles 3 primeiros casos nos filtros?

Exemplo de via que não aparece no Ciclomapa.

(ou talvez eu tenha etiquetado errado hehe)

Use tooltips that call attention to new features

Sometimes we develop new features that we find that might interest most users but it might not call too much attention on the UI for recurrent users.

We'd like also to have some control to show these tooltips only once, and probably only for users who had accessed CicloMapa already before.

Some references of libraries to try:

Medir e mostrar comprimento total das vias por cidade

Ideia para trazer mais visibilidade aos dados de cada cidade e facilitar o trabalho de jornalistas etc. que não precisarão calcular na mão essa métrica.

image

Requisitos

  • Levar em consideração toda estrutura cicloviária da cidade, e não apenas o que está atualmente na tela.
  • Garantir que o cálculo é correto e preciso. Por exemplo: não contar duas vezes avenidas de duas mãos (mais detalhes sobre isso com o Felipe)
  • Salvar no banco de dados, junto com a estrutura em si, essas medidas, desta forma só precisando calculá-las na hora de atualizar o banco.
  • As "miniaturas" na legenda (as barrinhas coloridas) devem se redimensionar automaticamente para refletir a proporção dos diferentes tipos de estruturas nas cidades. Plus: suavizar as transições do redimensionamento das barrinhas.

Tecnologia

Aqui estão algumas ideias de libs que fazem cálculos geométricos com GeoJSON:

Trabalho em andamento

Branch: https://github.com/cmdalbem/ciclomapa/tree/turf

Adição de região metropolitana de Lisboa

Opa pessoal,

Falando com o Felipe Alves, é capaz de eu ter de apresentar e dar um minicurso sobre mapeamento cicloviário para algumas cidades da região metropolitana de Lisboa (incluindo a capital).

Seria legal ter o Ciclomapa disponível nessas regiões, pois mostraria de maneira facilitada como anda a malha dessas cidades.

Uma facilidade é praticamente a não-necessidade de tradução hehe

(Issues relacionadas: #43 e #18).

Feature toggling

Implementar alguma forma de habilitar condicionalmente certas features para simular um "ambiente de homologação" para testar novas funcionalidades em produção sem impactar usuários finais.
A solução poderia ser tão simples quanto um parâmetro de URL (tipo /?env=beta) que ativa uma variável global, que por conseguinte é testada pelas funcionalidades que queremos testar.

Exemplo: gostaríamos de poder habilitar facilmente a feature de mensuração de comprimentos de camadas (#7) em produção para a equipe testá-la, antes de lançá-la para o público geral.

Mais camadas com pontos de interesse (oficinas, bicicletários, ...)

Outros POIs (Points of Interest) que podem fazer sentido pra nós:

Considerados infraestrutura cicloviária

Outros pontos de interesse

o que mais...?

Estratégias

Há (pelo menos) duas maneiras diferentes como podemos integrar esses novos POIs no mapa:

  1. Puxar pelo Overpass, do mesmo jeito que já fazemos com ciclovias etc., e elas poderiam ser baixadas junto no GeoJSON e ter interatividade.
  2. Adicionar no tileset do Mapbox, o que é muito mais performático e tem bastante flexibilidade de customização porém não é interativo nem pode ser baixado. Além disso nem tudo que é do OSM é disponível na camada de dados do Mapbox.

Referências

image
Origem: https://www.mapzen.com/blog/bike-map-v2/

image
Origem: https://www.cyclosm.org/

image
Origem: http://www.ta.org.br/ciclorio/

image
Origem: http://mijndev.openstreetmap.nl/~ligfietser/fiets/index.html

image
Fonte: Mapa Cicloviário de Campo Grande

Registrar usuários que fazem download dos dados

Isso nos permitira monitorar melhor o perfil e até contactar usuários que fazem download dos dados, que é uma das principais interações e, portanto, métricas de sucesso do CicloMapa.
Penso que teria vaaarias maneiras de implementar isso, indo desde o mais simples que seria um campo de texto pra pessoa preencher quando faz download, até mais complexo implementando um sistema de cadastro e login mais completinho.

Atualizador recorrente automático de dados

Hoje em dia para atualizar o banco de dados com os dados mais recentes do OSM o usuário deve manualmente clicar no botão de "Atualizar".

image

Idealmente gostaríamos que essas atualizações fossem automáticas e ocorressem o mais frequentemente possível (digamos, a cada 5 minutos).

Pra inspiração, o script abaixo pode ser rodado no console e ele irá atualizar as cidades listadas no array de cities:

const cities = [
    'Aracaju, Sergipe, Brasil',
    'Belém, Pará, Brasil',
    'Belo Horizonte, Minas Gerais, Brasil',
    'Boa Vista, Roraima, Brasil',
    'Brasília, Distrito Federal, Brasil',
    'Campo Grande, Mato Grosso do Sul, Brasil',
    'Cuiabá, Mato Grosso, Brasil',
    'Curitiba, Paraná, Brasil',
    'Florianópolis, Santa Catarina, Brasil',
    'Fortaleza, Ceará, Brasil',
    'Goiânia, Goiás, Brasil',
    'João Pessoa, Paraíba, Brasil',
    'Macapá, Amapá, Brasil',
    'Maceió, Alagoas, Brasil',
    'Manaus, Amazonas, Brasil',
    'Natal, Rio Grande do Norte, Brasil',
    'Olinda, Pernambuco, Brasil',
    'Palmas, Tocantins, Brasil',
    'Paulista, Pernambuco, Brasil',
    'Porto Alegre, Rio Grande do Sul, Brasil',
    'Porto Velho, Rondônia, Brasil',
    'Recife, Pernambuco, Brasil',
    'Rio Branco, Acre, Brasil',
    'Rio de Janeiro, Rio de Janeiro, Brasil',
    'Salvador, Bahia, Brasil',
    'Sao Luis, Maranhão, Brasil',
    'São Paulo, São Paulo, Brasil',
    'Teresina, Piauí, Brasil',
    'Vitória, Espírito Santo, Brasil',
]

// Task that retrieves and processes data from OSM
const task = name => {
    ciclomapa.setState({ loading: true });
    return ciclomapa.getDataFromOSM({areaName: name});
}

// Apply the task iteratively to the cities in the array
cities.reduce((promiseChain, name) => {
    return promiseChain.then(chainResults =>
        task(name).then(currentResult =>
            [...chainResults, currentResult]
        )
    );
}, Promise.resolve([])).then(arrayOfResults => {
    console.log('All done!');
});

OSM às vezes não retorna dados

image

Tive uma ideia pra mitigar esse problema e não deixar esse bug do OSM afetar nosso app. Vou adicionar uma regra que, se o OSM retornar vazio pra uma cidade que já tínhamos dados, então eu ignoro esse retorno (não sobreescrevo o banco de dados com isso), aviso o usuário que o OSM está passando por problemas desconhecidos e peço pra tentar novamente mais tarde.

Add an open license

It would be good if we could license the code as GPL or other open source license

Estender áreas metropolitanas

Atualmente se você escolhe uma grande cidade como Recife, São Paulo ou Porto Alegre você só visualiza as ciclovias que estão na própria cidade e algumas ficam cortadas no meio porque entram na área de uma cidade vizinha mas que é da área metropolitana.

Exemplo: Recife & Olinda

image

image

Escrever um README pro projeto

Simples assim. :)

...mas o que deveria ter nesse Readme? O que são boas práticas e bons exemplos de bons Readmes de projetos Open Source?

Travessias aparecem como ciclovia ou calçada compartilhada, faz mais sentido aparecerem como ciclofaixa

Existem diferentes formas de se mapear travessias cicloviárias no OSM. Por exemplo:

  • Os elementos no iD "Travessia de bicicleta marcada", Travessia de bicicleta não marcada", ou "Travessia de pedestres com ciclovia", possuem as etiquetas "highway=cycleway" + "cycleway=crossing". Por causa da etiqueta principal "highway=cycleway", o CicloMapa classifica como ciclovia;

  • Os elementos no iD "Travessia de pedestres ..." (não marcada, elevada, etc), ou "Faixa de pedestres", ou "Faixa de pedestres elevada" possuem as etiquetas "highway=footway" + "footway=crossing". Se incluir nestes elementos a etiqueta "bicycle=designated" para mapear a travessia de bicicleta no mesmo elemento, o CicloMapa classifica como calçada compartilhada, por causa das etiquetas ""highway=footway" + "bicycle=designated".

A solução para este problema seria atualizar o filtro para ciclovias e calçadas compartilhadas, excluindo destas camadas as situações com "cycleway=crossing" ou "footway=crossing", e incluindo estas situações na camada de ciclofaixas.

Talvez precise explorar um pouco mais para ver se existem outras combinações que cairiam nesta mesma situação

Estimular edição em locais mal mapeados

Quando a cidade tiver uma quantidade baixa de dados (não sei exatamente a métrica), mostrar um diálogo estimulando o usuário a aprender sobre o OSM e algum material sobre edição.

Adicionar testes automatizados (programação)

O projeto já evoluiu bastante e o código já está bem complexo, acho que já está mais do que na hora de implementar testes!

Faz bastante tempo que não implemento testes em software no mercado, então agradeceria quem estiver um pouco mais inteirado das mais recentes melhores práticas e puder ajudar a nos aconselhar em como fazer isso :)

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.