Diagnóstico Socioambiental Participativo

Codificação e análise SWOT com Synesis para diagnósticos comunitários

Este documento mostra como usar Synesis para estruturar um Diagnóstico Socioambiental Participativo (DSAP) — um processo que combina dados técnicos e percepções comunitárias para avaliar a sustentabilidade de uma localidade. O template proposto integra codificação qualitativa, análise SWOT e dimensões da sustentabilidade em uma única estrutura compilável.

Dados fictícios

Todos os exemplos apresentados aqui são fictícios, criados para ilustrar o uso do Synesis. A comunidade, as fontes e os fatores são inventados para fins didáticos.


1 Visão geral do método

Há diversas formas de realizar um DSAP, em nosso exemplo utilizaremos o seguinte método:

  1. Leitura técnica: levantamento de dados referenciais sobre a comunidade (relatórios, estudos ambientais, dados censitários)
  2. Leitura comunitária: oficinas participativas onde moradores identificam fatores positivos e negativos de sua realidade
  3. Itemização: extração de unidades de análise — trechos de texto que contêm uma ideia principal
  4. Codificação: atribuição de temas/fatores a cada item, usando codificação descritiva ou in vivo
  5. Categorização SWOT: cada fator é classificado como Força, Fraqueza, Oportunidade ou Ameaça
  6. Dimensões da sustentabilidade: cada fator é associado a uma dimensão (ambiental, sociocultural, econômica, governamental)
  7. Pontuação de significância: atribuição de importância para viabilizar comparações quantitativas

O template Synesis formaliza todas essas etapas em uma estrutura validável pelo compilador.

Trilha analítica e trilha de auditoria

Um diagnóstico participativo rigoroso precisa de duas trilhas rastreáveis:

  • Trilha analítica: o registro das decisões interpretativas do pesquisador — por que este trecho foi codificado com este fator, por que recebeu esta classificação SWOT. No template, o campo resumo (MEMO) cumpre esse papel: cada item carrega a justificativa do pesquisador junto ao dado.
  • Trilha de auditoria: a rastreabilidade de cada interpretação até o dado bruto que a originou. O campo citação (QUOTATION) vincula cada codificação ao excerto exato da fonte, e a referência @fonte identifica de onde o excerto foi extraído.

Juntas, essas trilhas permitem que qualquer leitor percorra o caminho inverso — do resultado agregado (escala de sustentabilidade) até a fala original do morador ou o trecho do relatório técnico que o fundamenta.


2 O template (arquivo .synt)

O template organiza o DSAP em três blocos: fontes, itens e ontologia.

2.1 Fontes: quem disse

SOURCE FIELDS
    REQUIRED tipo_ref
END SOURCE FIELDS

FIELD tipo_ref TYPE ENUMERATED
    SCOPE SOURCE
    DESCRIPTION Define o tipo de referência utilizada
    VALUES
        pri: Referência primária, entrevistas
        sec: Referência secundária, blogs, jornais, revistas, podcasts
        ref: Artigos científicos, documentos oficiais
    END VALUES
END FIELD

A distinção entre pri, sec e ref permite filtrar resultados por tipo de evidência. Dados de oficinas comunitárias (pri) podem ser analisados separadamente de relatórios técnicos (ref).

2.2 Itens: o que foi dito e como se interpreta

ITEM FIELDS
    REQUIRED citação, resumo, fator, swot, importância
END ITEM FIELDS

FIELD citação TYPE QUOTATION
    SCOPE ITEM
    DESCRIPTION Excerto textual extraído da fonte bibliográfica
END FIELD

FIELD resumo TYPE MEMO
    SCOPE ITEM
    DESCRIPTION Memo analítico explicando a interpretação
END FIELD

FIELD fator TYPE CODE
    SCOPE ITEM
    DESCRIPTION Palavra-chave temática
END FIELD

FIELD swot TYPE ENUMERATED
    SCOPE ITEM
    DESCRIPTION Elementos da matriz SWOT
    VALUES
        fo: Força (perspectiva interna)
        fr: Fraqueza (perspectiva interna)
        op: Oportunidade (perspectiva externa)
        am: Ameaça (perspectiva externa)
    END VALUES
