Do Google Maps ao Open Street Map
O objetivo deste texto é documentar algumas dificuldades encontradas para substituir o framework Google Maps pelo Open Street Map.
Deste modo é necessário que o sistema de mapas tenha uma abrangência global.
A BV FAPESP sempre utilizou o framework de mapas Google Maps, porém o mesmo passou a cobrar pelos seus serviços à partir de Junho de 2018. Isso levou a uma decisão interna do projeto para que fosse efetuada a migração para o Open Street Map.
Um dos requisito para a adoção novo framework, era que as funcionalidades existentes no Google Maps continuassem existindo. Foi feito um estudo onde se verificou que o OSM oferecia a possibilidade de continuação das funcionalidades, à partir de algumas adaptações.
A BV FAPESP implementa, além das funcionalidades oferecidas pelo Google Maps, mais duas camadas para suprir a montagem dos mapas.
osm2pgsql massachusetts.osm.bz2 -d osm -U postgres -P 5432 -S default.style --hstore
Durante este processo, é selecionado o mecanismo que define os estilos que serão utilizados. Por exemplo o carto. (https://github.com/gravitystorm/openstreetmap-carto)
osm2pgsql -d gis --append --slim -G --hstore --tag-transform-script $HOME/openstreetmap-carto/openstreetmap-carto.lua -C 8 --number-processes 100 -S $HOME/openstreetmap-carto/openstreetmap-carto.style $HOME/downloads/south-america-latest.osm.pbf
Esta é uma política do OSM, para que a comunidade internacional envolvida no projeto tenha um reconhecimento horizontal frente as apresentação padrão do OSM.
Esta forma de apresentação porém, encontra restrições na prática, porque torna o mapa praticamente ilegível para quem não domina todas as línguas do mundo, ou aquela parte do mapa que o usuário pretende visualizar e que ele não conheça a escrita da língua.
Existem diferentes maneiras de se abordar essa questão, como por exemplo criar diferentes colunas no banco de dados para se armazenar diferentes língua/escrita. Uma outra abordagem, é utilizar somente o campo padrão de nome, para armazenar o nome na língua/escrita desejada.
No caso da BV FAPESP, foi escolhido armazenar os nomes em uma única coluna no banco de dados, a coluna padrão “name”, seguindo o modelo abaixo:
No comando de linha do script osm2pgsql, que faz a carga dos dados dos arquivos .osm para o banco de dados, deve-se passar um parâmetro de transformação no script openstreetmap-carto.lua para transformar os dados de acordo com o padrão definido.
No nosso caso, bastou incluir as linhas abaixo nas três funções:
if keyvalues["name:pt"] then
keyvalues["name"] = keyvalues["name:pt"]
elseif keyvalues["name:en"] then
keyvalues["name"] = keyvalues["name:en"]
end
A API do OSM oferece um endpoint para marcar o tile que deve ser renovado (re-renderização). Para saber quais tiles devem ser marcados para renovação, é necessário conhecer o mecanismo de coordenadas do OSM.
O sistema de coordenadas do OSM, basicamente lida com 3 dimensões (x,y,z), sendo x o eixo horizontal, y o eixo vertical e z o nível de zoom. Como os pontos de georeferenciamento são dados em latitude e longitude, é necessário converter esses pontos para sistema de coordenadas do OSM.
Mesmo que o mecanismo de conversão de latitude/longitude para coordenadas do OSM não seja preciso, é possível por aproximação renovar os tiles desejados.
Este mapa apresenta os seguintes controles e dados descritos abaixo:
O município de origem é a localização da Instituição Sede de Pesquisa , e a cidade no exterior é a localização relacionada a Instituição no Exterior.
Este mapa apresenta os seguintes controles e dados descritos abaixo:
Este mapa apresenta os seguintes controles e dados descritos abaixo:
Este mapa apresenta os seguintes controles e dados descritos abaixo:
Revisões
Publicado em 28/12/2018 em aprox. 0:30 hr
Referências:1 https://ircama.github.io/osm-carto-tutorials/editing-guidelines/
2 https://www.openstreetmap.org/user/demonshreder/diary/43956
Este texto não é um tutorial do OSM, seja no nível de instalação, configuração ou uso; e se limita a apresentar os detalhes de implementação específicos ao caso de uso do portal web Biblioteca Virtual da FAPESP (BV FAPESP - http://bv.fapesp.br).
Caso de uso
A BV FAPESP utiliza mapas georreferenciados para apresentar informações de concessão de fomentos de Projetos de Pesquisa (Auxílios à Pesquisa e Bolsas de Pesquisa) relacionados às cidades de origem das Instituições-sede de pesquisa e instituições no exterior, quando o Projeto de Pesquisa se relaciona com alguma instituição no exterior.Deste modo é necessário que o sistema de mapas tenha uma abrangência global.
A BV FAPESP sempre utilizou o framework de mapas Google Maps, porém o mesmo passou a cobrar pelos seus serviços à partir de Junho de 2018. Isso levou a uma decisão interna do projeto para que fosse efetuada a migração para o Open Street Map.
Um dos requisito para a adoção novo framework, era que as funcionalidades existentes no Google Maps continuassem existindo. Foi feito um estudo onde se verificou que o OSM oferecia a possibilidade de continuação das funcionalidades, à partir de algumas adaptações.
Tecnologias
O Google Maps disponibiliza para os seus usuários as imagens dos mapas (tiles), um framework Javascript para o controle da apresentação dos mapas em páginas web, e uma API em Javascript que permite a impressão de elementos vetoriais sobre os mapas.A BV FAPESP implementa, além das funcionalidades oferecidas pelo Google Maps, mais duas camadas para suprir a montagem dos mapas.
d3.js
A primeira é uma camada em d3js, um framework para apresentação de elementos vetoriais.JQuery
A segunda é uma camada implementada com a utilização do framework JQuery, para a apresentação de controles de apresentação.Open Street Map
Macro atividades
A implementação do serviço de mapas do Open Street Map na Biblioteca Virtual da FAPESP foi realizada de acordo com as atividades abaixo.- Download do arquivo fonte planet.osm
- Infraestrutura
- Configuração de um servidor para testes e homologação
- Configuração de um servidor para o ambiente de produção
- Instalação e configuração do banco de dados Postrgres
- Configuração do ambiente para importação dos dados
- Carga dos dados do arquivo planet.osm no banco de dados
- Configuração do ambiente para renderização dos tiles
- Pre-renderização
Visão macro dos processos
Dois macro processos envolvem as atividades que são executadas para a execução de um ambiente com o OSM.- Carga no banco de dados
- Renderização dos tiles
osm2pgsql massachusetts.osm.bz2 -d osm -U postgres -P 5432 -S default.style --hstore
Durante este processo, é selecionado o mecanismo que define os estilos que serão utilizados. Por exemplo o carto. (https://github.com/gravitystorm/openstreetmap-carto)
osm2pgsql -d gis --append --slim -G --hstore --tag-transform-script $HOME/openstreetmap-carto/openstreetmap-carto.lua -C 8 --number-processes 100 -S $HOME/openstreetmap-carto/openstreetmap-carto.style $HOME/downloads/south-america-latest.osm.pbf
Definição da língua nos textos
A escrita utilizada nos textos dos mapas do OSM segue como padrão a língua e a escrita original de cada país, conforme pode ser observado no mapa abaixo.Esta é uma política do OSM, para que a comunidade internacional envolvida no projeto tenha um reconhecimento horizontal frente as apresentação padrão do OSM.
Esta forma de apresentação porém, encontra restrições na prática, porque torna o mapa praticamente ilegível para quem não domina todas as línguas do mundo, ou aquela parte do mapa que o usuário pretende visualizar e que ele não conheça a escrita da língua.
Existem diferentes maneiras de se abordar essa questão, como por exemplo criar diferentes colunas no banco de dados para se armazenar diferentes língua/escrita. Uma outra abordagem, é utilizar somente o campo padrão de nome, para armazenar o nome na língua/escrita desejada.
No caso da BV FAPESP, foi escolhido armazenar os nomes em uma única coluna no banco de dados, a coluna padrão “name”, seguindo o modelo abaixo:
- Se existir a nomenclatura em português armazena-se em português
- Senão, se existir a nomenclatura em inglês armazena-se em inglês
- Senão armazena-se na escrita original
No comando de linha do script osm2pgsql, que faz a carga dos dados dos arquivos .osm para o banco de dados, deve-se passar um parâmetro de transformação no script openstreetmap-carto.lua para transformar os dados de acordo com o padrão definido.
No nosso caso, bastou incluir as linhas abaixo nas três funções:
- filter_tags_node
- filter_basic_tags_rel
- filter_tags_way
if keyvalues["name:pt"] then
keyvalues["name"] = keyvalues["name:pt"]
elseif keyvalues["name:en"] then
keyvalues["name"] = keyvalues["name:en"]
end
Renderização parcial
Durante algumas etapas da montagem do ambiente, testes, desenvolvimento ou mesmo em ambiente de produção, é necessário renderizar somente algumas partes dos mapas.A API do OSM oferece um endpoint para marcar o tile que deve ser renovado (re-renderização). Para saber quais tiles devem ser marcados para renovação, é necessário conhecer o mecanismo de coordenadas do OSM.
O sistema de coordenadas do OSM, basicamente lida com 3 dimensões (x,y,z), sendo x o eixo horizontal, y o eixo vertical e z o nível de zoom. Como os pontos de georeferenciamento são dados em latitude e longitude, é necessário converter esses pontos para sistema de coordenadas do OSM.
Mesmo que o mecanismo de conversão de latitude/longitude para coordenadas do OSM não seja preciso, é possível por aproximação renovar os tiles desejados.
Mapas OSM utilizados na Biblioteca Virtual FAPESP
Atualmente, a BV FAPESP apresenta três mapas georeferenciados que utilizam o Open Stree Map.Mapa da distribuição do fomento por município do Estado de São Paulo
Este mapa é utilizado em diversas páginas da BV FAPESP, para apresentar a distribuição dos fomentos nos municípios do Estado de São Paulo.Este mapa apresenta os seguintes controles e dados descritos abaixo:
- OSM
- Tiles (imagens que montam o mapa, com nome das cidades, rios, estradas etc)
- Leaflet
- Controle de zoom (+/-)
- Pan (movimentos laterais)
- Recarregamento dos tiles
- Borda do Estado de São Paulo
- d3js
- Sobreposição dos dados de fomento das cidades (bolotas laranjas)
- JQuery
- Elementos HTML utilizados para dar dinamismo aos dados georeferenciados.
- Apresentação do ano sobre o mapa
Convênios e acordos de cooperação com a FAPESP
Este mapa é utilizado na página de Convênios e Acordos de Cooperação da BV FAPESP https://bv.fapesp.br/pt/acordo_convenio/, e na página de Bolsas no Exterior, https://bv.fapesp.br/pt/11/bolsas-no-exterior/ . Ele apresenta o relacionamento entre os municípios do Estado de São Paulo e as cidades no exterior.O município de origem é a localização da Instituição Sede de Pesquisa , e a cidade no exterior é a localização relacionada a Instituição no Exterior.
Este mapa apresenta os seguintes controles e dados descritos abaixo:
- OSM
- Tiles (imagens que montam o mapa, com nome das cidades, rios, estradas etc)
- Leaflet
- Controle de zoom (+/-)
- Pan (movimentos laterais)
- Recarregamento dos tiles
- Borda do Estado de São Paulo
- Bolas verdes, que identificam a cidade (Brasil e exterior) e a quantidade de fomentos.
- Linhas laranjas, que ligam a cidade no Brasil as cidades no exterior
Mapa de distribuição dos acessos da página
Este mapa é utilizado em diversas páginas da BV FAPESP para mostrar a origem dos acessos das páginas, como por exemplo em https://bv.fapesp.br/pt/10/bolsas-no-brasil/Este mapa apresenta os seguintes controles e dados descritos abaixo:
- OSM
- Tiles (imagens que montam o mapa, com nome das cidades, rios, estradas etc)
- Leaflet
- Controle de zoom (+/-)
- Pan (movimentos laterais)
- Recarregamento dos tiles
- Pinos que identificam as cidades de origem dos acessos das páginas
Mapa de distribuição de resultados de patentes
Este mapa é utilizado na página de Patentes da BV FAPESP para mostrar a distribuição de patentes geradas por cidade referente a Instituição Sede de Pesquisa, https://bv.fapesp.br/pt/papi-nuplitec/Este mapa apresenta os seguintes controles e dados descritos abaixo:
- OSM
- Tiles (imagens que montam o mapa, com nome das cidades, rios, estradas etc)
- Leaflet
- Controle de zoom (+/-)
- Pan (movimentos laterais)
- Recarregamento dos tiles
- Bolas verdes que identificam as cidades e tooltip para mostrar os dados referentes a cidade (legenda)
Revisões
Publicado em 28/12/2018 em aprox. 0:30 hr
Referências:1 https://ircama.github.io/osm-carto-tutorials/editing-guidelines/
2 https://www.openstreetmap.org/user/demonshreder/diary/43956