14  Saneamento e Drenagem Urbana

O Capítulo 7 mapeou cobertura de água e esgoto em Recife com dois indicadores binários, que respondiam se o domicílio estava ou não ligado à rede. Era o que aquele capítulo precisava, porque seu objetivo era ensinar a juntar arquivos temáticos dos agregados. Como diagnóstico de saneamento, aqueles dois indicadores são apenas o começo.

O que eles deixam de fora cabe em quatro perguntas, e é delas que este capítulo trata. Os domicílios estão ligados à rede geral de água e ela chega encanada até o seu interior? Qual a destinação do esgoto? Todo domicílio tem ao menos um banheiro? E a rua em frente ao domicílio tem por onde escoar a chuva?

Respondê-las exige três fontes. As características do domicílio vêm dos agregados por setor censitário, com um complemento dos microdados da amostra para o que o sigilo dos agregados esconde. A drenagem não está em nenhum dos dois, porque não é característica do domicílio e sim da via, e vem da Pesquisa Urbanística do Entorno dos Domicílios, apresentada no Capítulo 11.

O município escolhido é Macapá (AP), e a escolha não é arbitrária. Em junho de 2023, ao divulgar a publicação Características gerais dos domicílios e dos moradores 2022, da Pesquisa Nacional por Amostra de Domicílios Contínua, o IBGE apontou a região Norte como a de menor acesso à rede geral de esgoto do país. No detalhamento por unidade da federação, o Amapá aparece na última posição, com menos de 30% dos domicílios urbanos conectados.

Comecemos carregando os pacotes usados ao longo do capítulo1.

library(tidyverse)
library(censobr)
library(geobr)
library(sf)
library(srvyr)
library(patchwork)

14.1 Estruturação dos dados de agregados do Censo de 2022

Macapá tem o mesmo problema de escala territorial que vimos para Goiânia, no Capítulo 12, sobre Demografia. O município é grande e majoritariamente rural, enquanto a população se concentra numa mancha urbana pequena. Deste modo, recortaremos Macapá a uma situação rural bem específica, conforme explicaremos logo mais. Antes de prosseguir, vamos obter o código IBGE do município para a sua leitura:

macapa <- lookup_muni(name_muni = "Macapá", year = 2022)$code_muni
macapa
[1] 1600303

Como se sabe, o arquivo Básico traz a coluna situacao, que classifica cada setor entre urbano e rural. Abaixo, após a leitura dos setores, podemos verifcar a distribuição da tipologia, seja por quantidade quanto por sua extensão territorial:

## Lendo o arquivo Básico dos agregados, só para Macapá:
basico <- read_tracts(dataset = "Basico", year = 2022) |>
  filter(code_muni == macapa) |>
  select(code_tract, name_neighborhood, name_district, situacao,
         code_type, area_km2, V0001, V0007) |>
  collect()

## Sumarizando setores, população e área por situação:
basico |>
  group_by(situacao) |>
  summarize(
    setores   = n(),
    populacao = sum(V0001,    na.rm = TRUE),
    area_km2  = sum(area_km2, na.rm = TRUE)
  ) |>
  knitr::kable(digits = 0, format.args = list(big.mark = ".", decimal.mark = ","))
Tabela 14.1: Setores censitários, população e área de Macapá (AP) segundo a situação urbana ou rural do setor, Censo 2022.
situacao setores populacao area_km2
Rural 112 24.133 5.752
Urbana 659 418.800 149
NA 5 0 662

Veja como a mancha urbana concentra a quase totalidade da população em cerca de 2,5% da área do município. Vale levar essa mesma informação ao mapa, porque a tabela diz quanto e o mapa diz onde. Antes, vamos ler as geometrias dos setores com read_census_tract(), guardando o resultado em setores_geo, que será reaproveitado em todos os mapas do capítulo:

setores_geo <- read_census_tract(
  code_tract = macapa,
  year       = 2022,
  simplified = FALSE
)

Note que não foi preciso juntar nada ao arquivo Básico. A própria malha de setores já vem com a coluna zone, que classifica o setor entre urbano e rural, e com as colunas name_district e name_neighborhood, que trazem o distrito e o bairro. Produzindo então um mapa coroplético cuja cor de preenchimento é a zone de cada setor, temos:

ggplot(setores_geo) +
  geom_sf(aes(fill = zone), color = NA) +
  scale_fill_brewer(palette = "Set2", name = "Situação", na.value = "gray85",
                    labels = c("Rural", "Urbana", "Sem classificação")) +
  coord_sf(expand = FALSE) +
  theme_minimal() +
  theme(axis.text = element_blank(), axis.ticks = element_blank(),
        panel.grid = element_blank())
Figura 14.1: Setores censitários de Macapá (AP) segundo a situação urbana ou rural, Censo 2022.

Repare como em Macapá aparecem algumas manchas urbanas (alaranjadas) em volta de áreas rurais (verdes). É importante lembrar que a classificação de urbano no Censo é funcional e não espacial. Ela diz que o setor tem características urbanas, e não que ele pertence à cidade. Sedes de vila e povoados afastados também são classificados como urbanos, ainda que fiquem bem distantes da mancha contínua. Basta um deles para obrigar o mapa a enquadrar o município inteiro e perdermos a capacidade de visualizar bem os setores onde está a maior parte da população.

NotaOs setores com NA estão sobre o Rio Amazonas

Note que temos cinco setores de dimensão considerável sem classificação urbana ou rural (NA). Observe abaixo com o mapa interativo via mapview() que eles estão sobre o Rio Amazonas, que banha o município:

library(mapview)

mapview(setores_geo, legend = NULL, alpha.regions = 0.001)

Voltando à questão dos povoados afastados, a verificação é simples e se faz olhando a distribuição dos setores urbanos entre os distritos:

basico |>
  filter(situacao == "Urbana") |>
  group_by(name_district) |>
  summarize(setores = n(), populacao = sum(V0001, na.rm = TRUE)) |>
  arrange(desc(setores)) |>
  knitr::kable(format.args = list(big.mark = ".", decimal.mark = ","))
Tabela 14.2: Distribuição dos setores censitários urbanos de Macapá (AP) entre os distritos do município, Censo 2022.
name_district setores populacao
Macapá 631 398.490
Fazendinha 24 17.933
Bailique 2 1.337
Carapanantuba 1 200
São Joaquim do Pacuí 1 840

Os distritos de Macapá e Fazendinha formam a mancha urbana contínua da cidade e concentram mais de 99% da população urbana. Os outros três aparecem com pouquíssimos setores, que são sedes de vila isoladas, entre elas o arquipélago do Bailique, a cerca de cem quilômetros da capital.

Observemos no mapa para deixar o argumento visível. Na parte superior, os setores urbanos coloridos por distrito sobre o município inteiro, desenhado em cinza claro. Embaixo, o mesmo mapa recortado na mancha urbana contínua, o que exige apenas informar ao coord_sf() os limites desejados nos argumentos xlim e ylim. Esses limites saem do próprio dado, com a caixa delimitadora, dada por st_bbox(), aplicada aos setores dos dois distritos centrais:

## Separando os setores urbanos:
urbanos_geo <- setores_geo |>
  filter(zone == "Urbana")

## Caixa delimitadora dos dois distritos centrais, p/ recortar o 2º mapa:
recorte <- urbanos_geo |>
  filter(name_district %in% c("Macapá", "Fazendinha")) |>
  st_bbox()

## Mapas:
mapa_municipio <- ggplot() +
  geom_sf(data = setores_geo, fill = "gray93", color = NA) +
  geom_sf(data = urbanos_geo, aes(fill = name_district),
          color = NA) +
  scale_fill_brewer(palette = "Dark2", name = "Distrito") +
  coord_sf(expand = FALSE) +
  labs(subtitle = "Município inteiro") +
  theme_minimal() +
  theme(axis.text = element_blank(), axis.ticks = element_blank(),
        panel.grid = element_blank(),
        plot.subtitle = element_text(hjust = 0.5))

