Seu estado
Cada aluno trabalha um estado, definido pelo próprio mês de nascimento.
| Você nasceu em | Seu estado | Seus arquivos |
|---|---|---|
| Janeiro, fevereiro ou março | Pará | escolas_PA_2025.csv · municipios_PA_2022.gpkg |
| Abril, maio ou junho | Maranhão | escolas_MA_2025.csv · municipios_MA_2022.gpkg |
| Julho, agosto ou setembro | Goiás | escolas_GO_2025.csv · municipios_GO_2022.gpkg |
| Outubro, novembro ou dezembro | Santa Catarina | escolas_SC_2025.csv · municipios_SC_2022.gpkg |
A correção compara município a município com o estado sorteado. Uma entrega feita com outro estado não tem como ser corrigida.
O caso
Você assessora a Secretaria Estadual de Educação. Existe verba para reformar a instalação sanitária de um número limitado de escolas, e a secretaria decidiu concentrar o esforço em dez municípios, para não pulverizar equipe e licitação. Cabe a você dizer quais dez, e defender a escolha diante de um secretário que vai perguntar por que não outros.
O dado é o Censo Escolar do INEP, uma linha por escola, com a informação de esgotamento sanitário de cada uma. A malha municipal do IBGE dá a geometria. Não existe uma resposta única, e a nota não depende de você acertar uma lista secreta: depende de o critério estar explícito, coerente com o dado e defensável.
Dados
- escolas_<UF>_2025.csv Uma linha por escola em funcionamento. UTF-8, separador ponto e vírgula.oficial
- escolas_<UF>_2025.csvt Arquivo auxiliar de uma linha que declara o tipo de cada coluna do CSV. Precisa ficar na mesma pasta, com o mesmo nome.oficial
- municipios_<UF>_2022.gpkg Camadaoficial
municipios, EPSG:4674, com código, nome e área oficial em km².
CO_ESCOLA, NO_ESCOLA, CO_MUNICIPIO, NO_MUNICIPIO, DEPENDENCIA, LOCALIZACAO, QT_MAT_BAS com as matrículas na educação básica, e cinco indicadores de infraestrutura que valem 0 ou 1: ESGOTO_ADEQ, AGUA_ADEQ, ENERGIA_ADEQ, INTERNET e INTERNET_ALUNOS. Adequado, em esgotamento, é rede pública ou fossa séptica.O que responder
São três perguntas. Cada uma exige um número, um mapa ou uma tabela que a sustente, e um parágrafo de argumento. O parágrafo vale mais que o número.
Pergunta 1 · Quais dez municípios priorizar?
Agregue as escolas por município, cruze com a malha e mapeie onde está o problema. Depois construa duas listas de dez: a dos municípios com maior percentual de escolas sem esgotamento adequado, e a dos municípios com maior número absoluto dessas escolas.
Compare as duas listas e escolha uma para a recomendação. Explique por que a outra foi descartada, e o que a sua escolha deixa de fora.
Antes de escrever, olhe o tamanho dos municípios que apareceram no topo de cada lista. Um percentual calculado sobre poucas escolas se comporta de um jeito específico, e vale entender esse comportamento antes de recomendar qualquer coisa a um secretário.
Pergunta 2 · A prioridade muda se o critério for matrículas?
Refaça o indicador usando matrículas afetadas em vez de número de escolas, e monte a terceira lista de dez. Compare com as duas anteriores.
Responda: quantos municípios aparecem em mais de uma lista, e por que uma escola rural pequena e uma escola urbana grande pesam diferente em cada critério. Feche dizendo qual dos três critérios você levaria à secretaria, agora que viu os três.
Pergunta 3 · Que tamanho tem a sua recomendação, e o que ela não enxerga?
Some a área dos dez municípios que você recomendou e diga que fração do estado isso representa. Some também as matrículas totais desses municípios. Declare o sistema de coordenadas em que a área foi medida e por que ele serve para somar área.
Em seguida, três informações que o leitor precisa para confiar no seu número: quantos municípios da malha ficaram sem correspondência no cruzamento, quantos municípios do estado não têm nenhuma escola sem esgotamento adequado e como você os tratou no mapa, e o que o Censo Escolar não informa sobre a condição real das instalações.
Caminho no QGIS
Tudo é feito no QGIS, sem programação. Os passos abaixo mostram a mecânica de cada operação: onde fica a ferramenta, o que preencher em cada campo da janela e como escrever a expressão. O que eles não dizem é qual indicador construir, que corte usar ou que municípios recomendar, porque essa parte é o trabalho.
A sequência também é sua. Se você preferir chegar ao mesmo resultado por outro caminho do QGIS, pode. Os passos abaixo são o caminho mais curto, não o único.
Montar as pastas e carregar os dois arquivos
Antes de abrir o QGIS, organize o disco. Projeto de GIS guarda caminhos, não arquivos: se você mover ou renomear um dado depois, o projeto abre com a camada quebrada.
- Crie a pasta
InfoGeo/aps01e, dentro dela,dados_brutosedados_tratados. - Coloque em
dados_brutosos três arquivos do seu estado: o.csv, o.csvtde mesmo nome e o.gpkg. O.csvtnão abre no QGIS e não aparece em lugar nenhum da interface; ele só precisa estar ali. - Abra o QGIS. Em Project ▸ New, e depois Project ▸ Save As, salve como
InfoGeo/aps01/projeto.qgz. Salve de novo, comCtrl+S, a cada etapa concluída. - Arraste
municipios_<UF>_2022.gpkgdo gerenciador de arquivos para dentro da janela do QGIS. A camada aparece no painel Layers, à esquerda, e o mapa desenha o contorno do estado. - Olhe o canto inferior direito da janela: deve estar escrito
EPSG:4674. Esse é o sistema de coordenadas que o projeto assumiu da primeira camada carregada. - Agora importe a tabela de escolas: Layer ▸ Add Layer ▸ Add Delimited Text Layer…. Abre a janela Data Source Manager, já na aba certa.
- File name
- o botão … à direita abre o navegador de arquivos; aponte para
escolas_<UF>_2025.csv - Layer name
escolas- Encoding
- UTF-8
- File format
- marque Custom delimiters e, nas caixas que aparecem, deixe só Semicolon marcada
- Record and Fields Options
- First record has field names e Detect field types marcados
- Geometry Definition
- No geometry (attribute only table)
A parte de baixo da janela mostra uma prévia da tabela. Os nomes das colunas devem aparecer no cabeçalho, e não como primeira linha de dados. O CO_MUNICIPIO deve mostrar sete dígitos, com o zero à esquerda quando houver.
Depois de clicar em Add e Close, a camada escolas entra no painel Layers com um ícone de tabela, diferente do ícone de polígono da malha. Ela não aparece no mapa, e isso está certo: tabela sem geometria não tem onde ser desenhada.
Para renomear qualquer camada, clique nela no painel Layers e aperte F2. Nomes curtos e descritivos economizam confusão nos passos seguintes, porque você vai terminar a APS com seis ou sete camadas na tela.
Conferir a chave dos dois lados antes de qualquer conta
O cruzamento do passo 5 vai casar o código de município da tabela com o da malha. Cinco minutos aqui evitam refazer tudo depois.
- Clique na camada
escolasno painel Layers e aperteF6. Abre a tabela de atributos. O título da janela mostra o total de feições. - Localize a coluna
CO_MUNICIPIOe confira que os valores têm sete dígitos. - Feche a tabela, clique na camada de municípios e aperte
F6de novo. Faça a mesma conferência emCD_MUN. - Agora o tipo. Clique duas vezes na camada
escolaspara abrir Layer Properties e vá na aba Fields, na lista à esquerda. A coluna Type mostra o tipo de cada campo. CO_MUNICIPIOprecisa aparecer comoStringoutext. Repita na camada de municípios:CD_MUNtambém deve serString.
Junção entre texto e número não casa e não devolve mensagem de erro. Devolve uma coluna inteira de nulos, que parece normal na tabela e só aparece quando o mapa sai vazio.
Se CO_MUNICIPIO tiver entrado como Integer, o arquivo .csvt não está na mesma pasta do CSV, ou está com nome diferente. Coloque-o lá, remova a camada escolas do projeto com Ctrl+D e importe de novo. O QGIS lê o .csvt no momento da importação, então não adianta corrigir depois.
Agregar as escolas por município
A tabela tem uma linha por escola e você precisa de uma linha por município. Quem faz isso é o Statistics by categories: ele agrupa as linhas pelas categorias de um campo e devolve contagem, soma, média, mediana e outras estatísticas do campo de valores.
- Abra a caixa de ferramentas com
Ctrl+Alt+T, ou por Processing ▸ Toolbox. O painel Processing Toolbox abre à direita. - Na caixa de busca no topo do painel, digite
statistics by categories. A árvore filtra enquanto você digita. - Clique duas vezes no resultado para abrir a janela da ferramenta. O nome completo,
qgis:statisticsbycategories, aparece no rodapé da janela. - Preencha os campos conforme o quadro abaixo.
- Clique em Run. A aba Log mostra o andamento e, no fim, o tempo de execução.
- Feche a janela com Close. A camada nova está no painel Layers.
- Input vector layer
escolas, na lista suspensa- Field to calculate statistics on
- o campo cujo total você quer somar
- Field(s) with categories
- clique no botão … e marque
CO_MUNICIPIOna lista - Statistics by category
- clique no …, escolha Save to File… e grave em
dados_tratadoscom um nome que diga o que é
Se você não escolher um arquivo, o QGIS grava o resultado em memória e o nome aparece no painel Layers com um ícone de aviso. Camada temporária some quando o QGIS fecha, e leva junto tudo que foi calculado em cima dela. Grave em arquivo desde a primeira ferramenta.
Abra a tabela da camada nova com F6. Ela tem uma linha por município e colunas com nomes de estatística: count é quantas escolas o município tem, sum é a soma do campo de valores, e vêm também mean, median, min, max e outras que você não vai usar.
Anote quantas linhas saíram. Esse número volta no passo 5.
Você vai rodar essa ferramenta mais de uma vez: uma sobre todas as escolas, para ter o denominador, e outra sobre o recorte que interessa à pergunta, para ter o numerador. O passo 4 mostra como fazer o recorte.
Recortar a tabela por uma condição
Para agregar só parte das escolas, filtre a camada antes de rodar a ferramenta. O filtro é uma expressão que fica ativa na camada: o QGIS passa a enxergar apenas as linhas que atendem à condição, e as ferramentas de processamento respeitam esse recorte.
- Clique na camada
escolase aperteCtrl+F, ou clique com o botão direito e escolha Filter…. Abre a janela Query Builder. - A lista Fields, à esquerda, tem os nomes das colunas. Clique duas vezes num nome para inserir na expressão, já com as aspas corretas.
- Para ver que valores um campo assume, selecione-o e clique em All, embaixo da lista Values. Útil para conferir se
LOCALIZACAOusa 1 e 2, por exemplo. - Escreva a condição na caixa Provider specific filter expression, embaixo.
- Clique em Test. Aparece uma mensagem com quantas linhas atendem à condição. Se der zero, a expressão está errada, e ainda dá tempo de corrigir.
- Confirme com OK.
- Com o filtro ativo, rode o Statistics by categories de novo, gravando com outro nome de arquivo.
- Depois, volte em
Ctrl+F, clique em Clear e confirme com OK. O funil desaparece e a camada volta inteira.
A sintaxe das expressões é a mesma do tema 3:
"ESGOTO_ADEQ" = 0 -- número sem aspas "LOCALIZACAO" = 2 -- código: ver o LEIA-ME "DEPENDENCIA" IN (2, 3) -- lista de valores "ESGOTO_ADEQ" = 0 AND "QT_MAT_BAS" > 0 -- duas condições "NO_MUNICIPIO" LIKE 'Santa%' -- texto entre aspas simples
No painel Layers, a camada filtrada ganha um ícone de funil ao lado do nome. É o único aviso que o QGIS dá, e ele é fácil de não ver. Enquanto o funil estiver ali, toda ferramenta que você rodar usa só o recorte, e é por isso que o último item da lista manda limpá-lo.
Município que não tem nenhuma escola na condição filtrada simplesmente não aparece na tabela agregada. Ele não vira zero: ele some. Compare o número de linhas dessa agregação com o da anterior, porque essa diferença volta na Pergunta 3.
Cruzar as tabelas com a malha
Agora as tabelas agregadas ganham geometria. O Join attributes by field value copia colunas de uma tabela para outra usando um campo em comum. Você vai rodar duas vezes, uma para cada agregação, encadeando: a saída do primeiro cruzamento é a entrada do segundo.
- Na caixa de busca do Processing Toolbox, digite
join attributes by field valuee abra a ferramenta com duplo clique.
- Input layer
- a malha de municípios, no primeiro cruzamento; a saída do primeiro, no segundo
- Table field
CD_MUN- Input layer 2
- a tabela agregada do passo 3
- Table field 2
CO_MUNICIPIO- Layer 2 fields to copy
- clique no … e marque só
countesum. Deixar em branco copia as quinze colunas da agregação inteira - Join type
- Take attributes of the first matching feature only (one-to-one)
- Discard records which could not be joined
- desmarcado
- Joined field prefix
- um prefixo curto que identifique a origem, como
TOT_no primeiro e outro no segundo - Joined layer
- grave em arquivo, em
dados_tratados
O prefixo importa. As duas tabelas agregadas trazem colunas com o mesmo nome, count e sum. Sem prefixos diferentes, a segunda sobrescreve a primeira ou entra com nome duplicado, e depois você não sabe qual é qual.
Deixe Discard records which could not be joined desmarcado nos dois cruzamentos. Município sem correspondência precisa continuar na camada, com nulo na coluna, para que você possa contá-lo e decidir o que fazer com ele.
A aba Log da janela da ferramenta escreve, ao terminar, uma linha do tipo N feature(s) from input layer were successfully matched. Leia essa linha antes de fechar a janela: é a conferência mais barata da APS inteira.
No cruzamento com a agregação de todas as escolas, todas as feições devem ter sido unidas. Se sobrar alguma, volte ao passo 2 antes de calcular qualquer coisa.
Se já tiver fechado a janela, dá para conferir na tabela: abra com F6, clique no cabeçalho da coluna nova para ordenar e veja se aparecem linhas com NULL.
Construir o indicador com o Field Calculator
Campo calculado é uma coluna nova cujo conteúdo vem de uma expressão sobre as colunas que já existem. É onde o indicador nasce.
- Abra a tabela de atributos da camada cruzada com
F6. - Na barra de ícones da tabela, clique no ábaco, cujo nome ao passar o mouse é Open Field Calculator. Com a tabela em foco, o atalho é
Ctrl+I. - A camada entra automaticamente em modo de edição, e o ícone de lápis fica pressionado. Ela vai continuar assim até você salvar.
- Preencha o alto da janela conforme o quadro abaixo e escreva a expressão na caixa grande.
- Confirme com OK. A coluna nova aparece no fim da tabela.
- Salve as alterações: clique no ícone de disquete da barra da tabela, Save Edits, ou aperte
Ctrl+S. - Saia do modo de edição clicando no lápis. Se ele continuar pressionado, o cálculo ainda não está gravado no arquivo.
- Create a new field
- marcado. A opção de baixo, Update existing field, sobrescreve uma coluna que já existe
- Output field name
- até dez caracteres, sem acento e sem espaço. GeoPackage aceita mais, mas nomes curtos evitam problema ao exportar
- Output field type
- Decimal number (real) para percentual e razão; Whole number (integer) só para contagem
- Output field length
- 10
- Precision
- 2, para duas casas decimais
A parte de baixo da janela tem três colunas. À esquerda, a caixa onde você escreve a expressão. No meio, a lista de funções, com busca no topo e um grupo Fields and Values com os campos da camada, que entram na expressão com duplo clique. À direita, a ajuda da função selecionada.
A sintaxe é a mesma dos temas 3 e 4:
"TOT_count" -- campo entre aspas duplas "SEM_count" / "TOT_count" -- razão entre colunas 100.0 * "SEM_count" / "TOT_count" -- percentual round(100.0 * "SEM_count" / "TOT_count", 1) -- uma casa if("SEM_count" IS NULL, 0, "SEM_count") -- trata o nulo "SEM_sum" / ("AREA_KM2" / 100) -- parênteses mudam a ordem
Embaixo da caixa de expressão aparece Preview, com o resultado calculado para a primeira feição da camada. Se sair NULL, algum campo da expressão está vazio nessa feição. Se sair uma mensagem em vermelho, a expressão tem erro de sintaxe, e o texto diz onde.
A expressão do QGIS calcula em número real, mas o valor é gravado no tipo que você escolheu em Output field type. Se o campo for Whole number (integer), a fração desaparece na gravação: 3 escolas em 8 viram 38, 3 em 7 viram 43, e 1 em 300 vira 0. O mapa fica com uma classe inteira de zeros que não existe no dado.
A prévia mostra o valor da expressão, que já vem com decimais mesmo quando o tipo do campo está errado. Confira o tipo na parte de cima da janela, e não só a prévia.
Município que ficou de fora da agregação filtrada chega aqui com nulo. Tratar como zero afirma que ele não tem o problema; deixar como nulo afirma que você não sabe. As duas leituras são defensáveis, e a função if do quadro acima aplica a que você escolher. O que não é defensável é não perceber a diferença. Qualquer que seja a decisão, ela precisa aparecer no texto e na legenda do mapa.
Ordenar, ler o topo e levar as listas para o documento
- Na tabela de atributos, clique no cabeçalho da coluna do indicador. Um clique ordena crescente; clique de novo para decrescente. A setinha no cabeçalho indica o sentido.
- Clique no número da primeira linha, à esquerda, segure
Shifte clique no número da décima. As dez ficam destacadas em amarelo, na tabela e no mapa. Ctrl+Ccopia as linhas selecionadas com o cabeçalho das colunas. Cole direto no Word ou no Excel.- Se preferir gravar em arquivo, feche a tabela e vá em botão direito na camada ▸ Export ▸ Save Selected Features As…, escolhendo Comma Separated Value como formato.
- Para limpar a seleção antes do próximo critério, use
Ctrl+Shift+A.
No canto inferior esquerdo da tabela há uma lista suspensa que costuma estar em Show All Features. Se ela estiver em Show Selected Features, você vê só o que está selecionado e pode achar que perdeu dados. Deixe em Show All Features.
Repita para cada critério que a Pergunta 1 e a Pergunta 2 pedem, guardando cada lista com um nome que identifique o critério. Você vai precisar das três lado a lado para comparar.
Somar a área dos municípios escolhidos
Somar área em coordenadas geográficas não dá resultado em quilômetro quadrado, porque grau não é unidade de comprimento. Antes de medir, o dado precisa estar num sistema projetado adequado para área, como você viu no tema 2.
- Vá em Project ▸ Properties ▸ General e, no bloco Measurements, escolha o elipsoide e deixe Area units em Square kilometers. É essa configuração que o
$areavai usar. - Selecione os municípios que você vai recomendar. Na tabela, com
CtrlouShiftnos números das linhas; ou por expressão, comCtrl+F3, que abre Select Features by Expression. - Vá em Vector ▸ Data Management Tools ▸ Reproject layer….
- Em Input layer, escolha a camada. Para usar só a seleção, clique no ícone à direita da lista suspensa e marque Selected features only.
- Em Target CRS, escolha o sistema projetado adequado para medir área. Grave a saída em arquivo e clique em Run.
- Na camada reprojetada, abra o Field Calculator e crie um campo do tipo Decimal number (real) com a expressão
$area. - Abra o painel de estatísticas em View ▸ Panels ▸ Statistics. No alto do painel, escolha a camada e o campo. Leia a linha Sum.
$area mede sobre o elipsoide e converte para a unidade definida nas propriedades do projeto. area($geometry) ignora essa configuração e devolve o número bruto na unidade do CRS da camada, que em coordenadas geográficas é grau quadrado. Confira a unidade antes de anotar o resultado.
A camada traz também AREA_KM2, que é a área oficial publicada pelo IBGE. Comparar o seu número com o oficial é uma boa conferência, e a Pergunta 3 pede que você declare em que sistema mediu.
Montar o coroplético
- Clique duas vezes na camada no painel Layers para abrir Layer Properties, e vá na aba Symbology, a segunda da lista à esquerda.
- Na lista suspensa do topo, troque Single Symbol por Graduated. A janela muda inteira.
- Em Value, escolha o campo do indicador. Em Color ramp, uma rampa sequencial: cor clara para valor baixo, cor escura para valor alto.
- Escolha o Mode e o número de Classes, e clique em Classify, embaixo da lista. As faixas aparecem na tabela do meio.
- Para definir as faixas você mesmo, troque o Mode para Manual e clique duas vezes num valor da coluna Values para editar o limite. O limite superior de uma classe é o inferior da seguinte.
- Clique duas vezes no texto da coluna Legend para reescrevê-lo. É esse texto que sai na legenda do mapa, e ele deve dizer o que a cor significa, não repetir o intervalo numérico bruto.
- Confirme com Apply para ver no mapa sem fechar a janela, e depois OK.
Olhe o mapa e a legenda juntos. Se uma faixa não aparece em nenhum município, ela não deveria estar na legenda. Se metade do estado está na mesma cor, o corte não está separando nada, e vale trocar o modo ou o número de classes.
Se boa parte dos municípios tiver o mesmo valor, os quantis podem devolver várias classes com o mesmo limite, do tipo 0 – 0. Não é defeito do QGIS: é o que acontece quando um quinto da distribuição não cabe em cinco partes iguais. Nesse caso, separe esses municípios numa classe própria e defina o resto no modo Manual.
O mapa da Pergunta 1 é um coroplético e deve seguir o padrão de entrega da disciplina: escala, orientação, legenda editada, fonte com data de coleta, sistema de coordenadas e autoria.
O que entregar
Três arquivos, pelo Blackboard, com nome em minúsculas, sem acento e sem espaço.
| Arquivo | Conteúdo |
|---|---|
| infogeo_aps01_<sobrenome>_<uf>.docx | O documento, no máximo quatro páginas |
| infogeo_aps01_<sobrenome>_<uf>.pdf | O coroplético em PDF vetorial, no padrão de entrega |
| infogeo_aps01_<sobrenome>_<uf>.qgz | O projeto do QGIS, que abra sem camada quebrada |
O documento
Quatro páginas, no máximo, na seguinte ordem.
- Identificação: nome, curso, mês de nascimento e estado. Duas linhas.
- Recomendação: a lista final de dez municípios e o critério que a produziu, em um parágrafo. Esta seção vem primeiro de propósito: é o que o secretário lê.
- Pergunta 1: o mapa, as duas listas de dez e o argumento da escolha.
- Pergunta 2: a terceira lista, a comparação entre as três e a decisão final de critério.
- Pergunta 3: área e matrículas cobertas, sistema de coordenadas usado, e as três informações de confiabilidade pedidas.
- Limitações: o que o seu número não sustenta. Meia página.
- Fontes: base, órgão, ano e data de coleta.
Quatro páginas é pouco de propósito. Diagnóstico territorial que não cabe em quatro páginas não é lido por quem decide. Tabela longa vai para anexo e não conta no limite; texto conta.
Como será corrigido
| Peso | O que se avalia | O que separa nota alta de nota baixa |
|---|---|---|
| 30% | Execução | Agregação, cruzamento e indicadores corretos; taxa de casamento verificada; área medida em sistema adequado |
| 30% | Argumento | O critério de prioridade está explícito e defendido contra as alternativas que você mesmo produziu |
| 20% | Mapa | Classificação justificada e elementos obrigatórios presentes, conforme o padrão de entrega |
| 20% | Limitações | Reconhece o que o dado não sustenta, sem transformar isso em desculpa genérica |
Entregar a lista certa sem dizer por que aquele critério. Uma recomendação sem argumento perde os 30% de argumento inteiros, enquanto uma paleta mal escolhida custa fração dos 20% do mapa. Escolha onde investir o seu tempo.
- Individual. Discutir método com colegas é esperado; entregar texto ou mapa de outra pessoa não é.
- Tudo no QGIS. Não use Python nem R.
- Prazo e política de atraso no Blackboard.