Мировая сейсмическая активность за последние 30 дней: различия между версиями

Материал из Поле цифровой дидактики
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
= Мониторинг мировой сейсмической активности =
= Мониторинг мировой сейсмической активности =


== Метаинформация ==
== Общая информация ==
* '''Автор:''' Студент(ки) группы ИНДОР-211 - [[User:PolezhaevaMA]]  [[User:Самира Мохаммад]]
* '''Автор:''' Студент(ки) группы ИНДОР-211 - [[User:PolezhaevaMA]]  [[User:Самира Мохаммад]]
* '''Дата исследования:''' {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}
* '''Дата исследования:''' {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}
Строка 17: Строка 17:
# Рассчитать основные статистические показатели
# Рассчитать основные статистические показатели
# Интерпретировать полученные результаты
# Интерпретировать полученные результаты
== Гипотеза исследования ==
За 30-дневный период наблюдается корреляция между магнитудой землетрясений и их глубиной: наиболее сильные события происходят в зонах субдукции на глубинах 70-300 км.


== Программный код ==
== Программный код ==
Строка 153: Строка 150:


=== График 1. Динамика магнитуды ===
=== График 1. Динамика магнитуды ===
[[Файл:earthquake_3graphs_30days.png|thumb|center|800px|Три графика сейсмической активности: магнитуда, глубина, широта]]
[[Файл:Магнитура.png|thumb|center|800px|Три графика сейсмической активности: магнитуда, глубина, широта]]


'''Анализ графика магнитуды:'''
'''Анализ графика магнитуды:'''

Версия от 01:05, 14 апреля 2026

Мониторинг мировой сейсмической активности

Общая информация

  • Автор: Студент(ки) группы ИНДОР-211 - User:PolezhaevaMA User:Самира Мохаммад
  • Дата исследования: 10 июнь 2026
  • Источник данных: USGS Earthquake Hazards Program
  • Период анализа: последние 30 дней
  • Порог магнитуды: M ≥ 4.5

Цель исследования

Проанализировать глобальную сейсмическую активность за последние 30 дней для выявления закономерностей в изменении магнитуды, глубины и географического положения эпицентров землетрясений.

Задачи проекта

  1. Собрать данные о землетрясениях магнитудой ≥ 4.5 через USGS API
  2. Обработать и структурировать данные с помощью библиотеки Pandas
  3. Построить три графика: динамика магнитуды, распределение глубин, широтное смещение эпицентров
  4. Рассчитать основные статистические показатели
  5. Интерпретировать полученные результаты

Программный код

import requests
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime, timedelta
import json

# ==================================================
# НАСТРОЙКИ - ЗЕМЛЕТРЯСЕНИЯ (USGS)
# ==================================================
REGION_NAME = "Весь мир (M ≥ 4.5)"

# Даты: последние 30 дней
end_date = datetime.now().date()
start_date = end_date - timedelta(days=30)

# URL для USGS API
URL = (
    f"https://earthquake.usgs.gov/fdsnws/event/1/query?"
    f"format=geojson&"
    f"starttime={start_date}&"
    f"endtime={end_date}&"
    f"minmagnitude=4.5&"
    f"orderby=time"
)

print(f"Запрашиваем данные о землетрясениях за последние 30 дней...")
print(f"URL: {URL}")

try:
    response = requests.get(URL, timeout=30)
    print(f"Статус ответа: {response.status_code}")
    
    if response.status_code == 200 and response.text.strip():
        data = response.json()
        print("✓ JSON успешно загружен")
    else:
        print("✗ Пустой ответ от сервера")
        exit()
        
except requests.exceptions.RequestException as e:
    print(f"Ошибка запроса: {e}")
    exit()
except json.JSONDecodeError as e:
    print(f"Ошибка парсинга JSON: {e}")
    exit()

# Извлекаем данные
events = []
for feature in data.get('features', []):
    props = feature['properties']
    coords = feature['geometry']['coordinates']
    events.append({
        'Время': props['time'],
        'Магнитуда': props['mag'],
        'Место': props['place'],
        'Широта, °': coords[1],
        'Долгота, °': coords[0],
        'Глубина, км': coords[2]
    })

if not events:
    print("Землетрясений за указанный период не найдено.")
    exit()

# Создаём DataFrame
df = pd.DataFrame(events)
df['Время'] = pd.to_datetime(df['Время'], unit='ms')
df = df.sort_values('Время')

print(f"✓ Найдено {len(df)} землетрясений магнитудой ≥ 4.5")

# Сохраняем в CSV
df.to_csv('earthquake_data_30days.csv', index=False, encoding='utf-8')
print("Данные сохранены в 'earthquake_data_30days.csv'")