mapa_mancha <- ggplot() +
  geom_sf(data = urbanos_geo, aes(fill = name_district),
          color = NA) +
  geom_sf(data = setores_geo, fill = NA, color = "gray65") +
  scale_fill_brewer(palette = "Dark2", name = "Distrito") +
  coord_sf(xlim = recorte[c("xmin", "xmax")],
           ylim = recorte[c("ymin", "ymax")], expand = FALSE) +
  labs(subtitle = "Mancha urbana contínua") +
  theme_minimal() +
  theme(axis.text = element_blank(), axis.ticks = element_blank(),
        plot.subtitle = element_text(hjust = 0.5),
        panel.grid = element_blank())

(mapa_municipio / mapa_mancha) +
  plot_layout(guides = "collect")
Figura 14.2: Setores censitários urbanos de Macapá (AP) por distrito, no município inteiro (acima) e recortados na mancha urbana contínua (abaixo), Censo 2022.

No painel de cima, os setores de Bailique, Carapanantuba e São Joaquim do Pacuí são manchas minúsculas espalhadas pelo município, e são elas que obrigam o enquadramento a ir do extremo norte ao extremo sul. No painel de baixo, com o recorte aplicado, aparecem os dois distritos que interessam e a subdivisão fina dos seus setores, com Macapá ocupando toda a porção norte e Fazendinha o prolongamento ao sul.

É importante destacar que restringiremos todas as análises planejadas com os agregados deste capítulo a esses dois distritos:

setores_urbanos <- basico |>
  filter(situacao == "Urbana",
         name_district %in% c("Macapá", "Fazendinha")) |>
  pull(code_tract)

length(setores_urbanos)
[1] 655

Essa exclusão custa pouco mais de dois mil moradores e devolve um mapa legível. Vale registrar que ela é uma decisão de recorte, e que uma análise voltada às comunidades mais afastadas do município faria exatamente o contrário, mantendo esses setores e descartando a cidade.

Façamos então a leitura do arquivo Domicílio, de onde vêm todas as variáveis de saneamento. São trinta e duas colunas, distribuídas em sete blocos, e a Tabela 14.3 descreve cada um deles. Para selecioná-las sem escrever nome por nome, usamos a num_range(), apresentada no Capítulo 12, com o cuidado do argumento width:

Tabela 14.3: Blocos de variáveis de saneamento do arquivo Domicílio dos Agregados por Setor Censitário (Censo 2022).
Bloco Códigos Categorias
Forma de abastecimento de água V00111 a V00118 8
Como a água chega ao domicílio V00199 a V00201 3
Instalação sanitária disponível V00232 a V00238 7
Destinação do esgoto V00309 a V00316 8
Destinação do lixo V00397 a V00402 6
Água da rede por cor ou raça V00143 a V00147 5
Esgoto por rede por cor ou raça V00341 a V00345 5

A leitura seleciona os sete blocos de uma vez, e a restrição aos setores urbanos vem logo em seguida, na construção de macapa_sc.

## Lendo o arquivo Domicílio, com os sete blocos de saneamento:
domicilio <- read_tracts(dataset = "Domicilio", year = 2022) |>
  filter(code_muni == macapa) |>
  select(code_tract, domicilio01_V00001,
         num_range("domicilio02_V00", 111:118, width = 3),
         num_range("domicilio02_V00", 199:201, width = 3),
         num_range("domicilio02_V00", 232:238, width = 3),
         num_range("domicilio02_V00", 309:316, width = 3),
         num_range("domicilio02_V00", 397:402, width = 3),
         num_range("domicilio02_V00", 143:147, width = 3),
         num_range("domicilio02_V00", 341:345, width = 3)) |>
  collect()

## Restringindo aos setores urbanos e juntando com o Básico:
macapa_sc <- basico |>
  filter(code_tract %in% setores_urbanos) |>
  left_join(domicilio, by = "code_tract")

## Total de domicílios particulares permanentes, denominador do capítulo:
dpp <- sum(macapa_sc$domicilio01_V00001, na.rm = TRUE)
dpp
[1] 116576

Esse total de domicílios particulares permanentes ocupados será o denominador de quase todos os indicadores do capítulo. Como usaremos a mesma conta muitas vezes, guardamos o valor em um objeto em vez de repeti-lo.

14.2 O que é saneamento adequado

Antes de calcular qualquer coisa, é preciso definir o que conta como adequado. O critério que adotamos aqui vem do Índice de Vulnerabilidade Social (IVS), construído pelo Ipea e divulgado no Atlas da Vulnerabilidade Social (Costa & Marguti, 2015). O IVS busca medir a ausência ou a insuficiência de um conjunto de ativos considerados essenciais ao bem-estar, e se organiza em três dimensões, que são infraestrutura urbana, capital humano, e renda e trabalho.

A dimensão de Infraestrutura Urbana reflete as condições de acesso aos serviços de saneamento básico e de mobilidade urbana, e é composta por três indicadores. Dois deles interessam diretamente a este capítulo, que são o percentual de pessoas em domicílios com abastecimento de água e esgotamento sanitário inadequados e o percentual de pessoas em domicílios urbanos sem coleta de lixo. O terceiro trata do tempo de deslocamento de trabalhadores de baixa renda, e é assunto do Capítulo 15.

AvisoO IVS entra como critério, e não como índice calculado

Este livro usa o IVS para definir o que conta como adequado, e não reproduz o índice. Além disso, o índice oficial é calculado por município e por unidade de desenvolvimento humano, e não por setor censitário.

O que fazemos é bem mais modesto e bem mais seguro. Tomamos emprestadas as definições de adequação e calculamos os indicadores que os agregados permitem, deixando claro em cada caso qual é o numerador e qual é o denominador.

Segundo o critério do IVS, o abastecimento de água é inadequado quando não provém de rede geral, e o esgotamento sanitário é inadequado quando não é feito por rede coletora nem por fossa séptica ou fossa filtro ligada à rede. Traduzidas para as variáveis dos agregados, as duas definições produzem os indicadores a seguir:

## Criando os indicadores de inadequação pelo critério do IVS, por setor:
macapa_sc <- macapa_sc |>
  mutate(
    dom      = domicilio01_V00001,
    redger_a = domicilio02_V00111,
    redger_e = domicilio02_V00309,
    fossa_s  = domicilio02_V00310,
    perc_agua_inadeq = 100 * (1 - redger_a / dom),
    perc_esg_inadeq  = 100 * (1 - (redger_e + fossa_s) / dom)
  )

## Mesmos indicadores para o conjunto da área urbana:
macapa_sc |>
  summarize(
    agua_inadequada  = 100 * (1 - sum(redger_a, na.rm = TRUE) / dpp),
    esgoto_inadequado = 100 * (1 - (sum(redger_e, na.rm = TRUE) +
                                    sum(fossa_s,  na.rm = TRUE)) / dpp)
  )
  agua_inadequada esgoto_inadequado
1        54.55497          82.49211

Veja que mais da metade dos domicílios das áreas urbanas que selecionamos de Macapá tem abastecimento inadequado pelo critério do IVS, em 2022, e cerca de oito em cada dez têm esgotamento inadequado. Os dois números são altos, e o restante do capítulo se dedica a mostrar as nuances que eles escondem.

14.3 Distribuição de Água

O indicador binário diz que pouco menos da metade dos domicílios usa a rede geral. Vamos entender melhor, então, de onde vem a maior parte da distribuição de água em Macapá. Abaixo, nós fazemos a codificação dos valores das variáveis dos agregados para atingir esse objetivo:

formas_agua <- tibble(
  Forma = c("Rede geral de distribuição", "Poço profundo ou artesiano",
            "Poço raso, freático ou cacimba", "Fonte, nascente ou mina",
            "Carro-pipa", "Água da chuva armazenada",
            "Rios, açudes, córregos, lagos e igarapés", "Outra forma"),
  variavel = sprintf("domicilio02_V00%d", 111:118)
)