END FIELD

FIELD importância TYPE SCALE
    SCOPE ITEM
    FORMAT [0..1]
    DESCRIPTION Importância do fator (0=nula ou baixa, 0.5=moderada, 1=alta)
END FIELD

Cada item combina cinco tipos de campo: QUOTATION (o dado bruto), MEMO (interpretação), CODE (fator temático vinculado à ontologia), ENUMERATED (classificação SWOT) e SCALE (significância).

2.3 Ontologia: o que cada fator significa

ONTOLOGY FIELDS
    REQUIRED description, dimensão_sustentabilidade
END ONTOLOGY FIELDS

FIELD description TYPE TEXT
    SCOPE ONTOLOGY
    DESCRIPTION Descrição do fator
END FIELD

FIELD dimensão_sustentabilidade TYPE ENUMERATED
    SCOPE ONTOLOGY
    DESCRIPTION Dimensões da sustentabilidade
    VALUES
        ambiental: Ecossistemas, recursos naturais, fauna, flora
        sociocultural: Qualidade de vida, valores culturais, intergeracionalidade
        econômica: Investimentos, comércio, empregabilidade
        governamental: Infraestrutura, sustentabilidade jurídica, justiça social
    END VALUES
END FIELD
Composição de tipos

Este template usa 5 tipos de campo em um único projeto: QUOTATION, MEMO, CODE, ENUMERATED e SCALE. Juntos, eles expressam o pipeline completo do nosso DSAP: extração → interpretação → codificação → classificação → pontuação.


3 Exemplos de fontes

Os exemplos a seguir utilizam uma comunidade fictícia — Vila dos Coqueiros, uma vila pesqueira costeira.

SOURCE @oficina_coqueiros2026
    tipo_ref: pri
END SOURCE

SOURCE @jornal_litoral2026
    tipo_ref: sec
END SOURCE

SOURCE @relatorio_ambiental2025
    tipo_ref: ref
END SOURCE
  • @oficina_coqueiros2026 — oficina participativa realizada com moradores e pescadores
  • @jornal_litoral2026 — reportagem publicada em jornal regional
  • @relatorio_ambiental2025 — relatório técnico de monitoramento ambiental

4 Exemplos de itens

Cada item extrai um excerto, interpreta-o e classifica-o. Abaixo, um exemplo para cada categoria SWOT.


4.1 Força

ITEM @oficina_coqueiros2026
    citação: "A pesca artesanal aqui sustenta mais da metade
              das famílias. Meu avô já pescava nesse mesmo
              canto, meu pai também."

    resumo: A pesca artesanal é a principal atividade
            econômica da comunidade, com continuidade
            intergeracional que reforça tanto a economia
            local quanto a identidade cultural.

    fator: Pesca_Artesanal
    swot: fo
    importância: 1
END ITEM

Fator interno positivo: a pesca artesanal sustenta famílias e carrega significado cultural. Importância alta (1).


4.2 Fraqueza

ITEM @oficina_coqueiros2026
    citação: "O pessoal joga o lixo no manguezal porque
              não tem coleta. A prefeitura não vem aqui."

    resumo: Ausência de coleta de resíduos leva ao descarte
            inadequado no ecossistema de mangue, gerando
            impacto ambiental direto.

    fator: Descarte_Residuos
    swot: fr
    importância: 0.5
END ITEM

Fator interno negativo: prática local de descarte inadequado, agravada pela ausência de serviço público. Importância moderada (0.5).


4.3 Oportunidade

ITEM @jornal_litoral2026
    citação: "Programa federal de turismo de base comunitária
              selecionou cinco vilas do litoral para receber
              capacitação e infraestrutura."

    resumo: Programa governamental pode diversificar a
            economia local e valorizar ativos culturais
            da comunidade.

    fator: Turismo_Comunitario
    swot: op
    importância: 1
END ITEM

Fator externo positivo: oportunidade de diversificação econômica vinda de política pública. Importância alta (1).


4.4 Ameaça

