Požari SDŽ

Faza 1 · nastavak

Povezivanje izvora u jedinstveni skup

Nakon geolokacije, tri izvora spajamo u jedan skup u kojem jedan red = jedan požarni događaj, s podacima iz svih izvora koji ga potvrđuju.

Ideja

Svaki izvor sam po sebi vidi samo dio slike. Ako isti požar spomenu i vatrogasna evidencija i svjedok na Facebooku, imamo bogatiji i pouzdaniji zapis o događaju. Zato tražimo koji zapisi iz različitih izvora zapravo opisuju isti događaj.

Sidro i izvori

  • Sidro — FIMS intervencije (5034 događaja s koordinatama, 2017–2021): imaju vrijeme, lokaciju i resurse. Oni su „popis događaja".
  • HVZ izvješća i Facebook objave geolociraju se našim geolokatorom → dobiju koordinate, pa se kače na FIMS događaje.

Kako spajamo

Objava/izvješće pripada FIMS događaju ako mu je dovoljno blizu u prostoru i vremenu:

KriterijPrag
Udaljenost lokacije≤ 5 km (haversine, po koordinatama)
Razlika u vremenu± 1 dan (isti ili uzastopni dan)

Pragovi (5 km, ±1 dan) lako se mijenjaju u spoji.py (varijable R_KM i D_DANA).

Kod objašnjen (korak po korak)

Sav kod je u jednoj datoteci  📄 Otvori spoji.py

1 · Udaljenost dviju točaka (haversine)

Udaljenost između dvije koordinate na Zemlji računa se „haversine" formulom, u kilometrima:

def haversine(lat1, lon1, lat2, lon2):
    R = 6371.0                       # polumjer Zemlje (km)
    ...
    return 2 * R * arcsin(sqrt(a))   # udaljenost u km

Radi na cijelom nizu FIMS točaka odjednom (brzo, preko numpy).

2 · Geolokacija s pamćenjem (cache)

HVZ i FB tekstovi geolociraju se našim geolokatorom. LLM pozivi koštaju, pa se rezultati spremaju u datoteku i sljedeći put učitavaju bez novih poziva:

if tekst in cache:                   # već geolocirano → uzmi iz datoteke
    lat, lon = cache[tekst]
else:                                # novo → pozovi model (paralelno, 8 niti)
    ...

Zato je i kasnije mijenjanje pragova besplatno (koristi spremljene koordinate).

3 · Spajanje — prvo vrijeme, pa udaljenost

Za svaku objavu/izvješće prvo se izdvoje FIMS događaji u vremenskom prozoru, pa se među njima traže oni u radijusu:

for objava in izvor:
    blizu = |datum_fims - datum_objave| <= D_DANA     # 1) suzi po danu (jeftino)
    dist  = haversine(objava, fims[blizu])            # 2) izračunaj udaljenost
    pogodak = fims[blizu][dist <= R_KM]               # 3) zadrži ≤ R km

Prvo vremenski filter (jeftin) drastično smanjuje koliko udaljenosti treba računati.

Rezultati i usporedba pristupa

Način geolokacije bira se u spoji.py (varijabla PRISTUP = „regex" ili „llm"). LLM daje točnije koordinate (disambiguacija po županiji) pa i više veza, uz iste pragove:

Mjera (sidro: 5034 FIMS događaja)RegexLLM
Događaja iz više izvora123143
  samo HVZ / samo FB / oba45 / 76 / 257 / 84 / 2
parova HVZ↔FIMS / FB↔FIMS49 / 9360 / 99

LLM pristup dao je ~16 % više povezanih događaja — potvrda da bolja geolokacija izravno poboljšava povezivanje.

Osjetljivost na pragove (LLM)

Labavljenjem pragova raste obuhvat, ali i rizik lažnih spajanja (drugi požar u blizini ili unutar nekoliko dana). Događaji potvrđeni iz oba izvora (HVZ i Facebook) najpouzdaniji su:

Radijus \ Vrijeme± 1 dan± 2 dana
3 km102 (1 iz oba)152 (4)
5 km143 (2)220 (7)
10 km263 (5)408 (16)

Operativna točka bira se prema potrebi (preciznost ↔ obuhvat) mijenjanjem R_KM i D_DANA u spoji.py.

Primjeri višeizvornih događaja: požar u Trogiru (3. 8. 2021.) potvrđen iz vatrogasne evidencije i 5 Facebook objava svjedoka; veliki požar u Segetu Gornjem (2. 8. 2021., vrlo mnogo angažiranih resursa); te Brist, Dugi Rat, Omiš… — svi u Splitsko-dalmatinskoj.

Povezani događaji padaju u razdoblja gdje se izvori preklapaju (2019.–2021.); ukupni broj je umjeren jer se vremenski rasponi izvora samo djelomično poklapaju.

Kako pokrenuti

cd spajanje_izvora
python spoji.py

Rezultat se sprema u spajanje_izvora/rezultati/events.csv (jedan red po događaju + n_hvz, n_fb, n_izvora).

Ograničenja i sljedeće

  • Preklapanje razdoblja — glavno ograničenje; više povezanih događaja tamo gdje se izvori vremenski poklapaju.
  • Kvaliteta koordinata — LLM geolokacija (disambiguacija po županiji) već daje ~16 % više veza; regex ostaje kao brza, besplatna varijanta (prebacivanje: PRISTUP).
  • Pragovi — labaviji radijus/prozor (npr. 10 km, ±2 dana) daju više veza; treba uravnotežiti s preciznošću.
  • Nakon toga slijedi priprema za javnu objavu (GDPR anonimizacija) i prijelaz na Fazu 2 (mjera težine).