formas_agua
# A tibble: 8 × 2
  Forma                                    variavel          
  <chr>                                    <chr>             
1 Rede geral de distribuição               domicilio02_V00111
2 Poço profundo ou artesiano               domicilio02_V00112
3 Poço raso, freático ou cacimba           domicilio02_V00113
4 Fonte, nascente ou mina                  domicilio02_V00114
5 Carro-pipa                               domicilio02_V00115
6 Água da chuva armazenada                 domicilio02_V00116
7 Rios, açudes, córregos, lagos e igarapés domicilio02_V00117
8 Outra forma                              domicilio02_V00118

Na sequência, obtemos os totais e percentuais para cada um dos tipos:

formas_agua |>
  mutate(
    Domicílios = map_dbl(variavel, \(v) sum(macapa_sc[[v]], na.rm = TRUE)),
    `%`        = 100 * Domicílios / dpp
  ) |>
  select(-variavel) |>
  knitr::kable(digits = 1, format.args = list(big.mark = ".", decimal.mark = ","))
Tabela 14.4: Domicílios particulares permanentes de Macapá (AP) segundo a forma de abastecimento de água, Censo 2022.
Forma Domicílios %
Rede geral de distribuição 52.978 45,4
Poço profundo ou artesiano 41.376 35,5
Poço raso, freático ou cacimba 20.354 17,5
Fonte, nascente ou mina 84 0,1
Carro-pipa 21 0,0
Água da chuva armazenada 3 0,0
Rios, açudes, córregos, lagos e igarapés 129 0,1
Outra forma 1.097 0,9
Notamap_dbl() para percorrer nomes de colunas

A função map_dbl(), do pacote purrr, aplica uma função a cada elemento de um vetor e devolve o resultado como vetor numérico. O nome descreve o que ela faz, porque map é a operação de mapear elemento a elemento e dbl é o tipo devolvido, o double. Ela tem irmãs para cada tipo de retorno, entre elas a map_int(), que devolve inteiros e será usada mais adiante, e a map_chr(), que devolve texto.

O que a torna útil aqui é o formato da tabela que estamos montando. A coluna variavel guarda nomes de colunas em texto, e não os valores em si. Precisamos, para cada um desses oito nomes, somar a coluna correspondente de macapa_sc. É exatamente esse o desenho da map_dbl(), que recebe o vetor de nomes e a operação a aplicar em cada um.

map_dbl(variavel, \(v) sum(macapa_sc[[v]], na.rm = TRUE))

A função anônima \(v), na forma abreviada apresentada na Seção 11.4, recebe um nome de cada vez na variável v. Os colchetes duplos, vistos no Capítulo 1, extraem de macapa_sc a coluna cujo nome está guardado em v, e não uma coluna chamada literalmente v. Sem essa construção, seria preciso escrever oito linhas de sum(), uma para cada variável, e repeti-las em cada uma das tabelas seguintes.

Vale registrar que a map_dbl() exige que cada aplicação devolva um único valor numérico. Se a função devolvesse dois valores, ou um texto, a chamada falharia com erro em vez de devolver um resultado silenciosamente errado. Essa rigidez é uma vantagem, porque avisa cedo quando o cálculo não é o que se imaginava.

Observe que a alternativa dominante à rede geral em Macapá não é a precariedade extrema, e sim o poço, profundo ou raso, que atende mais da metade dos domicílios. É importante destacar que poço não é necessariamente sinônimo de água insegura, embora seja, em alguns casos, fonte sem tratamento e sem monitoramento regular.

Há ainda uma segunda pergunta que o indicador binário não alcança. Estar ligado a alguma fonte não é o mesmo que ter água chegando dentro de casa, e quesitos adicionais dos agregados nos permitem responder a essa pergunta:

tibble(
  Situação = c("Encanada até dentro do domicílio",
               "Encanada, mas apenas no terreno",
               "Não chega encanada"),
  variavel = sprintf("domicilio02_V00%d", 199:201)
) |>
  mutate(
    Domicílios = map_dbl(variavel, \(v) sum(macapa_sc[[v]], na.rm = TRUE)),
    `%`        = 100 * Domicílios / dpp
  ) |>
  select(-variavel) |>
  knitr::kable(digits = 1, format.args = list(big.mark = ".", decimal.mark = ","))
Tabela 14.5: Domicílios particulares permanentes de Macapá (AP) segundo a maneira como a água chega ao domicílio, Censo 2022.
Situação Domicílios %
Encanada até dentro do domicílio 106.061 91,0
Encanada, mas apenas no terreno 8.852 7,6
Não chega encanada 1.221 1,0

Nove em cada dez domicílios têm água encanada até dentro de casa, contra menos da metade ligados à rede geral. Antes de interpretar a diferença, é preciso reconhecer o que as duas tabelas são. As duas trazem distribuições separadas do mesmo conjunto de domicílios, e não um cruzamento entre as duas perguntas. Nenhuma delas informa, domicílio a domicílio, quem está em cada combinação, de modo que os agregados não permitem calcular quantos dos ligados à rede têm água dentro de casa.

Por fim, mapeamos abaixo a situação dos setores tanto quanto ao fato de a água chegar via rede geral quanto ao fato de ser encanada, chegando até dentro do domicílio:

## Juntando geometria e indicadores, criando os dois percentuais de água:
macapa_geo <- setores_geo |>
  select(code_tract) |>
  inner_join(macapa_sc, by = "code_tract") |>
  mutate(
    perc_rede_agua = 100 * redger_a / dom,
    perc_encanada  = 100 * domicilio02_V00199 / dom
  )

## Mapas:
mapa_rede <- ggplot(macapa_geo) +
  geom_sf(aes(fill = perc_rede_agua), color = NA) +
  scale_fill_distiller(palette = "Blues", direction = 1,
                       name = "%", na.value = "gray90", limits = c(0, 100)) +
  coord_sf(expand = FALSE) +
  labs(subtitle = "Rede geral de distribuição") +
  theme_minimal() +
  theme(axis.text = element_blank(), axis.ticks = element_blank(),
        panel.grid = element_blank())

mapa_encanada <- ggplot(macapa_geo) +
  geom_sf(aes(fill = perc_encanada), color = NA) +
  scale_fill_distiller(palette = "Blues", direction = 1,
                       name = "%", na.value = "gray90", limits = c(0, 100)) +
  coord_sf(expand = FALSE) +
  labs(subtitle = "Encanada dentro do domicílio") +
  theme_minimal() +
  theme(axis.text = element_blank(), axis.ticks = element_blank(),
        panel.grid = element_blank())

mapa_rede / mapa_encanada
Figura 14.3: Domicílios abastecidos pela rede geral (acima) e domicílios com água encanada até dentro do domicílio (abaixo), por setor censitário urbano, Macapá (AP), Censo 2022.

As duas escalas vão de zero a cem, de propósito, para que a comparação seja direta. O mapa de baixo é quase todo escuro e o de cima é irregular, o que confirma no território o que a tabela mostrou.

14.4 Esgotamento Sanitário

Se o abastecimento de água adequado já apresenta cobertura baixa em Macapá, o esgotamento sanitário está em situação ainda mais desfavorável. O questionário do Censo registra oito destinações, e olhá-las em sequência revela um gradiente que vai do adequado ao insalubre.

Observemos o quantitativo em cada um dos casos:

## Somando os domicílios de cada uma das oito destinações de esgoto:
esgoto <- tibble(
  Destinação = c("Rede geral ou pluvial", "Fossa séptica ou filtro ligada à rede",
                 "Fossa séptica ou filtro não ligada à rede",
                 "Fossa rudimentar ou buraco", "Vala",
                 "Rio, lago, córrego ou mar", "Outra forma",
                 "Não tinha banheiro nem sanitário"),
  variavel = sprintf("domicilio02_V00%d", 309:316)
) |>
  mutate(
    Domicílios = map_dbl(variavel, \(v) sum(macapa_sc[[v]], na.rm = TRUE)),
    `%`        = 100 * Domicílios / dpp
  ) |>
  select(-variavel)

