Geçen hafta kendi arşivim için bir şey denedim: 2019-2024 arası AFAD katalogundan çektiğim yaklaşık 42 bin kaydı, aynı dönemin USGS kataloğuyla eşleştirmek. Amaç deprem tahmini değil; iki kaynağın aynı olayı farklı büyüklükle vermesi durumunda hangi kaydı neye göre kullanacağımı netleştirmekti. Ortam Ubuntu 22.04, Python 3.11, pandas 2.1; veri boyutu CSV olarak ~180 MB.
Önce zaman penceresi ve uzaklık toleransıyla eşleştirme yaptım. Sabit bir eşik seçmek yerine büyüklüğe bağlı tolerans kullandım, çünkü M3 civarı kayıtlarda konum sapması daha büyük oluyor:
import pandas as pd
from math import radians, sin, cos, asin, sqrt
def haversine(lat1, lon1, lat2, lon2):
lat1, lon1, lat2, lon2 = map(radians, [lat1, lon1, lat2, lon2])
dlat, dlon = lat2-lat1, lon2-lon1
a = sin(dlat/2)**2 + cos(lat1)*cos(lat2)*sin(dlon/2)**2
return 2*6371*asin(sqrt(a))
def tolerans(mag):
if mag < 3.5: return 120, 60
if mag < 4.5: return 90, 45
return 60, 30
# dt: saniye, dist: km
def eslesme_var(dt, dist, mag):
t_dk, d_km = tolerans(mag)
return abs(dt) <= t_dk*60 and dist <= d_km
Eşleşen çiftlerde büyüklük farkını kaydettim. Sonuç: eşleşen olayların çoğunda fark 0.1-0.3 aralığında, ama sığ ve zayıf olaylarda 0.5’e kadar çıkabiliyor. Benim kararım şu oldu: büyüklük için olayın hangi kaynağa daha yakın istasyonda çözüldüğüne bakmıyorum (bunu doğrulayabileceğim veri yok), bunun yerine raporlamada iki değeri de tutuyorum ve analizlerde tek kaynak seçmek zorunda kaldığımda daha büyük olanı değil, daha fazla istasyonla çözülmüş olanı tercih ediyorum.
Bu yöntemin sınırı net: sınır bölgelerinde ve denizde, iki katalog da aynı olayı farklı konumla verebiliyor; toleransı gevşetince yanlış eşleşme sayısı hızla artıyor. Denizlerdeki olaylarda 60 km konum toleransı bana yetmedi, 40 km’ye çektiğimde eşleşme oranı yarıya düştü. Kendi hatam: ilk denemede zaman dilimini UTC sanıp yerel saatle karşılaştırdım, 3 saatlik kayma yüzünden eşleşmelerin bir kısmı tamamen kaçtı.
Sizin arşivinizde iki katalog çeliştiğinde hangi kaydı tutuyorsunuz, gerekçesi ne?
0 条评论
还没有评论,写下第一条。