Pular para o conteúdo

Obter lista de cidades do IBGE

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.
Raimundo Alves Portela rai3mb
Hits: 7.801 Categoria: Shell Script Subcategoria: Introdução
  • Download
  • Nova versão
  • Indicar
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Descrição

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.
Download getCidadeEstados.sh Enviar nova versão
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Script simples para gerenciar netcat

Script de instalação do metasploit no Ubuntu

Mostra informações do sistema

Download de vídeos com youtube-dl

montagem de disquete e cd rom (usando dialog)

#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

Entre na sua conta para comentar.