## Tabela:
esgoto |>
  knitr::kable(digits = 1, format.args = list(big.mark = ".", decimal.mark = ","))
Tabela 14.6: Domicílios particulares permanentes de Macapá (AP) segundo a destinação do esgotamento sanitário, Censo 2022.
Destinação Domicílios %
Rede geral ou pluvial 15.938 13,7
Fossa séptica ou filtro ligada à rede 4.472 3,8
Fossa séptica ou filtro não ligada à rede 48.259 41,4
Fossa rudimentar ou buraco 32.314 27,7
Vala 1.384 1,2
Rio, lago, córrego ou mar 12.517 10,7
Outra forma 560 0,5
Não tinha banheiro nem sanitário 44 0,0

O corte binário do Capítulo 7 juntaria as duas primeiras linhas de um lado e as seis restantes do outro. O gradiente mostra por que isso é insuficiente. A destinação mais frequente em Macapá é a fossa séptica ou filtro não ligada à rede, seguida da fossa rudimentar, e as duas juntas respondem por cerca de sete em cada dez domicílios. Vale salientar que, em ambos os casos, o efluente termina infiltrado no solo, porque a fossa séptica não ligada à rede tem como destino final o sumidouro ou a vala de infiltração, enquanto a rudimentar acumula as duas funções em um único buraco escavado. Como nem o tanque séptico nem certos tipos de pós-tratamentos previstos nas normas brasileiras removem nitrogênio, o principal impacto é a contaminação do solo e do lençol freático por patógenos e nitrato (Figueiredo et al., 2019), risco que a falta de manutenção e a instalação em local inadequado agravam, e que pesa mais em uma cidade onde metade dos domicílios se abastece por poço.

O que mais chama atenção, entretanto, é a sexta linha. Um em cada dez domicílios urbanos de Macapá lançava esgoto diretamente em rio, lago, córrego ou mar. Levado ao mapa, observe que este aspecto não se distribui no território de maneira uniforme:

## Somando vala e curso d'água em um só indicador, por setor:
macapa_geo <- macapa_geo |>
  mutate(
    perc_curso_agua = 100 * (domicilio02_V00313 + domicilio02_V00314) / dom
  )

## Mapa:
ggplot(macapa_geo) +
  geom_sf(aes(fill = perc_curso_agua), color = NA) +
  scale_fill_distiller(palette = "YlOrRd", direction = 1,
                       name = "% em vala\nou curso d'água",
                       na.value = "gray90") +
  coord_sf(expand = FALSE) +
  theme_minimal() +
  theme(axis.text = element_blank(), axis.ticks = element_blank(),
        panel.grid = element_blank())
Figura 14.4: Proporção de domicílios cujo esgoto é lançado em vala, rio, lago, córrego ou mar, por setor censitário urbano, Macapá (AP), Censo 2022.

A concentração é evidente em algumas áreas. Agregando por bairro, é possível nomeá-las.

## Produzindo os indicadores por bairro:
bairros <- macapa_sc |>
  filter(!is.na(name_neighborhood)) |>
  group_by(name_neighborhood) |>
  summarize(
    dom       = sum(dom,                na.rm = TRUE),
    rede      = sum(redger_e,           na.rm = TRUE),
    vala      = sum(domicilio02_V00313, na.rm = TRUE),
    curso     = sum(domicilio02_V00314, na.rm = TRUE)
  ) |>
  filter(dom >= 100) |>
  mutate(
    perc_rede       = 100 * rede / dom,
    perc_curso_agua = 100 * (vala + curso) / dom
  )

## Selecionando os 6 bairros com maior % em vala ou curso d'água:
bairros |>
  slice_max(perc_curso_agua, n = 6) |>
  select(name_neighborhood, dom, perc_curso_agua, perc_rede) |>
  knitr::kable(
    col.names = c("Bairro", "Domicílios", "% em vala ou curso d'água", "% com rede geral"),
    digits = 1,
    format.args = list(big.mark = ".", decimal.mark = ",")
  )
Tabela 14.7: Bairros de Macapá (AP) com maior proporção de domicílios que lançam esgoto em vala ou curso d’água, entre os que possuem ao menos cem domicílios, Censo 2022.
Bairro Domicílios % em vala ou curso d’água % com rede geral
Congós 4.856 52,0 1,3
Muca 3.177 41,3 2,7
Nova Esperança 1.027 38,8 0,0
Jardim Marco Zero 4.770 34,4 2,8
Novo Buritizal 6.620 28,7 14,8
Universidade 4.440 25,7 2,1

Em alguns bairros, mais de um terço dos domicílios lança esgoto em vala ou curso d’água, e a coluna da direita mostra que são exatamente os bairros a que a rede não chegou.

A tabela nomeia os bairros, e o mapa diz onde eles ficam. No Capítulo 13, buscamos a malha de bairros no geobr, com a read_neighborhood(), mas aqui faremos por um caminho diferente para fins didáticos. Observe que o arquivo de setores já vem com uma coluna name_neighborhood e, sendo assim, basta dissolvê-los por bairro com a combinação group_by() e summarize() que apresentamos no Capítulo 5, escrevendo o st_union() de forma explícita e passando antes pela st_make_valid() para ajustar geometrias inválidas:

## Produzindo a geometria por bairros a partir do arquivo original e juntando
## ao arquivo bairros com os indicadores produzido anteriormente:
bairros_mapa <- macapa_geo |>
  filter(!is.na(name_neighborhood)) |>
  st_make_valid() |>
  group_by(name_neighborhood) |>
  summarize(geometry = st_union(geometry)) |>
  left_join(bairros, by = "name_neighborhood")

## Selecionando os 6 piores casos para trazer o rótulo no mapa
destaques <- bairros_mapa |>
  slice_max(perc_curso_agua, n = 6)

## Plotando o mapa:
ggplot(bairros_mapa) +
  geom_sf(aes(fill = perc_curso_agua), color = "white", linewidth = 0.2) +
  geom_sf_label(data = destaques, aes(label = name_neighborhood),
                size = 2.5, alpha = 0.85,
                label.padding = unit(0.12, "lines")) +
  scale_fill_distiller(palette = "YlOrRd", direction = 1,
                       name = "% em vala\nou curso d'água",
                       na.value = "gray90") +
  coord_sf(expand = FALSE) +
  labs(x = NULL, y = NULL) +
  theme_minimal() +
  theme(axis.text = element_blank(), axis.ticks = element_blank(),
        panel.grid = element_blank())
Figura 14.5: Proporção de domicílios que lançam esgoto em vala ou curso d’água por bairro, com destaque para os seis de maior proporção, Macapá (AP), Censo 2022.

O contraste com o resto da cidade é grande. A mediana dos 59 bairros analisados fica em 2,4%, e 44 deles não chegam a 10%, de modo que o lançamento em vala ou curso d’água é fenômeno de poucos lugares, e não uma condição difusa de Macapá.

Esses lugares ocupam uma faixa central da mancha urbana. Nenhum dos sete bairros acima de 20% está na porção norte da cidade nem em sua borda oeste, e os seis destacados formam um bloco contínuo, em que cada um faz fronteira com ao menos um dos demais. O único bairro em cinza, Bella Ville, ficou abaixo do corte de cem domicílios e por isso não entrou na tabela.

14.5 Coleta de lixo

O terceiro componente do saneamento básico é o resíduo sólido, e é também o segundo indicador da dimensão de Infraestrutura Urbana do IVS. Vamos entender as condições a partir da codificação fornecida pelos agregados:

