52 lines
1.9 KiB
Bash
Executable file
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/"
|