Créditos, Metodologia, Missão e Recomendações

O P7CO® EcoResupply visa democratizar o acesso à informação ambiental crítica, com rigor e transparência. O Mapa de Incêndios apresenta, em quase tempo real, as ocorrências activas em Portugal (continente e ilhas), a partir de dados públicos.

  • Origem primária: Fogos.pt (plataforma cidadã) que agrega os dados oficiais da ANEPC.
  • Actualização automática: ciclos periódicos; o relógio de desfasamento reflecte a latência ANEPC → Fogos.pt → P7CO.
  • Geolocalização aproximada: as coordenadas podem ser generalizadas/anonimizadas na origem por segurança.

Incêndio severo: orientações essenciais

  • Perigo imediato: Afaste-se rapidamente das frentes de fogo. Siga sempre as instruções das autoridades locais e não tente regressar a habitações ou terrenos em risco. Informação oficial.
  • Alerta/denúncia: Se avistar um foco de incêndio, ligue de imediato o 112. Pode também contactar a GNR ou os bombeiros locais.
  • Evacuação: Respeite todos os avisos de evacuação emitidos pela ANEPC / Proteção Civil. Abandone a área de forma calma e ordenada, ajudando vizinhos idosos ou com mobilidade reduzida.
  • Se ficar cercado por fogo: Procure zonas já queimadas ou espaços abertos sem vegetação. Proteja-se com roupas de algodão, mantenha o corpo baixo para evitar inalar fumo e cubra nariz e boca com pano húmido.
  • Fumo e saúde: Evite esforços físicos em ambientes com fumo denso. Feche portas e janelas em casa para reduzir a entrada de partículas. Em caso de sintomas respiratórios ligue SNS 24 (808 24 24 24). Direção-Geral da Saúde.
  • Grupos vulneráveis: Crianças, idosos, grávidas e pessoas com doenças respiratórias ou cardíacas devem ser prioritariamente protegidos e retirados de zonas afetadas pelo fumo.
  • Informação fiável: Consulte apenas fontes oficiais: ANEPC, IPMA, rádios locais ou comunicados das autoridades. Desconfie de rumores em redes sociais.

Estas orientações são reproduzidas a partir de fontes oficiais (ANEPC, DGS, GNR, IPMA, ePortugal). Verifique sempre a informação mais recente junto das entidades competentes.

VOST vs. Copernicus — regras, estilos e semântica

VOST é sempre Área de Interesse (AOI) — nunca “Delineation”. Os polígonos exibem apenas popup de área (badge por origem), e os pinos permanecem oficiais ANEPC/Fogos.pt (sem informação VOST no pino).

Copernicus — Delineation (azul sólido, com pulso) Copernicus — AOI (azul sólido) VOST — AOI (vermelho sólido)
  • Popup (apenas áreas): badge azul para Copernicus, vermelho para VOST, métricas (área, perímetro, raio), data (se KML tiver), e aviso “valores aproximados”.
  • Pinos: “Em Curso” usa flame icon; outros estados usam bola suave (apenas dados oficiais).
  • Heatmap: cop-delineation = 1.0, cop-aoi = 0.25, vost-aoi = 0.20, meia‑vida 24–36 h.

Technical documentation of the map (EN)

0) Dependencies (Leaflet and Heatmap)

<script src="https://unpkg.com/leaflet/dist/leaflet.js"></script>
<script src="https://unpkg.com/leaflet.heat/dist/leaflet-heat.js"></script>
Formula (concept): \( \text{Map}=\text{Leaflet}\oplus\text{HeatLayer} \)
Example: A single Leaflet map with one heat layer for density and one pulse layer for hotspots.

1) Encapsulation and base configuration

(function(){ "use strict";
const API_URL = 'https://api.fogos.pt/new/fires';
const PT_CENTER = [39.7,-8.0], PT_ZOOM = 6.4;
})();
Config set: \(\{\text{endpoint},\text{center},\text{zoom}\}\)
Example: Center on continental Portugal, zoom ≈ 6.4.

2) Status weights & time decay

Status weight: \( w_s\in\{ \text{curso}:1.00,\ \text{resolução}:0.55,\ \text{conclusão}:0.25,\ \text{vigilância}:0.05,\ \text{despacho}:0.15\} \)
Recency: \( f_\text{rec}(t;h)=0.5^{\,t/h} \)
Example: Resolução, \(t=8h\), \(h=8h\) ⇒ \(f_\text{rec}=0.5\); \(w_s=0.55\).

3) Raw incident intensity

\( I_\text{raw}= \big(1 + 1\cdot \text{personnel} + 0.5\cdot \text{ground} + 6\cdot \text{air}\big)\cdot w_s\cdot f_\text{rec} \)
Example: 80 personnel, 20 ground, 2 air, “Em Curso” (\(w_s=1\)), \(t=6h, h=12h\): \(f_\text{rec}=0.5^{6/12}=0.707\); base \(=1+80+10+12=103\); \(I_\text{raw}\approx 103\cdot0.707=72.9\).

