AFAD ve Kandilli verisini tek zaman ekseninde hizalama denemesi

这篇内容暂时只有 Türkçe 版本,以下是原文。

Geçen ay kendi afet çantası listemi tuttuğum küçük bir sayfaya, son 30 günün deprem kayıtlarını iki kaynaktan çekip tek bir zaman ekseninde göstermeye çalıştım. Elimde AFAD’ın JSON çıktısı ve Kandilli’nin RSS akışı vardı; ikisi de aynı olayı farklı saat diliminde ve farklı büyüklük hassasiyetiyle veriyordu. 30 günlük pencerede yaklaşık 900 kayıt geldi, bunların ~%85’i iki kaynakta da vardı ama saatler 3 saate kadar kayabiliyordu.

Önce her iki kaynağı da UTC’ye çevirdim, sonra ±120 saniye içinde ve büyüklük farkı 0.3’ten az olan kayıtları aynı olay saydım:

from datetime import timedelta

def esle(a, b, tolerans=120, mbuyukluk=0.3):
    return (abs((a["utc"] - b["utc"]).total_seconds()) <= tolerans
            and abs(a["mag"] - b["mag"]) <= mbuyukluk)

AFAD tarafında date alanı yerel saat +03:00 geliyor; datetime.fromisoformat ile okurken tzinfo eklemezseniz 3 saatlik sistematik kayma oluyor. Bunu ilk denemede yaşadım ve eşleşme oranı %40’a düştü. Kandilli RSS’inde ise saat genelde GMT olarak etiketli ama bazı kayıtlarda etiket eksik; eksik olduğunda UTC varsayıp geçtim, yanlış olabileceğini biliyorum.

Neden böyle yaptım: iki kaynağı birleştirmek “doğru” bir liste üretmiyor, sadece hangi olayın iki kaynakta da göründüğünü gösteriyor. Eşleşmeyen kayıtları silmedim, ayrı bir listede tutuyorum; çünkü bunlar genelde küçük M<3 olaylar veya kaynak gecikmesi. Maliyeti şu: her yeni kayıt için iki kaynağı da çekmek gerekiyor, RSS tarafında bazen 10-15 dakikalık gecikme oluyor.

Nerede işe yaramıyor: aynı bölgede artçı dizisi varsa ±120 saniye toleransı komşu olayları yanlış eşleştirebiliyor. Deniz içi olaylarda konum bilgisi çok kaba olduğu için büyüklük farkı 0.5’e çıkabiliyor. Ayrıca AFAD’ın JSON şeması sürüm değiştirdiğinde alan adları değişiyor; geçen sefer mag yerine magnitude geldi ve sessizce boş liste döndü.

Sizin pratiğinizde iki kaynağı eşleştirirken hangi toleransı kullanıyorsunuz, yoksa hiç eşleştirmeyip ayrı mı tutuyorsunuz?

0
赞同度 100% · 0 条评论 · 1 阅读

0 条评论

支持 Markdown · 回复会实时推送给对方

还没有评论,写下第一条。