metar-analyzer/README.md

6.1 KiB
Raw Blame History

Анализатор METAR

Веб-приложение для получения, анализа и визуализации метеорологических сводок METAR с метеостанций аэропортов по всему миру.

О проекте

Этот проект представляет собой простой, но функциональный инструмент для метео-энтузиастов и пилотов. Пользователь может ввести ICAO-код аэропорта и глубину анализа в днях, после чего приложение запрашивает данные у публичного API, обрабатывает их и представляет в виде наглядных графиков и сводной аналитики.

Основные возможности

  • Получение данных: Запрос исторических данных METAR по коду станции и периоду.
  • Визуализация: Построение графиков для ключевых метеорологических параметров:
    • Температура и точка росы.
    • Атмосферное давление (QNH).
    • Скорость ветра.
  • Сводный анализ: Расчет минимальных, максимальных и средних значений, а также определение преобладающего направления ветра.
  • Просмотр исходных данных: Таблица с последними полученными сводками METAR.
  • Адаптивный интерфейс: Корректное отображение на устройствах разного размера.

Стек технологий

  • Backend: Node.js, Express.js
  • Frontend: HTML5, CSS3, Vanilla JavaScript (ES6+)
  • HTTP-клиент: Axios
  • Библиотека для графиков: Chart.js
  • Контейнеризация: Docker

Установка и запуск

Вы можете запустить проект двумя способами: локально для разработки или с помощью Docker.

1. Локальный запуск (для разработки)

Требования:

  • Node.js (v18 или выше)
  • npm (обычно устанавливается вместе с Node.js)

Шаги:

  1. Клонируйте репозиторий:

    git clone https://gitea.yourcompany.com/your-username/metar-analyzer.git
    
  2. Перейдите в директорию проекта:

    cd metar-analyzer
    
  3. Установите зависимости:

    npm install
    
  4. Запустите сервер:

    npm start
    
  5. Откройте в браузере http://localhost:3000.

2. Запуск через Docker

Требования:

Шаги:

  1. Клонируйте репозиторий (если еще не сделали).

  2. Находясь в корневой папке проекта, выполните команду:

    docker-compose up --build -d
    
    • --build - принудительно пересобирает образ, если были изменения в коде или Dockerfile.
    • -d - запускает контейнер в фоновом режиме (detached mode).
  3. Приложение будет доступно по адресу http://localhost:9010.

Развертывание (Deployment)

Проект готов к развертыванию с помощью Portainer (или любой другой системы управления Docker-контейнерами).

  1. В Portainer создайте новый Stack.
  2. Выберите метод развертывания из Git Repository.
  3. Укажите URL вашего репозитория в Gitea и данные для аутентификации (если репозиторий приватный).
  4. В качестве Compose path укажите docker-compose.yml.
  5. Нажмите Deploy the stack. Portainer автоматически скачает код, соберет образ и запустит контейнер.

API

Проект предоставляет один API-эндпоинт для получения данных с фронтенда.

  • URL: /api/metar
  • Метод: GET
  • Query-параметры:
    • station (string, обязательный) - ICAO-код аэропорта (например, UIII).
    • days (number, обязательный) - Глубина выборки в днях (например, 14).
  • Пример запроса: /api/metar?station=UIII&days=14
  • Ответ в случае успеха (200 OK):
    {
      "data": [
        {
          "station": "UIII",
          "valid": "2023-11-28T12:30:00Z",
          "tmpf": 3.2,
          "dwpf": -4,
          //* ... другие поля ... */
        }
      ]
    }
    
  • Ответ в случае ошибки (4xx/5xx):
    {
      "error": "Текст ошибки"
    }
    

Источник данных

Источником данных является публичный архив Iowa Environmental Mesonet (IEM), поддерживаемый Университетом штата Айова. Сервис агрегирует и предоставляет через API метеорологические сводки (METAR) с множества аэропортов по всему миру.