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

Материал из Поле цифровой дидактики
Нет описания правки
Нет описания правки
 
(не показаны 3 промежуточные версии этого же участника)
Строка 2: Строка 2:


== Общая информация ==
== Общая информация ==
* '''Автор:''' Студент(ки) группы ИНДОР-211 -  [[Участник:PolezhaevaMA|PolezhaevaMA]], [[Участник:Самира Мохаммад|Самира Мохаммад]]
* '''Авторы:''' Студентки группы [[Категория:ИНДОР-211]] -  [[Участник:PolezhaevaMA|PolezhaevaMA]], [[Участник:Самира Мохаммад|Самира Мохаммад]]
* '''Дата исследования:''' {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}
* '''Дата исследования:''' {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}
* '''Источник данных:''' USGS Earthquake Hazards Program
* '''Источник данных:''' USGS Earthquake Hazards Program
Строка 144: Строка 144:


=== График 1. Динамика магнитуды ===
=== График 1. Динамика магнитуды ===
[[Файл:Магнитура.png|thumb|center|800px|Динамика магнитуды за последние 30 дней]]
[[Файл:Магнитура.png|thumb|center|1000px|Динамика магнитуды за последние 30 дней]]


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


=== График 2. Глубина очага ===
=== График 2. Глубина очага ===
[[Файл:Глубина очага.png|thumb|center|2000px|Глубина очага землетрясения]]
[[Файл:Глубина очага.png|thumb|center|1000px|Глубина очага землетрясения]]
'''Анализ графика глубин:'''
'''Анализ графика глубин:'''
* Темно-синие столбцы — землетрясения в земной коре (до 70 км)
* Темно-синие столбцы — землетрясения в земной коре (до 70 км)
Строка 160: Строка 160:


=== График 3. Широта эпицентра ===
=== График 3. Широта эпицентра ===
[[Файл:Широта эпицентра.png|thumb|center|1000px|Широта эпицентра]]
'''Анализ широтного распределения:'''
'''Анализ широтного распределения:'''
* Зеленая линия показывает изменение широты эпицентров во времени
* Зеленая линия показывает изменение широты эпицентров во времени
Строка 170: Строка 171:
! Показатель !! Значение
! Показатель !! Значение
|-
|-
| Всего землетрясений (M ≥ 4.5) || (заполняется после выполнения)
| Всего землетрясений (M ≥ 4.5) || 549
|-
|-
| Максимальная магнитуда || M (заполняется)
| Максимальная магнитуда || 7.5 М
|-
|-
| Средняя магнитуда || M (заполняется)
| Средняя магнитуда || 4.86 М
|-
|-
| Максимальная глубина || (заполняется) км
| Максимальная глубина || 650 км
|-
|-
| Минимальная глубина || (заполняется) км
| Минимальная глубина || 6 км
|-
| Средняя глубина || (заполняется) км
|}
|}


Строка 195: Строка 194:
* '''Для экологии''': определены зоны повышенной сейсмической опасности
* '''Для экологии''': определены зоны повышенной сейсмической опасности
* '''Для образования''': разработан учебный кейс по работе с реальными API
* '''Для образования''': разработан учебный кейс по работе с реальными API
== Используемые технологии ==
{| class="wikitable" style="width: 100%;"
|-
! style="width: 20%;" | Компонент
! style="width: 25%;" | Технология
! style="width: 55%;" | Назначение
|-
| '''API''' || USGS FDSN Web Service || Получение данных о землетрясениях в реальном времени
|-
| '''Язык программирования''' || Python || Основной язык разработки
|-
| '''HTTP-запросы''' || Requests || Отправка запросов к API и получение ответов
|-
| '''Обработка данных''' || Pandas || Структурирование, фильтрация и анализ данных
|-
| '''Визуализация''' || Matplotlib || Построение графиков магнитуды, глубины и широты
|-
| '''Работа с JSON''' || json || Парсинг ответов API
|-
| '''Работа с данными''' || datetime || Вычисление временных интервалов
|-
| '''Формат хранения''' || CSV || Сохранение результатов для дальнейшего анализа
|}


== Используемые источники данных ==
== Используемые источники данных ==
Строка 202: Строка 225:
[[Категория:BigDataWorks]]
[[Категория:BigDataWorks]]
[[Категория:ИНДОР-211]]
[[Категория:ИНДОР-211]]
[[Категория:Исследовательские проекты]]
[[Категория:Работы ИНДОР-211]]
[[Категория:Анализ данных]]
[[Категория:Сейсмология]]

Текущая версия от 12:09, 14 апреля 2026

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

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

  • Авторы: Студентки группы - PolezhaevaMA, Самира Мохаммад
  • Дата исследования: 17 апрель 2026
  • Источник данных: USGS Earthquake Hazards Program
  • Период анализа: последние 30 дней

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

Проанализировать глобальную сейсмическую активность за последние 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. Динамика магнитуды

Динамика магнитуды за последние 30 дней

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

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

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

Глубина очага землетрясения

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

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

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

Широта эпицентра

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

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

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

Показатель Значение
Всего землетрясений (M ≥ 4.5) 549
Максимальная магнитуда 7.5 М
Средняя магнитуда 4.86 М
Максимальная глубина 650 км
Минимальная глубина 6 км

Выводы

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

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

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

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

Используемые технологии

Компонент Технология Назначение
API USGS FDSN Web Service Получение данных о землетрясениях в реальном времени
Язык программирования Python Основной язык разработки
HTTP-запросы Requests Отправка запросов к API и получение ответов
Обработка данных Pandas Структурирование, фильтрация и анализ данных
Визуализация Matplotlib Построение графиков магнитуды, глубины и широты
Работа с JSON json Парсинг ответов API
Работа с данными datetime Вычисление временных интервалов
Формат хранения CSV Сохранение результатов для дальнейшего анализа

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