ITEM @relatorio_ambiental2025
    citação: "O monitoramento identificou taxa de assoreamento
              acelerado na foz do rio Coqueiros, com redução
              de 30% na profundidade do canal principal nos
              últimos cinco anos."

    resumo: Assoreamento compromete a navegabilidade e os
            estoques pesqueiros, ameaçando a principal
            atividade econômica da comunidade.

    fator: Assoreamento
    swot: am
    importância: 1
END ITEM

Fator externo negativo: processo ambiental que independe da ação da comunidade, mas afeta diretamente sua sustentabilidade. Importância alta (1).


4.5 Mais itens

Os fatores Patrimonio_Cultural e Saneamento_Basico, presentes na ontologia, também aparecem como itens:

ITEM @oficina_coqueiros2026
    citação: "As festas de São Pedro e a farinhada são
              tradição antiga. Todo mundo participa, até
              quem já saiu da vila volta pra isso."

    resumo: Festividades tradicionais e práticas coletivas
            de produção reforçam coesão social e identidade
            cultural da comunidade.

    fator: Patrimonio_Cultural
    swot: fo
    importância: 0.5
END ITEM

ITEM @oficina_coqueiros2026
    citação: "Não tem rede de esgoto. Cada um resolve do
              seu jeito --- fossa, vala, ou vai direto pro
              rio."

    resumo: Ausência de esgotamento sanitário gera soluções
            improvisadas com risco de contaminação hídrica.

    fator: Saneamento_Basico
    swot: fr
    importância: 1
END ITEM

5 Ontologia: os fatores e suas dimensões

Cada fator mencionado nos itens deve existir na ontologia com sua descrição e dimensão de sustentabilidade.

ONTOLOGY Pesca_Artesanal
    description: Atividade pesqueira tradicional de pequena
                 escala, praticada com técnicas transmitidas
                 entre gerações.
    dimensão_sustentabilidade: econômica
END ONTOLOGY

ONTOLOGY Descarte_Residuos
    description: Descarte inadequado de resíduos sólidos em
                 áreas naturais, decorrente da ausência de
                 coleta pública e de práticas locais de manejo.
    dimensão_sustentabilidade: ambiental
END ONTOLOGY

ONTOLOGY Turismo_Comunitario
    description: Modelo de turismo gerido pela própria
                 comunidade, que valoriza ativos culturais
                 e naturais locais.
    dimensão_sustentabilidade: econômica
END ONTOLOGY

ONTOLOGY Assoreamento
    description: Acúmulo de sedimentos em corpos d'água que
                 reduz profundidade e compromete a navegação
                 e a biodiversidade aquática.
    dimensão_sustentabilidade: ambiental
END ONTOLOGY

ONTOLOGY Saneamento_Basico
    description: Conjunto de serviços de abastecimento de
                 água, esgotamento sanitário e drenagem
                 urbana prestados pelo poder público.
    dimensão_sustentabilidade: governamental
END ONTOLOGY

ONTOLOGY Patrimonio_Cultural
    description: Práticas, saberes e expressões culturais
                 transmitidas entre gerações na comunidade.
    dimensão_sustentabilidade: sociocultural
END ONTOLOGY
Uma dimensão por conceito

Cada fator recebe uma dimensão principal. Pesca_Artesanal é classificada como econômica (sua função primária é a geração de renda), embora também tenha relevância sociocultural. A dimensão escolhida reflete o aspecto predominante no contexto do diagnóstico.

Objetivos do Desenvolvimento Sustentável

Além de dimensões da sustentabilidade, uma categoria ODS pode ser criada para identificar em que medida os objetivos do desenvolvimento sustentável estão sendo atingidos na comunidade avaliada.


6 Análise e exportação

Uma vez compilados, e exportados, os dados permitem diversas análises:

  • Filtrar por SWOT: quantas forças vs. fraquezas? A comunidade tem mais oportunidades ou ameaças?
  • Agrupar por dimensão: qual dimensão da sustentabilidade concentra mais fraquezas?
  • Comparar comunidades: aplicando o mesmo template em várias vilas, os resultados são diretamente comparáveis
  • Exportar: JSON para visualizações, Neo4j para grafos de relações entre fatores, Excel ou Jupiter Lab para matrizes SWOT

A estrutura compilável garante que todos os fatores mencionados nos itens existam na ontologia e que todos os campos obrigatórios estejam preenchidos — erros de referência ou campos ausentes são detectados antes da análise.