# ==================================================
# ВИЗУАЛИЗАЦИЯ (ТРИ ГРАФИКА)
# ==================================================
fig, axes = plt.subplots(3, 1, figsize=(14, 10), sharex=True)

# ГРАФИК 1: Магнитуда (как температура)
axes[0].plot(df['Время'], df['Магнитуда'], color='red', marker='o', linewidth=1, markersize=4)
axes[0].set_title(f'Магнитуда землетрясений за последние 30 дней (M ≥ 4.5)')
axes[0].set_ylabel('Магнитуда')
axes[0].axhline(y=6.0, color='orange', linestyle='--', alpha=0.7, label='Сильное (M≥6)')
axes[0].axhline(y=7.0, color='red', linestyle='--', alpha=0.7, label='Крупное (M≥7)')
axes[0].legend()
axes[0].grid(True)

# ГРАФИК 2: Глубина (как осадки)
colors = ['darkblue' if d < 70 else 'lightblue' for d in df['Глубина, км']]
axes[1].bar(df['Время'], df['Глубина, км'], color=colors, alpha=0.7, width=0.04)
axes[1].set_title('Глубина очага землетрясения')
axes[1].set_ylabel('Глубина, км')
axes[1].axhline(y=70, color='red', linestyle='--', alpha=0.5, label='Граница (70 км)')
axes[1].legend()
axes[1].grid(True)

# ГРАФИК 3: Широта эпицентра (как скорость ветра)
axes[2].plot(df['Время'], df['Широта, °'], color='green', marker='s', linewidth=1, markersize=4)
axes[2].set_title('Широта эпицентра (географическое смещение)')
axes[2].set_ylabel('Широта, °')
axes[2].set_xlabel('Дата и время')
axes[2].axhline(y=0, color='black', linestyle='--', alpha=0.5, label='Экватор')
axes[2].legend()
axes[2].grid(True)

plt.tight_layout()
plt.savefig('earthquake_3graphs_30days.png', dpi=150, bbox_inches='tight')
plt.show()

# ==================================================
# СТАТИСТИКА
# ==================================================
print("\n" + "="*50)
print("СТАТИСТИКА ЗЕМЛЕТРЯСЕНИЙ ЗА 30 ДНЕЙ")
print("="*50)
print(f"Всего событий: {len(df)}")
print(f"Самое сильное: M{df['Магнитуда'].max():.1f}")
print(f"Средняя магнитуда: {df['Магнитуда'].mean():.2f}")
print(f"Самое глубокое: {df['Глубина, км'].max():.0f} км")
print(f"Самое мелкое: {df['Глубина, км'].min():.0f} км")
print(f"Средняя глубина: {df['Глубина, км'].mean():.0f} км")
print(f"Период: с {start_date} по {end_date}")

Результаты визуализации

График 1. Динамика магнитуды

Три графика сейсмической активности: магнитуда, глубина, широта

Анализ графика магнитуды:

  • Красная линия показывает изменение силы землетрясений во времени
  • Оранжевая пунктирная линия — порог сильного землетрясения (M ≥ 6)
  • Красная пунктирная линия — порог крупного землетрясения (M ≥ 7)
  • Точки соответствуют отдельным сейсмическим событиям

График 2. Глубина очага

Анализ графика глубин:

  • Темно-синие столбцы — землетрясения в земной коре (до 70 км)
  • Голубые столбцы — глубокие землетрясения (>70 км)
  • Красная пунктирная линия — граница между корой и мантией

График 3. Широта эпицентра

Анализ широтного распределения:

  • Зеленая линия показывает изменение широты эпицентров во времени
  • Черная пунктирная линия — экватор (0°)
  • Положительные значения — северное полушарие, отрицательные — южное

Статистические результаты

Показатель Значение
Всего землетрясений (M ≥ 4.5) (заполняется после выполнения)
Максимальная магнитуда M (заполняется)
Средняя магнитуда M (заполняется)
Максимальная глубина (заполняется) км
Минимальная глубина (заполняется) км
Средняя глубина (заполняется) км

Выводы

На основе анализа трех графиков можно сделать следующие выводы:

  1. По магнитуде: большинство землетрясений имеют магнитуду в диапазоне 4.5-5.5, крупные события (M≥7) происходят редко
  2. По глубине: преобладают неглубокие землетрясения (0-70 км), что соответствует зонам разломов земной коры
  3. По широте: эпицентры концентрируются в Тихоокеанском огненном кольце (между 60° ю.ш. и 60° с.ш.)

Практическая значимость

  • Для науки: создана методика анализа сейсмических данных с открытым кодом
  • Для экологии: определены зоны повышенной сейсмической опасности
  • Для образования: разработан учебный кейс по работе с реальными API

Используемые источники данных