Após preparar o ambiente do PostgrSQL, é hora de importar os dados do OSM. No site Geofabrik existem vários arquivos de dados onde você pode escolher a área de cobertura desejada, desde todo o planeta até países. Além disso, acessando http://www.openstreetmap.org você poderá baixar os dados de uma área a sua escolha.
Eu vou importar os dados da América do Sul, mas se as coisas ficarem difíceis devido a requisitos de memória e processamento, escolha um arquivo menor. Baixe sempre arquivos tipo PBF.
wget http://download.geofabrik.de/south-america-latest.osm.pbf
Você também vai precisar de um arquivo chamado default.style. Este arquivo vai informar ao programa de importação o que você quer e o que não quer mandar para o banco de dados. Eu não sei o motivo deste arquivo se chamar style, já que não tem nada a ver com estilos, e sim com filtro de dados.
Antes de puxar o gatilho vou explicar uma coisa: o resultado disso tudo será a criação de 4 tabelas em seu banco de dados (vai criar um pouco mais, porém as tabelas do OSM são só 4):
planet_osm_point planet_osm_polygon planet_osm_line planet_osm_roads
Os nomes são intuitivos. O que eu quero explicar é o seguinte: todas as tabelas terão a mesma estrutura, baseado no que você decidir no arquivo default.style. A estrutura do OSM funciona baseada em elementos chamados tags. Cada tag pode possuir uma certa quantidade de valores. O site http://taginfo.openstreetmap.org/ permite consultar todas as tags e seus possíveis valores. A tag amenity, por exemplo, possui a seguinte descrição no site:
For describing useful and important facilities for visitors and residents.
Esta tag possui valores como parking, place_of_worship, school, bank, fuel, etc…

O site descreve em detalhes o que significa cada um destes valores para todas as tags e como eles se relacionam entre si quando agrupados com outras tags para dar sentido à informação.

Podemos encontrar também a informação de onde esta tag é mais frequente observando a “Visão Geral”. O exemplo da imagem acima significa que esta informação pode ocorrer mais frequentemente como pontos. Após a importação dos dados, cada tag irá se tornar uma coluna nas tabelas do OSM e seus valores serão as linhas destas tabelas. Daí pode-se concluir que as tabelas do OSM não são normalizadas e possuem uma vasta quantidade de valores nulos, dependendo da consulta que você fizer.

Consultando estes bancos da tag “amenity”…

…resulta neste mapa
Obviamente existem muito mais bancos na Rua das Laranjeiras (RJ). Isso depende da combinação de valores com outras tags. Nem todos os bancos possuem a tag “addr:street” preenchidas. Nesse caso eu deveria consultar os bancos usando o bounding box das coordenadas geográficas de Laranjeiras. Perto dos nossos bancos existem quatro telefones públicos (dois postes com dois telefones cada). Um na praça e outro perto do Santander. Vamos ligar para eles?

Nesta consulta eu mandei pesquisar tudo da tabela de pontos (a rua e a ciclovia em azul estão na tabela de linhas e a praça na tabela de polígonos) dentro de um raio de 60 metros das coordenadas do Banco do Brasil (serve do Santander também) . Para conseguir estas coordenadas, modifique a consulta dos bancos para:
select "addr:street", amenity, "name" , ST_AsText(way) as coordenadas from planet_osm_point where amenity = 'bank' and "addr:street" = 'Rua das Laranjeiras'
Isso vai mostrar as coordenadas dos elementos encontrados. Bem, o que eu quis deixar claro é a relação entre as tags do OSM e as colunas das tabelas no banco de dados, bem como mostrar que vão existir colunas que não são preenchidas porque não fazem sentido junto com outras informações (o banco não tem operador e o telefone não tem nome). Já deu para notar que, se você não quiser mapas, tudo bem: você terá uma boa massa de dados para fazer todo tipo de consultas interessantes em seus aplicativos.

Algo mais útil: Telefones de farmácias próximas.
Um arquivo default.style irá se parecer com isso:
node,way admin_level text linear node,way aerialway text linear node,way aeroway text polygon node,way amenity text polygon node,way barrier text linear node,way bicycle text linear node,way brand text linear node,way bridge text linear node,way boundary text linear node,way electrified text linear node,way building text polygon
O arquivo original de exemplo contém uma boa descrição do que significam estes valores e como consultar o site taginfo para criar seus próprios critérios de importação.
Como este post já ficou bem grande, vou deixar a importação dos dados do OSM para o próximo.