tibble(
  Destinação = c("Coletado no domicílio por serviço de limpeza",
                 "Depositado em caçamba de serviço de limpeza",
                 "Queimado na propriedade", "Enterrado na propriedade",
                 "Jogado em terreno baldio, encosta ou área pública",
                 "Outro destino"),
  variavel = sprintf("domicilio02_V00%d", 397:402)
) |>
  mutate(
    Domicílios = map_dbl(variavel, \(v) sum(macapa_sc[[v]], na.rm = TRUE)),
    `%`        = 100 * Domicílios / dpp
  ) |>
  select(-variavel) |>
  knitr::kable(digits = 1, format.args = list(big.mark = ".", decimal.mark = ","))
Tabela 14.8: Domicílios particulares permanentes de Macapá (AP) segundo a destinação do lixo, Censo 2022.
Destinação Domicílios %
Coletado no domicílio por serviço de limpeza 105.991 90,9
Depositado em caçamba de serviço de limpeza 7.391 6,3
Queimado na propriedade 1.115 1,0
Enterrado na propriedade 7 0,0
Jogado em terreno baldio, encosta ou área pública 712 0,6
Outro destino 924 0,8

Observe que a situação se apresenta bem mais favorável em relação à distribuição de água e esgotamento. A coleta de lixo alcança nove em cada dez domicílios urbanos, e somando a caçamba de serviço de limpeza chega-se a mais de 97%. São essas duas formas, a coleta no domicílio e a caçamba do serviço de limpeza, que o IVS considera atendimento adequado nessa dimensão.

Note que o indicador do IVS é o complemento dessas duas primeiras linhas, ou seja, os domicílios que não contam com nenhuma das duas formas de coleta. Ele corresponde exatamente às quatro linhas restantes da tabela, que são o lixo queimado, o enterrado, o jogado em terreno baldio e o de outro destino.

Poderíamos calculá-lo subtraindo as duas primeiras linhas do total, mas é melhor somar as quatro últimas. O motivo é o sigilo, já que a caçamba tem valor suprimido em 151 dos 655 setores, e qualquer conta que a use arrasta essa ausência para o resultado, deixando quase um quarto do mapa em cinza. Somando as quatro categorias de destinação inadequada com rowSums() e across(), apresentadas no Capítulo 11, restam apenas sete setores sem informação. O na.rm = TRUE trata as células suprimidas como zero, o que subestima o indicador de forma conhecida e pequena, já que o total municipal passa de 2,7% para 2,4%. Observemos o resultado com o mapa abaixo:

## Somando as quatro destinações inadequadas do lixo, por setor:
macapa_geo <- macapa_geo |>
  mutate(
    perc_sem_coleta = 100 * rowSums(
      across(num_range("domicilio02_V00", 399:402, width = 3)),
      na.rm = TRUE
    ) / dom
  )

## Mapa:
ggplot(macapa_geo) +
  geom_sf(aes(fill = perc_sem_coleta), color = NA) +
  scale_fill_distiller(palette = "OrRd", direction = 1,
                       name = "% sem\ncoleta", na.value = "gray90") +
  coord_sf(expand = FALSE) +
  theme_minimal() +
  theme(axis.text = element_blank(), axis.ticks = element_blank(),
        panel.grid = element_blank())
Figura 14.6: Proporção de domicílios sem coleta de lixo, por setor censitário urbano, Macapá (AP), Censo 2022.

Note que o déficit é bastante concentrado. Em 530 dos 655 setores urbanos o indicador é exatamente zero, e apenas 24 passam de um quarto dos domicílios. As manchas escuras são poucas e bem delimitadas, com destaque para a faixa ao norte e as áreas a oeste e ao sul.

A agregação por bairro confirma a concentração e revela um degrau abrupto. Parque Aeroportuário e Lagoa Azul aparecem com 42,2% e 41,2% dos domicílios sem coleta, e o terceiro colocado, Macapaba, já cai para 8,4%. Os 2.758 domicílios nessa condição em toda a cidade cabem, em boa medida, em um punhado de bairros. Reproduza esse agrupamento por conta própria, somando as quatro colunas de destinação inadequada por name_neighborhood e dividindo pelo total de domicílios de cada bairro, e confira quantos deles concentram a maior parte do déficit.

Veja que estes três componentes do saneamento básico nem sempre caminham juntos para as mesmas partes do município, e um índice que os combine numa única nota esconde exatamente isso. É por essa razão que apresentamos os três separadamente antes de qualquer síntese.

14.6 Banheiro e sanitário

A última linha da Tabela 14.6 registrou os domicílios que não tinham banheiro nem sanitário. Ela apareceu ali como resíduo do gradiente de esgotamento, e é a ponta de um bloco que ainda não abrimos. O arquivo Domicílio classifica todos os domicílios particulares permanentes segundo a instalação sanitária de que dispõem, das quatro faixas de banheiro de uso exclusivo até a ausência completa de qualquer instalação.

## Somando os domicílios de cada instalação sanitária e contando as
## células suprimidas por sigilo em cada uma:
banheiro <- tibble(
  Instalação = c("1 banheiro de uso exclusivo", "2 banheiros de uso exclusivo",
                 "3 banheiros de uso exclusivo", "4 ou mais banheiros de uso exclusivo",
                 "Apenas banheiro de uso comum a mais de um domicílio",
                 "Apenas sanitário ou buraco para dejeções",
                 "Não tinham banheiro nem sanitário"),
  variavel = sprintf("domicilio02_V00%d", 232:238)
) |>
  mutate(
    Domicílios         = map_dbl(variavel, \(v) sum(macapa_sc[[v]], na.rm = TRUE)),
    `%`                = 100 * Domicílios / dpp,
    `Setores omitidos` = map_int(variavel, \(v) sum(is.na(macapa_sc[[v]])))
  ) |>
  select(-variavel)

## Tabela:
banheiro |>
  knitr::kable(digits = 2, align = c("l", "c", "c", "c"),
               format.args = list(big.mark = ".", decimal.mark = ","))
Tabela 14.9: Domicílios particulares permanentes de Macapá (AP) segundo a instalação sanitária disponível, Censo 2022.
Instalação Domicílios % Setores omitidos
1 banheiro de uso exclusivo 73.660 63,19 9
2 banheiros de uso exclusivo 28.422 24,38 24
3 banheiros de uso exclusivo 8.903 7,64 114
4 ou mais banheiros de uso exclusivo 3.790 3,25 177
Apenas banheiro de uso comum a mais de um domicílio 622 0,53 177
Apenas sanitário ou buraco para dejeções 308 0,26 91
Não tinham banheiro nem sanitário 44 0,04 61

Pela leitura direta, o problema estaria resolvido. Menos de um por cento dos domicílios urbanos de Macapá ficaria sem banheiro de uso exclusivo, e apenas algumas dezenas não teriam instalação nenhuma. A quarta coluna, porém, pede cautela, e é por isso que a incluímos.

Ela conta em quantos setores a célula veio ausente. Lembre-se da regra de sigilo apresentada no Capítulo 7, segundo a qual células com frequência igual a um ou dois são suprimidas dos agregados. A regra atinge com força justamente as categorias raras, que são as três últimas linhas da tabela, e o efeito é sistemático. Cada setor omitido esconde um ou dois domicílios que existem e não entram na soma, de modo que os totais dessas linhas são subestimativas, e não medidas.

AvisoO sigilo não é aleatório

É tentador tratar as células ausentes dos agregados como dados faltantes quaisquer e seguir adiante com na.rm = TRUE. Neste caso isso seria um erro de método, porque a supressão não sorteia quais células apaga. Ela apaga exatamente as pequenas, e por isso o viés tem direção conhecida, sempre para baixo, e recai sobre as categorias que descrevem as situações mais precárias. Quanto mais raro o fenômeno que se quer medir, mais dele desaparece.

O antídoto barato é o que fizemos acima, que é contar as omissões e declará-las ao lado do total. O remédio mais caro, porém mais informativo, é mudar de produto, conforme faremos a seguir.

14.6.1 O que os microdados da amostra acrescentam