6.1 Escala de sustentabilidade local

Após a exportação dos dados, os pontos de importância podem ser combinados em uma escala de sustentabilidade de 0 a 10, onde 0 é muito desfavorável e 10 é muito favorável. A fórmula normaliza a razão entre fatores positivos e negativos:

\[ \text{Escala} = \frac{(F + O) - (Fr + A)}{(F + O) + (Fr + A)} \times 5 + 5 \]

Onde \(F\), \(O\), \(Fr\) e \(A\) são as somas dos pontos de importância de forças, oportunidades, fraquezas e ameaças, respectivamente.

Propriedades da fórmula:

  • Se todos os fatores forem positivos (\(Fr + A = 0\)): resultado = 10
  • Se todos forem negativos (\(F + O = 0\)): resultado = 0
  • Se positivos e negativos se equilibram (\(F + O = Fr + A\)): resultado = 5
  • O resultado está sempre no intervalo [0, 10]

6.1.1 Exemplo com os dados da Vila dos Coqueiros

Somando os pontos de importância dos itens apresentados:

Pontos de importância por categoria SWOT
Categoria Fatores Importância
Forças (F) Pesca_Artesanal (1) + Patrimonio_Cultural (0.5) 1.5
Oportunidades (O) Turismo_Comunitario (1) 1.0
Fraquezas (Fr) Descarte_Residuos (0.5) + Saneamento_Basico (1) 1.5
Ameaças (A) Assoreamento (1) 1.0

Aplicando a fórmula:

\[ \text{Escala} = \frac{(1{,}5 + 1{,}0) - (1{,}5 + 1{,}0)}{(1{,}5 + 1{,}0) + (1{,}5 + 1{,}0)} \times 5 + 5 = \frac{0}{5} \times 5 + 5 = 5{,}0 \]

O resultado 5,0 situa a Vila dos Coqueiros na faixa de Estagnação — os fatores positivos e negativos se equilibram.

6.1.2 Classes da escala

Escala de sustentabilidade local
Classe De Até
Muito desfavorável 0,00 2,50
Desfavorável 2,51 4,25
Estagnação 4,26 5,75
Favorável 5,76 7,50
Muito favorável 7,51 10,00
Limitações da fórmula

A fórmula exige que ao menos um fator tenha sido identificado (\(F + O + Fr + A > 0\)), caso contrário ocorre divisão por zero. Além disso, o resultado é sensível ao número de fatores: uma comunidade com muitos fatores pontuados tende a convergir para 5, enquanto comunidades com poucos fatores podem oscilar mais. Para comparações entre comunidades, é importante manter critérios de codificação consistentes.


7 Métricas da Vila dos Coqueiros

As visualizações abaixo sintetizam os dados apresentados nesta página — todos extraídos diretamente dos exemplos de itens, fontes e ontologia da Vila dos Coqueiros.

Mostrar código
import plotly.graph_objects as go
import plotly.express as px
import pandas as pd
from plotly.subplots import make_subplots

# Dados extraídos dos exemplos da página
fatores = pd.DataFrame([
    {"fator": "Pesca Artesanal",    "swot": "Força",      "dimensao": "Econômica",      "importancia": 1.0},
    {"fator": "Patrimônio Cultural", "swot": "Força",      "dimensao": "Sociocultural",   "importancia": 0.5},
    {"fator": "Turismo Comunitário", "swot": "Oportunidade","dimensao": "Econômica",      "importancia": 1.0},
    {"fator": "Descarte Resíduos",   "swot": "Fraqueza",   "dimensao": "Ambiental",       "importancia": 0.5},
    {"fator": "Saneamento Básico",   "swot": "Fraqueza",   "dimensao": "Governamental",   "importancia": 1.0},
    {"fator": "Assoreamento",        "swot": "Ameaça",     "dimensao": "Ambiental",       "importancia": 1.0},
])

fontes = pd.DataFrame([
    {"tipo": "Primária (oficina)",    "sigla": "pri", "count": 1},
    {"tipo": "Secundária (jornal)",   "sigla": "sec", "count": 1},
    {"tipo": "Referência (relatório)","sigla": "ref", "count": 1},
])

