Geçen hafta kendi arşivimdeki iki kaynağı yan yana koymaya çalıştım: AFAD’ın haftalık dökümü ve Kandilli’nin RSS akışından biriktirdiğim kayıtlar. Elimde 2023 başından bu yana yaklaşık 14 bin satır vardı; iki kaynakta da aynı deprem farklı saat diliminde ve farklı büyüklükle duruyordu. Amaç bilimsel bir karşılaştırma değil, kendi arşivimde “hangi kayıt hangisiyle aynı olay” sorusunu otomatik cevaplayabilmekti.
Önce ham veriyi normalize ettim. AFAD tarafında tarih YYYY-MM-DD HH:MM:SS biçiminde ve yerel saat; Kandilli tarafında UTC. Aradaki farkı sabit varsaymak yerine her satırı UTC’ye çektim, sonra 90 saniyelik bir tolerans penceresi tanımladım.
import pandas as pd
def eslestir(afad, kandilli, tolerans_sn=90, mesafe_km=30):
afad = afad.copy()
afad["zaman"] = pd.to_datetime(afad["zaman"], utc=True)
kandilli["zaman"] = pd.to_datetime(kandilli["zaman"], utc=True)
eslesme = []
for _, k in kandilli.iterrows():
yakin = afad[(afad["zaman"] - k["zaman"]).abs()
<= pd.Timedelta(seconds=tolerans_sn)]
for _, a in yakin.iterrows():
d = haversine_km(a["enlem"], a["boylam"], k["enlem"], k["boylam"])
if d <= mesafe_km:
eslesme.append({"afad_id": a["id"], "kandilli_id": k["id"],
"dt_sn": (a["zaman"] - k["zaman"]).total_seconds(),
"mesafe_km": d})
return pd.DataFrame(eslesme)
Bunu çalıştırınca 14 bin satırın yaklaşık 11 bini eşleşti. Kalanların çoğu M2’nin altındaki mikro olaylardı; iki kaynak da bunları farklı eşiklerde tutuyor. Eşleşenlerde medyan zaman farkı 4 saniye, medyan konum farkı 6 km çıktı. Büyüklük farkı ise M4 civarında 0.2’yi geçmiyordu; ama M2.5 altında 0.4’e kadar açılıyor.
Neden zaman toleransını 90 saniye seçtim: çok küçültünce aynı olayı iki kez sayıyorum, çok büyütünce artçı şokları ana şokla birleştiriyorum. 90 saniye benim arşivim için artçı ayrımını koruyan en küçük değer oldu. Mesafe toleransı ise 30 km; bunun altına inince kıyıya yakın olaylarda kaynaklar arası konum farkı yüzünden eşleşme kopuyor.
Bu yöntem nerede bozuluyor: aynı dakikada iki farklı olay olduğunda (örneğin bir ana şok ve hemen ardından gelen ayrı bir olay) pencere ikisini de yakalıyor ve yanlış eşleşme üretiyor. Bunu büyüklük farkına bir üst sınır koyarak kısmen engelledim ama tamamen çözemedim. Ayrıca kaynaklardan biri geç güncellendiğinde aynı olay iki farklı kimlikle arşive düşüyor; bunu da periyodik yeniden eşleştirme ile temizliyorum.
Sizin arşivinizde iki kaynağı hizalarken hangi toleransı kullanıyorsunuz ve artçı ayrımını nasıl koruyorsunuz?
0 条评论
还没有评论,写下第一条。