Os microdados da amostra não passam por essa regra, porque não divulgam contagens por setor e sim registros individuais anonimizados, com peso amostral. Em troca do sigilo por supressão, aceitam a incerteza amostral, que vem declarada em intervalo de confiança. Como os microdados de 2022 ainda não foram divulgados, conforme discutido no Capítulo 8, trabalhamos com 2010.

O Censo 2010 tratou o assunto em duas perguntas encadeadas. A V0205 registra quantos banheiros de uso exclusivo o domicílio tem, e admite o valor zero. Só para quem respondeu zero é que se pergunta a V0206, que é a existência de sanitário ou buraco para dejeções, inclusive os localizados no terreno. Essa segunda pergunta é a que separa quem tem alguma instalação de quem não tem nenhuma.

Começamos pelas áreas de ponderação, que são a unidade de identificação geográfica dos microdados.

ap_macapa <- read_weighting_area(
  code_weighting = macapa,
  year           = 2010,
  simplified     = FALSE
)

nrow(ap_macapa)
[1] 19

São dezenove áreas de ponderação para todo o município, contra as centenas de setores urbanos das seções anteriores. A leitura dos microdados de domicílios pede a variável de interesse e mais as colunas exigidas pelo plano amostral e pelos recortes que faremos.

## Selecionando colunas dos microdados:
cols_dom <- c(
  "V0300",          # Identificador do domicílio
  "V0010",          # Peso amostral calibrado
  "code_weighting", # Área de ponderação
  "V1006",          # Situação do domicílio (urbana ou rural)
  "V4001",          # Espécie da unidade visitada
  "V0205",          # Banheiros de uso exclusivo, número
  "V0206"           # Sanitário ou buraco para dejeções, existência
)

## Lendo microdados, só das áreas de ponderação de Macapá:
md_macapa <- read_households(year = 2010, columns = cols_dom) |>
  filter(code_weighting %in% ap_macapa$code_weighting) |>
  collect()

## Conferindo o encadeamento entre as perguntas V0205 e V0206:
md_macapa |>
  summarize(
    registros            = n(),
    sem_banheiro         = sum(V0205 == "0", na.rm = TRUE),
    com_resposta_em_V0206 = sum(!is.na(V0206))
  )
# A tibble: 1 × 3
  registros sem_banheiro com_resposta_em_V0206
      <int>        <int>                 <int>
1      9166          850                   850

Os dois últimos números são iguais, e essa igualdade confirma o encadeamento das perguntas. A V0206 só foi preenchida para os domicílios que declararam zero banheiros de uso exclusivo, e vem ausente para todos os demais. Aqui o valor ausente não é sigilo nem falha de coleta, é ausência de pergunta, e tratá-lo como dado faltante levaria a conclusões erradas.

Declarado isso, montamos o plano amostral no formato do Capítulo 8, com estratificação por área de ponderação, pesos calibrados e correção de população finita.

## Total de domicílios por área de ponderação, p/ a correção de população finita:
dom_ap <- md_macapa |>
  group_by(code_weighting) |>
  summarize(n_dom = sum(V0010))

## Levando esse total para cada registro:
md_macapa <- md_macapa |>
  left_join(dom_ap, by = join_by(code_weighting))

## Montando o plano amostral:
pa_macapa <- md_macapa |>
  as_survey_design(
    strata  = code_weighting,
    weights = V0010,
    fpc     = n_dom
  )

Falta um recorte antes de estimar. O arquivo de domicílios traz também improvisados e coletivos, que não respondem a esse bloco do questionário, e traz a área rural, que este capítulo deixou de fora desde o início. Filtramos o desenho amostral, e não a tabela, para que os estratos e os pesos continuem corretos, conforme o código abaixo:

## Estimando as três situações no desenho amostral, com intervalo de confiança:
banheiro_2010 <- pa_macapa |>
  filter(V4001 == "01", V1006 == "1") |>
  mutate(
    sem_banheiro = V0205 == "0",
    so_sanitario = V0205 == "0" & V0206 == "1",
    sem_nada     = V0205 == "0" & V0206 == "2"
  ) |>
  summarize(
    sem_banheiro = survey_mean(sem_banheiro, vartype = "ci"),
    so_sanitario = survey_mean(so_sanitario, vartype = "ci"),
    sem_nada     = survey_mean(sem_nada,     vartype = "ci")
  )

## Reorganizando as estimativas em formato de tabela:
tibble(
  Situação = fct_inorder(c(
    "Sem banheiro de uso exclusivo",
    "Sem banheiro, mas com sanitário ou buraco para dejeções",
    "Sem banheiro e sem sanitário"
  )),
  `%`        = 100 * c(banheiro_2010$sem_banheiro,
                       banheiro_2010$so_sanitario,
                       banheiro_2010$sem_nada),
  Inferior   = 100 * c(banheiro_2010$sem_banheiro_low,
                       banheiro_2010$so_sanitario_low,
                       banheiro_2010$sem_nada_low),
  Superior   = 100 * c(banheiro_2010$sem_banheiro_upp,
                       banheiro_2010$so_sanitario_upp,
                       banheiro_2010$sem_nada_upp)
) |>
  knitr::kable(digits = 1, align = c("l", "c", "c", "c"),
               format.args = list(decimal.mark = ","))
Tabela 14.10: Domicílios particulares permanentes urbanos de Macapá (AP) sem banheiro de uso exclusivo, com intervalo de confiança de 95%, microdados da amostra do Censo 2010.
Situação % Inferior Superior
Sem banheiro de uso exclusivo 8,7 8,1 9,3
Sem banheiro, mas com sanitário ou buraco para dejeções 7,5 6,9 8,0
Sem banheiro e sem sanitário 1,3 1,0 1,5

Em 2010, cerca de um em cada onze domicílios urbanos de Macapá não tinha banheiro de uso exclusivo, e a maior parte desse grupo se virava com sanitário ou buraco para dejeções. O grupo sem instalação alguma ficava em torno de um por cento, o que corresponde a mais de mil domicílios na cidade. Os intervalos de confiança são estreitos, porque a amostra do Censo em Macapá é grande.

Os microdados permitem ainda descer da cidade para as áreas de ponderação, que são a menor unidade geográfica que eles identificam. Basta inserir um group_by() antes do summarize(), porque o restante do cálculo é o mesmo da tabela anterior.

Antes do mapa, porém, é preciso resolver o mesmo problema de enquadramento da Figura 14.2. As áreas de ponderação cobrem o município inteiro, inclusive a porção rural, e a maior delas tem mais de seis mil quilômetros quadrados, o que espremeria a cidade em um canto da figura. Em vez de recortar a imagem por uma caixa delimitadora, como fizemos antes, desta vez selecionamos quais polígonos entram no mapa. O teste é feito em dois passos, unindo os setores urbanos dos dois distritos centrais em uma geometria só e verificando se o centroide de cada área de ponderação cai dentro dela.

## Unindo os setores urbanos dos dois distritos centrais em uma geometria única:
urbana_2022 <- setores_geo |>
  filter(zone == "Urbana",
         name_district %in% c("Macapá", "Fazendinha")) |>
  st_union()

## Mantendo as áreas de ponderação cujo centroide cai na mancha urbana:
ap_urbanas <- ap_macapa |>
  filter(lengths(st_within(st_centroid(ap_macapa), urbana_2022)) > 0)

nrow(ap_urbanas)
[1] 15

Das dezenove áreas de ponderação de Macapá, quinze passam no teste. Entre as quatro descartadas está a maior de todas, com 6.128 km² e praticamente nenhuma sobreposição com a mancha urbana. As outras três têm entre 18% e 47% da sua superfície sobre ela, de modo que o descarte tem um custo, que é deixar de exibir a porção urbana dessas áreas. Vale registrar que o corte vale apenas para o mapa, já que as estimativas da Tabela 14.10 continuam calculadas sobre a amostra inteira.

Notast_within() e a escolha do predicado espacial