F  = fatores[fatores["swot"] == "Força"]["importancia"].sum()
O  = fatores[fatores["swot"] == "Oportunidade"]["importancia"].sum()
Fr = fatores[fatores["swot"] == "Fraqueza"]["importancia"].sum()
A  = fatores[fatores["swot"] == "Ameaça"]["importancia"].sum()
escala = ((F + O) - (Fr + A)) / ((F + O) + (Fr + A)) * 5 + 5

def classe_escala(v):
    if v <= 2.50: return "Muito desfavorável"
    if v <= 4.25: return "Desfavorável"
    if v <= 5.75: return "Estagnação"
    if v <= 7.50: return "Favorável"
    return "Muito favorável"

classe = classe_escala(escala)

7.1 Escala de sustentabilidade

Mostrar código
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
import matplotlib.gridspec as gridspec
import numpy as np

faixas = [
    {"label": "Muito desfavorável", "inicio": 0,   "fim": 2.5, "cor": "#E57373", "txt": "#7f0000"},
    {"label": "Desfavorável",       "inicio": 2.5, "fim": 4.3, "cor": "#FFB74D", "txt": "#6d3b00"},
    {"label": "Estagnação",         "inicio": 4.3, "fim": 5.8, "cor": "#FFF176", "txt": "#5a4a00"},
    {"label": "Favorável",          "inicio": 5.8, "fim": 7.5, "cor": "#81C784", "txt": "#1b4d1e"},
    {"label": "Muito favorável",    "inicio": 7.5, "fim": 10,  "cor": "#388E3C", "txt": "#ffffff"},
]

def val_para_rad(v):
    return np.pi - (v / 10) * np.pi

fig = plt.figure(figsize=(9, 6), facecolor="white")
gs  = gridspec.GridSpec(2, 1, height_ratios=[5, 1], hspace=0.05)

# ── Eixo polar (gauge) ────────────────────────────────────────────────────────
ax = fig.add_subplot(gs[0], projection="polar")
ax.set_facecolor("white")

for f in faixas:
    theta_ini = val_para_rad(f["fim"])
    largura   = val_para_rad(f["inicio"]) - val_para_rad(f["fim"])
    ax.bar(x=theta_ini, width=largura, height=0.52, bottom=1.98,
           color=f["cor"], edgecolor="white", linewidth=2.5, align="edge")

# Marcadores numéricos nos limites
for v in [0, 2.5, 4.3, 5.8, 7.5, 10]:
    ax.annotate(f"{v:g}".replace(".", ","),
                xy=(val_para_rad(v), 2.58),
                ha="center", va="center",
                fontsize=8.5, color="#888888")

# Ponteiro wedge
ax.annotate("", xytext=(0, 0), xy=(val_para_rad(escala), 1.88),
            arrowprops=dict(arrowstyle="wedge,tail_width=0.45",
                            color="#1A3A5C", shrinkA=0))

# Círculo central com valor
ax.annotate(f"{escala:.1f}".replace(".", ","),
            xy=(0, 0), xycoords="data",
            ha="center", va="center",
            fontsize=28, fontweight="bold", color="white",
            bbox=dict(boxstyle="circle,pad=0.38", facecolor="#1A3A5C", linewidth=0))

ax.set_ylim(0, 3)
ax.set_xlim(0, np.pi)
ax.set_axis_off()

# Título e classe acima do gauge
fig.text(0.5, 0.96, "Escala de Sustentabilidade Local",
         ha="center", va="top", fontsize=13, fontweight="bold", color="#2C3E50")
fig.text(0.5, 0.90, classe,
         ha="center", va="top", fontsize=11, color="#7F8C8D")

# ── Eixo cartesiano (legenda horizontal) ─────────────────────────────────────
ax2 = fig.add_subplot(gs[1])
ax2.set_facecolor("white")
ax2.set_axis_off()

n = len(faixas)
chip_w, chip_h = 0.17, 0.55
gap = (1.0 - n * chip_w) / (n + 1)