4) Percentile P95 normalisation

\( I_\text{norm} = \min\!\big(1.35,\ I_\text{raw}/P95\big) \)
Example: \(P95=60\); \(I_\text{raw}=72.9\) ⇒ \(I_\text{norm}=1.215\).

5) Polygon contribution score

Compactness \(c=\frac{4\pi A}{P^2}\in(0,1]\); area lift \(f_\text{area}=\min\!\big(1.2,\ \frac{\log_{10}(A_{ha}+10)}{3}\big)\); recency \(0.5^{t/h_k}\) with \(h_k=24\) (delineation) or \(36\) (AOI); kind \(k\in\{1.0\text{ (cop-del)},0.25\text{ (cop-aoi)},0.20\text{ (vost-aoi)},0.6\text{ (generic)}\}\). Score: \( S = f_\text{area}\cdot c\cdot 0.5^{t/h_k}\cdot k \).
Example: Copernicus Delineation: \(k=1.0\), \(t=12h\) ⇒ \(f_\text{rec}=0.707\). \(c=0.80\), \(f_\text{area}=1.10\) ⇒ \(S\approx 1.10\cdot0.80\cdot0.707\cdot1.0=0.622\).

6) Radial sampling for heat distribution

Radius (km): \(R_{km}=2 + 1.1\sqrt{r}\), with \(r=\text{personnel}+\text{ground}+6\cdot\text{air}\).
Example: \(r=80+20+6\cdot2=112\) ⇒ \(R_{km}\approx 13.6\).

7) KML kind mapping (enum + date extraction)

// 'cop-delineation' | 'cop-aoi' | 'vost-aoi' | 'generic'
function parseKmlKindAndDate(kmlText){
  const t = String(kmlText||''); const tl = t.toLowerCase();
  const isVost = /vost/i.test(t);
  const isCopDel = /(burnt|affected|delineation|monit)/.test(tl);
  const isAOI = /(área de interesse|area of interest|aoi)/.test(tl);
  const kind = isVost ? 'vost-aoi' : isCopDel ? 'cop-delineation' : isAOI ? 'cop-aoi' : 'generic';
  const m = tl.match(/(\d{1,2})[\/\.-](\d{1,2})[\/\.-](\d{2,4}).{0,6}(\d{1,2})[:h](\d{2})/);
  let date = null;
  if(m){
    const dd=+m[1], mm=+m[2]-1, yy=+m[3] < 100 ? 2000+ +m[3] : +m[3];
    const hh=+m[4], mi=+m[5]; date = new Date(yy,mm,dd,hh,mi,0);
  }
  return { kind, date };
}

8) Style tokens (aligned with production map)

/* Copernicus Delineation: solid blue; pulse handled by JS */
.areas-poly--cop-del{ stroke:#2563eb; fill: color-mix(in oklab, #2563eb 22%, white); }
/* Copernicus AOI: solid blue (no dash) */
.areas-poly--cop-aoi{ stroke:#2563eb; /* no dash */ fill: color-mix(in oklab, #2563eb 12%, white); }
/* VOST AOI: solid red (no dash) */
.areas-poly--vost-aoi{ stroke:#dc2626; /* no dash */ fill: rgba(220,38,38,.10); }

Participantes (autoridades, forças e sociedade civil)

Reconhecemos o trabalho de todas as entidades e cidadãos que contribuem para a prevenção, monitorização, combate e recuperação.

Sources, licenses, and rights

Methodology (summary)

  • We show only active occurrences published by ANEPC/Fogos.pt.
  • Intensity (heatmap): \( I_\text{raw}= (1 + 1\cdot\text{personnel} + 0.5\cdot\text{vehicles} + 6\cdot\text{aircraft}) \cdot w(\text{status}) \cdot 0.5^{\Delta t/h} \). Example: 80, 20, 2; “Em Curso”; \(\Delta t=6h, h=12h\) ⇒ \(I_\text{raw}\approx 72.9\).
  • Normalization: \( I_{\mathrm{norm}} = \min(1.35, I_{\mathrm{raw}}/P95) \). Example: \(P95=60\), \(I_\text{raw}=72.9\) ⇒ \(1.215\).
  • Visual distribution: \( R_{\mathrm{km}} = 2 + 1.1\sqrt{r} \). Example: \(r=112\) ⇒ \(R_{\mathrm{km}}\approx 13.6\ \text{km}\).
Source & license: ANEPC & Fogos.pt — CC BY 4.0 · Maps: OSM / CARTO / OpenTopoMap.
Last revision of this page: 2025-08-27 19:31