O st_within() compara duas geometrias e informa se a primeira está contida na segunda. Ele devolve uma lista com uma posição por elemento de x, e cada posição guarda os índices de y que satisfazem a relação, de modo que lengths() conta quantos são e o > 0 transforma isso no vetor lógico que o filter() espera.

A escolha do predicado é o ponto delicado. O caminho mais óbvio seria manter as áreas de ponderação que cruzam a mancha urbana, com st_intersects(), mas em Macapá isso não descartaria nada, porque as áreas rurais fazem fronteira com as urbanas e o simples encostar já conta como interseção. Testar o centroide é mais exigente e resolve o caso, ao custo de descartar áreas cuja ocupação urbana existe, mas não está no meio do polígono.

Repare ainda que a mancha urbana vem dos setores de 2022 e as áreas de ponderação são de 2010. A mistura é aceitável porque aqui a geometria de 2022 serve apenas para delimitar onde fica a cidade, e não para calcular indicador algum.

## Mesmas estimativas, agora por área de ponderação:
banheiro_ap <- pa_macapa |>
  filter(V4001 == "01", V1006 == "1") |>
  mutate(
    sem_banheiro = V0205 == "0",
    so_sanitario = V0205 == "0" & V0206 == "1",
    sem_nada     = V0205 == "0" & V0206 == "2"
  ) |>
  group_by(code_weighting) |>
  summarize(
    sem_banheiro = survey_mean(sem_banheiro),
    so_sanitario = survey_mean(so_sanitario),
    sem_nada     = survey_mean(sem_nada)
  )

## Mapa em três painéis empilhados, um por situação:
ap_urbanas |>
  left_join(banheiro_ap, by = join_by(code_weighting)) |>
  pivot_longer(c(sem_banheiro, so_sanitario, sem_nada),
               names_to  = "situacao_banheiro",
               values_to = "proporcao") |>
  mutate(situacao_banheiro = factor(
    situacao_banheiro,
    levels = c("sem_banheiro", "so_sanitario", "sem_nada"),
    labels = c("Sem banheiro de uso exclusivo",
               "Sem banheiro, com sanitário",
               "Sem banheiro e sem sanitário")
  )) |>
  ggplot() +
  geom_sf(aes(fill = 100 * proporcao), color = "white", linewidth = 0.2) +
  facet_wrap(~ situacao_banheiro, ncol = 1) +
  scale_fill_distiller(palette = "PuRd", direction = 1, name = "%",
                       na.value = "gray90") +
  coord_sf(expand = FALSE) +
  theme_minimal() +
  theme(axis.text = element_blank(), axis.ticks = element_blank(),
        panel.grid = element_blank())
Figura 14.7: Domicílios particulares permanentes urbanos sem banheiro de uso exclusivo, decompostos entre os que dispunham e os que não dispunham de sanitário, por área de ponderação, Macapá (AP), microdados da amostra do Censo 2010. Apenas as áreas de ponderação centradas na mancha urbana contínua.

A dispersão entre as áreas é considerável, com o déficit indo de 2,1% a 16,0% dos domicílios entre as quinze exibidas, quase oito vezes de uma ponta à outra da cidade. O valor mais alto do município, de 16,3%, está justamente em uma das quatro áreas que o mapa não mostra, o que serve de lembrete de que a seleção feita acima é de enquadramento e não de análise. Os dois painéis de cima são quase idênticos, com correlação de 0,98 entre eles, o que revela uma composição estável do déficit em todo o território. Em nenhuma área de ponderação o grupo que dispunha de sanitário representa menos de 70% dos domicílios sem banheiro. O painel de baixo traz menos nitidez por construção, já que o grupo sem instalação alguma não passa de 2,7% em área alguma, e ainda assim varia, ficando acima de 2% em cinco das dezenove áreas do município, duas delas entre as exibidas.

Cabe a cautela de sempre com essa unidade. Dezenove polígonos para o município inteiro, dos quais quinze aparecem no mapa, suavizam contrastes internos que os 655 setores urbanos revelariam, e por isso estes mapas não são comparáveis aos demais do capítulo, que foram construídos por setor censitário.

14.7 Drenagem urbana

Água, esgoto, lixo e banheiro são características do domicílio, e todas descrevem o que existe dentro do lote. A drenagem faz o movimento inverso, no sentido do Capítulo 11. Ela pertence à via, e por isso não está no arquivo Domicílio nem nos microdados da amostra, e sim na Pesquisa Urbanística do Entorno dos Domicílios.

Usamos o bloco de domicílios do arquivo de Entorno, pelo motivo já discutido na Seção 11.4, que é medir quantas moradias estão diante de cada situação, e não quantos metros de via existem.

## Lendo o arquivo de Entorno, no bloco de domicílios:
entorno <- read_tracts(dataset = "Entorno", year = 2022) |>
  filter(code_muni == macapa) |>
  select(code_tract, name_neighborhood,
         domicilios_V05000,
         domicilios_V05006, domicilios_V05007, domicilios_V05008,
         domicilios_V05009, domicilios_V05010, domicilios_V05011) |>
  collect() |>
  filter(code_tract %in% setores_urbanos)

## Domicílios com entorno pesquisado, que é o denominador desta seção:
investigados <- sum(entorno$domicilios_V05000, na.rm = TRUE)

## Total de domicílios ocupados dos mesmos setores, p/ comparação:
dom_urbanos <- basico |>
  filter(code_tract %in% setores_urbanos) |>
  summarize(total = sum(V0007, na.rm = TRUE)) |>
  pull(total)

## Verificando a cobertura da pesquisa:
tibble(
  setores_com_entorno = nrow(entorno),
  domicilios_investigados = investigados,
  cobertura = 100 * investigados / dom_urbanos
)
# A tibble: 1 × 3
  setores_com_entorno domicilios_investigados cobertura
                <int>                   <dbl>     <dbl>
1                 650                  116314      99.7

O denominador do Entorno é o total de domicílios com entorno pesquisado, e não o total de domicílios do setor. Feita a verificação de cobertura, calculamos o indicador:

tibble(
  Item = "Bueiro ou boca de lobo",
  sim  = sum(entorno$domicilios_V05009, na.rm = TRUE),
  nao  = sum(entorno$domicilios_V05010, na.rm = TRUE)
) |>
  mutate(`% dos domicílios investigados` = 100 * sim / investigados)
# A tibble: 1 × 4
  Item                     sim   nao `% dos domicílios investigados`
  <chr>                  <dbl> <dbl>                           <dbl>
1 Bueiro ou boca de lobo 48603 67658                            41.8

Pouco mais de quatro em cada dez domicílios de Macapá estão em face de quadra com bueiro ou boca de lobo. É um número baixo para uma cidade da Amazônia, sujeita a chuvas intensas e situada em terreno de cotas baixas, com áreas alagáveis extensas.

Levado ao mapa, o indicador mostra a distribuição espacial desse aspecto da drenagem urbana em Macapá:

## Juntando o Entorno à geometria e criando o indicador de bueiro:
entorno_geo <- macapa_geo |>
  left_join(
    entorno |> select(code_tract, domicilios_V05000, domicilios_V05009),
    by = "code_tract"
  ) |>
  mutate(
    perc_bueiro = 100 * domicilios_V05009 / domicilios_V05000
  )

## Mapa:
ggplot(entorno_geo) +
  geom_sf(aes(fill = perc_bueiro), color = NA) +
  scale_fill_distiller(palette = "PuBu", direction = 1,
                       name = "% com bueiro\n/boca de lobo\nna face de quadra",
                       na.value = "gray90", limits = c(0, 100)) +
  coord_sf(expand = FALSE) +
  theme_minimal() +
  theme(axis.text = element_blank(), axis.ticks = element_blank(),
        panel.grid = element_blank())
Figura 14.8: Proporção de domicílios em face de quadra com bueiro ou boca de lobo, por setor censitário urbano, Macapá (AP), Censo 2022.