for i, f in enumerate(faixas):
    x = gap + i * (chip_w + gap)
    rect = mpatches.FancyBboxPatch(
        (x, 0.2), chip_w, chip_h,
        boxstyle="round,pad=0.02",
        facecolor=f["cor"], edgecolor="none",
        transform=ax2.transAxes, clip_on=False,
    )
    ax2.add_patch(rect)
    ax2.text(x + chip_w / 2, 0.2 + chip_h / 2, f["label"],
             ha="center", va="center",
             fontsize=8.2, fontweight="bold", color=f["txt"],
             transform=ax2.transAxes)

plt.show()
Figura 1: Escala de sustentabilidade local da Vila dos Coqueiros (0–10).

7.2 Distribuição SWOT

Mostrar código
swot_agg = fatores.groupby("swot")["importancia"].sum().reset_index()
swot_agg.columns = ["Categoria", "Importância"]

cor_map = {
    "Força":       "#2E7D32",
    "Oportunidade":"#7CB342",
    "Fraqueza":    "#EF6C00",
    "Ameaça":      "#C62828",
}
ordem = ["Força", "Oportunidade", "Fraqueza", "Ameaça"]
swot_agg["Categoria"] = pd.Categorical(swot_agg["Categoria"], categories=ordem, ordered=True)
swot_agg = swot_agg.sort_values("Categoria")

fig = px.bar(
    swot_agg,
    x="Categoria", y="Importância",
    color="Categoria",
    color_discrete_map=cor_map,
    text="Importância",
    height=320,
)
fig.update_traces(texttemplate="%{text:.1f}", textposition="outside", width=0.45)
fig.update_layout(
    template="plotly_white",
    showlegend=False,
    font=dict(size=13),
    yaxis=dict(range=[0, 2], title="Importância acumulada"),
    xaxis_title="",
    margin=dict(t=20, b=10),
    shapes=[
        dict(type="line", x0=-0.5, x1=1.5, y0=0, y1=0,
             line=dict(color="#ccc", width=1)),
        dict(type="rect", x0=1.5, x1=3.5, y0=0, y1=2,
             fillcolor="rgba(198,40,40,0.04)", line_width=0),
    ],
)
fig.add_annotation(x=0.5, y=1.85, text="Positivos", showarrow=False,
                   font=dict(color="#2E7D32", size=12))
fig.add_annotation(x=2.5, y=1.85, text="Negativos", showarrow=False,
                   font=dict(color="#C62828", size=12))
fig.show()
Figura 2: Importância acumulada por categoria SWOT. Positivos (F+O) vs. negativos (Fr+A).

7.3 Fatores por dimensão da sustentabilidade

Mostrar código
pivot = fatores.groupby(["dimensao", "swot"])["importancia"].sum().reset_index()
pivot.columns = ["Dimensão", "Categoria", "Importância"]

cor_map2 = {
    "Força": "#2E7D32", "Oportunidade": "#7CB342",
    "Fraqueza": "#EF6C00", "Ameaça": "#C62828",
}
fig = px.bar(
    pivot,
    x="Dimensão", y="Importância",
    color="Categoria",
    color_discrete_map=cor_map2,
    barmode="group",
    text="Importância",
    height=350,
    category_orders={"Categoria": ordem},
)
fig.update_traces(texttemplate="%{text:.1f}", textposition="outside")
fig.update_layout(
    template="plotly_white",
    font=dict(size=12),
    legend_title_text="",
    yaxis=dict(range=[0, 1.4], title="Importância"),
    xaxis_title="",
    margin=dict(t=20, b=10),
)
fig.show()
Figura 3: Importância total dos fatores por dimensão de sustentabilidade e categoria SWOT.

8 Resumo

Pipeline do DSAP com Synesis
Etapa Quem faz O que produz
Leitura técnica Equipe técnica Dados referênciais sobre a comunidade
Leitura comunitária Comunidade + facilitador Percepções locais (oficinas participativas)
Design do template Pesquisador .synt com campos SWOT, dimensões e significância
Itemização e codificação Pesquisador .syn com itens, fatores e classificações
Definição da ontologia Pesquisador .syno com descrição e dimensão de cada fator
Validação estrutural Compilador Synesis Erros de referência, campos ausentes, tipos
Exportação e análise Compilador Synesis JSON, Jupyter, R, Excel para análise quantitativa