vue-componentes/scripts/baixar-geojson-ibge.sh
2026-06-06 18:54:24 -03:00

52 lines
1.9 KiB
Bash
Executable file

#!/usr/bin/env bash
# ──────────────────────────────────────────────────────────────
# Baixa GeoJSON de estados e municípios da API do IBGE (v3)
# e organiza na estrutura esperada pelo componente EliEntradaCoordenadas.
#
# Estrutura gerada:
# ./geo/
# ├── estados.geojson
# └── municipios/
# ├── 11.geojson (RO)
# ├── 12.geojson (AC)
# └── ...
#
# Após rodar, faça upload para o MinIO:
# mc cp --recursive ./geo/ paiol/geo/
# ──────────────────────────────────────────────────────────────
set -euo pipefail
BASE_URL="https://servicodados.ibge.gov.br/api/v3/malhas"
QUALIDADE="minima"
FORMATO="application/vnd.geo+json"
SAIDA="./geo"
UFS=(11 12 13 14 15 16 17 21 22 23 24 25 26 27 28 29 31 32 33 35 41 42 43 50 51 52 53)
mkdir -p "$SAIDA/municipios"
echo "📥 Baixando estados..."
curl -sS "$BASE_URL/paises/BR?intrarregiao=UF&formato=$FORMATO&qualidade=$QUALIDADE" \
-o "$SAIDA/estados.geojson"
TAMANHO=$(du -h "$SAIDA/estados.geojson" | cut -f1)
echo " ✅ estados.geojson ($TAMANHO)"
echo ""
echo "📥 Baixando municípios por UF..."
for UF in "${UFS[@]}"; do
echo -n " UF $UF... "
curl -sS "$BASE_URL/estados/$UF?intrarregiao=municipio&formato=$FORMATO&qualidade=$QUALIDADE" \
-o "$SAIDA/municipios/$UF.geojson"
TAMANHO=$(du -h "$SAIDA/municipios/$UF.geojson" | cut -f1)
echo "✅ ($TAMANHO)"
sleep 0.5 # respeitar rate-limit do IBGE
done
echo ""
TOTAL=$(du -sh "$SAIDA" | cut -f1)
echo "🎉 Concluído! Total: $TOTAL em $SAIDA/"
echo ""
echo "Para enviar ao MinIO:"
echo " mc alias set paiol https://paiol.idz.one CHAVE_ACESSO CHAVE_SECRETA"
echo " mc cp --recursive $SAIDA/ paiol/geo/"