Em 143 dos 645 setores com informação nenhum domicílio investigado está em face de quadra com bueiro, e em 56 deles todos estão. Dois terços dos setores ficam abaixo de 20% ou acima de 80%, de modo que a cobertura se distribui por áreas inteiras e não de forma gradual dentro delas.

Por bairro, a mediana fica em 30,9%. No topo aparecem Macapaba, Central, Trem, Perpétuo Socorro e Santa Inês, todos acima de 82%, e os quatro últimos formam um bloco contínuo junto à borda leste da cidade. No extremo oposto, Igarapé de Fortaleza, Ilha Mirim e Lagoa Azul não têm um único domicílio investigado com bueiro na face de quadra.

14.7.1 A drenagem em 2010 e em 2022

O bueiro é um dos seis itens que a Pesquisa do Entorno manteve entre as duas edições, conforme a Tabela 11.1 do Capítulo 11, e por isso admite comparação temporal. Recuperá-lo em 2010 exige reconstruir o mapa de códigos daquele censo, com a mesma lógica da Seção 11.6, em que cada item ocupa quatro colunas consecutivas, duas para responsável do sexo masculino e duas para o feminino.

Repare que o vetor quesitos_2010 lista os dez itens do questionário, e não apenas o que nos interessa. A posição de cada coluna é calculada por aritmética sobre a ordem em que os itens aparecem, de modo que suprimir qualquer um deles deslocaria todos os seguintes.

## Os dez itens do questionário de 2010, na ordem em que aparecem no arquivo:
quesitos_2010 <- c(
  "Identificação do logradouro", "Iluminação pública", "Pavimentação",
  "Calçada", "Meio-fio ou guia", "Bueiro ou boca de lobo",
  "Rampa para cadeirante", "Arborização", "Esgoto a céu aberto",
  "Lixo acumulado nos logradouros"
)

## Montando o dicionário de códigos, quatro colunas por item:
dic_2010 <- tibble(
  quesito = quesitos_2010,
  inicio  = 382 + 4 * (seq_along(quesitos_2010) - 1)
) |>
  mutate(
    masc_existe = sprintf("entorno02_V%03d", inicio),
    masc_nao    = sprintf("entorno02_V%03d", inicio + 1),
    fem_existe  = sprintf("entorno02_V%03d", inicio + 2),
    fem_nao     = sprintf("entorno02_V%03d", inicio + 3)
  )

## Lendo o Entorno de 2010:
entorno_2010 <- read_tracts(dataset = "Entorno", year = 2010) |>
  filter(code_muni == macapa) |>
  collect()

## Somando existência e total de cada item, juntando os dois sexos do responsável:
resumo_2010 <- dic_2010 |>
  rowwise() |>
  mutate(
    existe = sum(entorno_2010[[masc_existe]], entorno_2010[[fem_existe]],
                 na.rm = TRUE),
    total  = existe + sum(entorno_2010[[masc_nao]], entorno_2010[[fem_nao]],
                          na.rm = TRUE)
  ) |>
  ungroup()

n_distinct(resumo_2010$total)
[1] 1

Um único valor de total nos dez itens confirma que o mapeamento de códigos está correto, porque todos eles repartem o mesmo conjunto de domicílios investigados. Validado o dicionário, extraímos dele o item de interesse e o confrontamos com 2022.

tibble(
  Item = "Bueiro ou boca de lobo",
  `2010` = 100 * resumo_2010$existe[resumo_2010$quesito == "Bueiro ou boca de lobo"] /
                 resumo_2010$total[resumo_2010$quesito == "Bueiro ou boca de lobo"],
  `2022` = 100 * sum(entorno$domicilios_V05009, na.rm = TRUE) / investigados
) 
# A tibble: 1 × 3
  Item                   `2010` `2022`
  <chr>                   <dbl>  <dbl>
1 Bueiro ou boca de lobo   18.9   41.8

A drenagem avançou de forma expressiva em doze anos, passando de menos de um quinto para mais de dois quintos dos domicílios investigados. Vale a ressalva de que o universo da pesquisa mudou entre as duas edições, como discutido no Capítulo 11, o que recomenda ler os dois valores como ordem de grandeza, e não como variação exata.

14.8 Síntese

Os quatro componentes percorridos neste capítulo descrevem a mesma cidade em estágios muito diferentes, e é essa defasagem entre eles o principal resultado. A água chega encanada até dentro de nove em cada dez domicílios, e a rede pública atende menos da metade, de modo que o encanamento interno de Macapá foi resolvido em boa parte por poço. O esgotamento é onde a carência é mais profunda, com a fossa séptica não ligada à rede e a fossa rudimentar respondendo por cerca de sete em cada dez domicílios e um em cada dez lançando direto em vala ou curso d’água, concentrado em um bloco contínuo de seis bairros. A coleta de lixo é o oposto disso, alcançando mais de 97% dos domicílios e deixando um déficit restrito a dois bairros. A drenagem fica em pouco mais de quatro em cada dez domicílios, distribuída de forma quase binária, com o setor inteiro servido ou inteiro descoberto, e foi o componente que mais avançou entre as duas edições da Pesquisa do Entorno.

Nada disso apareceria em uma nota única. Um índice que combinasse os quatro componentes atribuiria a Macapá um valor intermediário que não descreve nenhuma das quatro situações, e foi por essa razão que tomamos do IVS apenas o critério de adequação, sem reproduzir o índice. O mesmo cuidado valeu para a escolha da fonte e da unidade. Os agregados sustentaram o maior detalhe territorial, com 655 setores urbanos, e pararam onde o sigilo começa, porque a supressão de células não é aleatória e atinge justamente as categorias raras, que são as que descrevem precariedade, sempre empurrando o resultado para baixo. Os microdados da amostra contornaram esse limite no caso do banheiro, ao preço de trocar os setores por dezenove áreas de ponderação e recuar para 2010. E a Pesquisa do Entorno respondeu o que nenhum dos dois alcança, porque a drenagem não é característica do domicílio e sim da via.

A infraestrutura urbana, no recorte do IVS, tem ainda um terceiro indicador que este capítulo não tratou, que é o tempo de deslocamento dos trabalhadores de baixa renda. Descrito o que chega até o domicílio e o que sai dele, o capítulo seguinte trata de como as pessoas se deslocam a partir dele.

14.9 Exercícios

  1. Recalcule os dois indicadores de inadequação da Seção 14.2 para o município inteiro, sem a restrição aos setores urbanos, e compare com os valores obtidos no capítulo. Explique por que a diferença aparece e discuta em que situação a restrição urbana seria inadequada.

  2. Os agregados de 2022 trazem o acesso à rede de água e à rede de esgoto já cruzado com a cor ou raça da pessoa responsável pelo domicílio, nas variáveis V00143 a V00147 e V00341 a V00345. Os totais de responsáveis por cor ou raça estão no arquivo Pessoas, em V01332 a V01336. Calcule, para os setores urbanos de Macapá, o percentual de acesso a cada uma das duas redes por cor ou raça do responsável, usando como denominador o total de responsáveis daquele grupo. Em seguida, refaça a conta usando como denominador o total de domicílios e escreva, para cada versão, a frase que a descreveria corretamente na legenda de uma tabela.

  3. Reproduza a tabela do gradiente de esgotamento da Seção 14.4 para a capital do seu estado e compare a distribuição das oito categorias com a de Macapá. Identifique qual categoria concentra a maior diferença entre os dois municípios e discuta o que isso revela sobre o modelo de saneamento predominante em cada um.

  4. O indicador de esgoto a céu aberto de 2010 descreve o espaço público, enquanto o de destinação do esgoto descreve o domicílio. Para os setores de Macapá em que ambos existem, verifique se as duas informações são coerentes entre si e descreva os casos em que elas divergem, propondo uma explicação para a divergência.


  1. Lembre-se de instalá-los com install.packages() caso ainda não o tenha feito↩︎