زمین‌لرزه‌های USGS

سری زمانی کاتالوگ زلزله

زمین‌لرزه‌های USGS

معرفی

کاتالوگ زمین‌لرزه‌های USGS شامل اطلاعات تمام زمین‌لرزه‌های ثبت‌شده توسط سازمان زمین‌شناسی آمریکا است. این داده‌ها برای مطالعات لرزه‌شناسی و خطر طبیعی بسیار مفید هستند.

ویژگی‌ها

ویژگی مقدار
نام کامل USGS Earthquake Catalog
پوشش جهانی
فرمت GeoJSON، Shapefile، CSV
سال شروع ۱۹۰۰
هزینه رایگان

نصب پیش‌نیازها

pip install requests pandas geopandas

دسترسی مستقیم با پایتون

جستجوی زمین‌لرزه‌ها

import requests

# جستجوی زمین‌لرزه‌ها در یک محدوده
url = "https://earthquake.usgs.gov/fdsnws/event/1/query"

params = {
    "format": "geojson",
    "starttime": "2023-01-01",
    "endtime": "2023-12-31",
    "minlatitude": 35.5,
    "maxlatitude": 36.0,
    "minlongitude": 51.0,
    "maxlongitude": 51.8,
    "minmagnitude": 3.0,
    "orderby": "time",
}

response = requests.get(url, params=params)
data = response.json()

print(f"تعداد زمین‌لرزه‌ها: {data['metadata']['count']}")
for eq in data["features"][:5]:
    props = eq["properties"]
    print(f"  - {props['mag']} ریشتر - {props['place']}")

استخراج مختصات

import requests
import pandas as pd

response = requests.get(url, params=params)
data = response.json()

# تبدیل به DataFrame
earthquakes = []
for eq in data["features"]:
    props = eq["properties"]
    coords = eq["geometry"]["coordinates"]
    earthquakes.append({
        "magnitude": props["mag"],
        "place": props["place"],
        "time": props["time"],
        "longitude": coords[0],
        "latitude": coords[1],
        "depth": coords[2],
    })

df = pd.DataFrame(earthquakes)
print(df.head())

محاسبه آمار

import pandas as pd

# محاسبه آمار
print(f"تعداد کل: {len(df)}")
print(f"میانگین بزرگی: {df['magnitude'].mean():.2f}")
print(f"حداکثر بزرگی: {df['magnitude'].max():.2f}")
print(f"عمق میانگین: {df['depth'].mean():.1f} km")

تجسم روی نقشه

import pandas as pd
import geopandas as gpd
from shapely.geometry import Point

# تبدیل به GeoDataFrame
geometry = [Point(xy) for xy in zip(df["longitude"], df["latitude"])]
gdf = gpd.GeoDataFrame(df, geometry=geometry)

# رسم نقشه
import matplotlib.pyplot as plt

fig, ax = plt.subplots(1, 1, figsize=(12, 8))
gdf.plot(
    ax=ax,
    column="magnitude",
    markersize=df["magnitude"] * 20,
    alpha=0.6,
    legend=True,
    cmap="YlOrRd",
)
ax.set_title("زمین‌لرزه‌های تهران در سال ۲۰۲۳")
ax.set_xlabel("طول جغرافیایی")
ax.set_ylabel("عرض جغرافیایی")
plt.savefig("earthquakes_tehran.png")
plt.show()

ذخیره به صورت GeoJSON

import geopandas as gpd
from shapely.geometry import Point

geometry = [Point(xy) for xy in zip(df["longitude"], df["latitude"])]
gdf = gpd.GeoDataFrame(df, geometry=geometry)

gdf.to_file("earthquakes.geojson", driver="GeoJSON")
print("فایل ذخیره شد: earthquakes.geojson")

پارامترهای جستجو

پارامتر توضیح
starttime تاریخ شروع (YYYY-MM-DD)
endtime تاریخ پایان (YYYY-MM-DD)
minlatitude حداقل عرض جغرافیایی
maxlatitude حداکثر عرض جغرافیایی
minlongitude حداقل طول جغرافیایی
maxlongitude حداکثر طول جغرافیایی
minmagnitude حداقل بزرگی
maxmagnitude حداکثر بزرگی
mindepth حداقل عمق
maxdepth حداکثر عمق

لینک‌های مفید