Tutorial passo-a-passo para a instalação do código-fonte do projeto OSM-Stable e base de dados Planet-Brasil do OSM.
A seguir as instruções de como fazer carga ou manutenção do git OSM-Stable-BR. Para maiores detalhes sobre instalação de componentes, ver também manuais de apoio na seção de Referências, e índice dos docs. Para outros elementos passo-a-passo ou exemplos, ver documentação de HowTo: cityGeoJSON descreve como extrair o GeoJSON de um município.
A carga inicial do arquivo brazil-latest.osm
desejado pode ser reproduzida utilizado os metadados e instruções
de brazil-latest.osm.md.
Traga o clone deste repositório para a pasta de sua preferência, aqui supondo /tmp/gits
, e os demais arquivos (principalmente o PBF)
para uma pasta temporária de sandbox, aqui supondo /tmp/pg_io
.
A seguir todos os comandos de terminal partem da pasta stable clonada:
# after wget to /tmp/pg_io/brazil-latest.osm.pbf
# after copy/paste this script replacing the myPassword to the real password
psql postgres://postgres:myPassword@localhost -c "CREATE DATABASE osms0_lake;"
cd /tmp/gits
git clone https://github.com/OSMBrasil/stable.git
cd stable
Supondo o uso de ssh
num servidor UBUNTU 18 LTS. Ao rodar o prepare01-1.sh você estará realizando aproximadamente
psql postgres://postgres:myPassword@localhost/osms0_lake \
-c "CREATE EXTENSION IF NOT EXISTS hstore; CREATE EXTENSION IF NOT EXISTS postgis;"
osm2pgsql -E 4326 -c -d osms0_lake -U postgres -W -H localhost --slim --drop --hstore \
--extra-attributes --hstore-add-index --multi-geometry --number-processes 4 \
--style /usr/local/share/osm2pgsql/empty.style \
/tmp/pg_io/brazil-latest.osm.pbf
Depois do comando osm2pgsql
(e fornecer a senha quando o terminal solicitar) esperar online no terminal, pelo menos 10 minutos... Por isso não pode usar &
no final do comando: prefira realizar o processo em tmux
por segurança.
osm2pgsql version 0.96.0 (64 bit id space)
Password:
Using built-in tag processing pipeline
Using projection SRS 4326 (Latlong)
Setting up table: planet_osm_point
...
Setting up table: planet_osm_nodes
Setting up table: planet_osm_ways
Setting up table: planet_osm_rels
Reading in file: ...
Processing: Node(89942k 232.4k/s) Way(8335k 16.15k/s) Relation(1770 68.08/s) ...
Depois disso, se correu tudo bem, virá o anúncio "Using 4 helper-processes" o que significa que pode fechar o terminal que ele vai rodar em segundo plano (em batch). Termina com a seguinte mensagem:
Completed planet_osm_line
Creating indexes on planet_osm_polygon finished
All indexes on planet_osm_polygon created in 509s
Completed planet_osm_polygon
Stopped table: planet_osm_ways in 562s
Osm2pgsql took 2636s overall
O tempo 2636s equivale a 44 minutos.
Na base osms0_lake
encontram-se os dados origibais "as is" do OSM, e todos no schema public.
Depois de devidamente transformados (por exemplo script de conversão de hstore para JSONb),
os dados essenciais devem migrar para a base osms1_testing
.
... Ver https://stackoverflow.com/a/24082105/287948
A troca da base antiga para a nova precisa ocorrer com o menor impacto possível sobre o serviço online das APIs. Como os webservices apontam para um nome fixo, talvez não tenha problema em fazer DROP DATABASE por alguns minutos, ou durante a madrugada, a cada semestre.
-- após comando de backup temporário de segurança (para backup oficial ver git)
-- pg_dump osms2_stable | gzip > /tmp/osms2_stable-old.sql.gz
DROP DATABASE osm_br_stable;
CREATE DATABASE osms2_stable WITH TEMPLATE osms1_testing;
Usando ferramenta mkdocs. Na raiz do projeto rodar por exemplo a construção das paginas no addressforall.org/osms
:
sudo mkdocs build -d /var/www/addressforall.org/osms
- Osm2pgsql (v1) https://github.com/openstreetmap/osm2pgsql
- PostGIS (v2.5) https://en.wikipedia.org/wiki/PostGIS
- PostgreSQL (v12) https://en.wikipedia.org/wiki/PostgreSQL
Manuais de apoio sugeridos:
- https://www.mankier.com/1/osm2pgsql (2017)
- http://www.volkerschatz.com/net/osm/osm2pgsql-usage.html (year?)
- Outros:
question/13458 cita antiga lista de tags do osm2pgsql, etc.), que cita outra parte do osm2pgsql;
issue 230 cita membros.