Obter lista de cidades do IBGE

Publicado por Raimundo Alves Portela (última atualização em 11/06/2012)

[ Hits: 7.187 ]

Homepage: http://portelanet.com

Download getCidadeEstados.sh




Script com objetivo simples: baixar lista de cidades do site do IBGE, com nome, população e área.

Devem existir melhores maneiras de se fazer isso, mas é uma forma de praticar e aprender Shell Script com o uso de arrays ;-)

O script gera arquivos com comandos SQL permitindo que possam ser usados para importar em qualquer banco de dados.

  



Esconder código-fonte

#!/bin/bash
# Criado por: Raimundo Portela <rai3mb@gmail.com>
# Objetivo: baixar dados sobre os municípios direto do IBGE
#------------------------------------------------------------------------------
function func_download() {
   for UF in ac al am ap ba ce df es go ma mg ms mt pa pb pe pi pr rj rn ro rr rs sc se sp to
   do
      wget http://www.ibge.gov.br/cidadesat/ufs/download/${UF}_mapa_e_municipios.pdf
      pdftotext -layout ${UF}_mapa_e_municipios.pdf 
      egrep '[0-9]$' ${UF}_mapa_e_municipios.txt > "$UF".lista
      #rm ${UF}_mapa_e_municipios.pdf 
      rm ${UF}_mapa_e_municipios.txt
   done
}

function func_getDados() {
   for UF in ac al am ap ba ce df es go ma mg ms mt pa pb pe pi pr rj rn ro rr rs sc se sp to
   do
      > "$UF".sql
      while read LINHA
      do
         DADOS=( $( echo $LINHA | sed 's/  / /g' | sed 's/  / /g' | sed 's/  / /g' | sed 's/  / /g' | sed 's/  / /g' ) )   
         PENULTIMO=$(( ${#DADOS[@]} - 2 ))
         ULTIMO=$(( ${#DADOS[@]} - 1 ))
         AREA=${DADOS[$ULTIMO]}
         POPULACAO=${DADOS[$PENULTIMO]}
         for i in $(seq $(( ${#DADOS[@]} - 3 )) )
         do
            NOME[$i - 1]=${DADOS[$i -1]} 
         done
         #sqlite3 "$HOME"/Desktop/municipios.db "INSERT INTO municipios(uf, nome, populacao, area) VALUES('$UF', '${NOME[@]}', $POPULACAO, $AREA);"
         echo "INSERT INTO municipios(uf, nome, populacao, area) VALUES('$UF', '${NOME[@]}', $POPULACAO, $AREA);" >> "$UF".sql
         unset NOME
         unset DADOS
      done < "$UF".lista
   done
}

# faz o download de dados sobres os estados em PDF e gera um arquivo .lista com CIDADE|POPULACAO|AREA
func_download
# coleta os dados dos arquivos .lista e gera um arquivo .sql para posterior uso em Banco de dados
func_getDados

Scripts recomendados

Relógio digital

Regra básica de firewall em shell

AutoLibre

Mostra informações do sistema

Renomeando arquivos de forma padronizada


  

Comentários
[1] Comentário enviado por removido em 11/06/2012 - 11:35h

Taí uma coisa que estava procurando.
Verei como poderei usar.
ADD++

***ADD***
Sem exagerar, verei a possibilidade de serem coletadas as coordenadas geográficas.
***/ADD***

[2] Comentário enviado por ademar111190 em 11/06/2012 - 13:26h

Muito bom !!!!!!!

testei aqui e funcionou perfeitamente :)

[3] Comentário enviado por uberalles em 11/06/2012 - 17:43h

muito bacana.
vai me poupar bastante tempo de click-click.

abs,
.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts