Числовые фильтры

Роль числовых фильтров в аналитике пространственных данных

Числовые фильтры в Kepler.gl представляют собой механизм динамического ограничения набора данных на основе количественных значений атрибутов. Они используются для работы с непрерывными и дискретными числовыми полями, позволяя выделять подмножества объектов без изменения исходного датасета.

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


Архитектура числового фильтра

Каждый числовой фильтр в Kepler.gl описывается как объект, связанный с конкретным слоем данных. Он включает:

  • field — имя числового поля в датасете
  • domain — диапазон допустимых значений (минимум и максимум)
  • value — текущий активный диапазон фильтра
  • step — шаг изменения значений (опционально)
  • enlarged filter interaction — режим расширенного взаимодействия
  • animation config — параметры временной анимации (если поле связано с временем)

Фильтр всегда привязан к слою, но может влиять на несколько визуальных представлений, если они используют один и тот же источник данных.


Типы числовых полей

Числовые фильтры работают с несколькими типами данных:

Непрерывные значения

Используются для измерений:

  • координаты (при преобразовании)
  • скорость
  • высота
  • плотность
  • стоимость
  • количество объектов

Фильтрация происходит по диапазону:

[minValue ... maxValue]

Дискретные числовые значения

Используются для категорий, закодированных числами:

  • уровни доступа
  • классы объектов
  • индексы
  • рейтинги

В этом случае фильтр может вести себя как набор точечных значений или интервалов.


Механизм работы диапазонного фильтра

Диапазонный фильтр является основным типом числового фильтра. Он задаёт нижнюю и верхнюю границы включения объектов в визуализацию.

Логика применения:

if (value >= filterMin && value <= filterMax) {
    feature.visible = true;
} else {
    feature.visible = false;
}

На уровне визуализации это приводит к перерасчёту отображаемых объектов без изменения исходного слоя данных.


Привязка фильтра к данным слоя

Каждый слой в Kepler.gl может содержать несколько фильтров. При этом числовой фильтр работает только с указанным полем.

Типичная структура слоя:

  • dataset
  • columns
  • visual channels (цвет, размер, высота)
  • filters

Числовой фильтр применяется после загрузки данных, но до рендеринга геометрии.

Порядок обработки:

  1. Загрузка датасета
  2. Определение полей
  3. Инициализация фильтров
  4. Применение фильтрации
  5. Построение визуального слоя

Взаимодействие с UI

Интерфейс Kepler.gl предоставляет несколько способов управления числовыми фильтрами:

Ползунок диапазона

Основной элемент управления — двойной слайдер:

  • левая ручка задаёт минимальное значение
  • правая ручка задаёт максимальное значение

Изменение значений мгновенно обновляет слой.

Поле ввода

Дополнительный способ задания границ вручную:

  • точное числовое значение
  • полезно при работе с большими диапазонами

Инкрементальные изменения

При удержании клавиш или использовании колесика мыши возможно пошаговое изменение значения, определяемое параметром step.


Производительность числовых фильтров

Фильтрация в Kepler.gl оптимизирована для работы с большими наборами данных. Основные механизмы:

Кэширование вычислений

Результаты фильтрации могут кэшироваться для предотвращения повторных вычислений при одинаковых параметрах.

Векторизированная обработка

Массивы значений обрабатываются пакетно, что снижает нагрузку на CPU.

WebGL-рендеринг

Фильтрация часто переносится на уровень рендеринга, где GPU отбрасывает невидимые объекты.


Множественные числовые фильтры

При наличии нескольких фильтров на одном слое применяется логика AND:

visible = filter1(value) AND filter2(value) AND filter3(value)

Каждый дополнительный фильтр сужает выборку.

Если фильтры применяются к разным полям, они работают независимо, но объединяются в итоговой проверке видимости объекта.


Связь с временными данными

Числовые фильтры часто используются совместно с временными полями. В этом случае:

  • время преобразуется в числовой timestamp
  • применяется диапазонный фильтр по времени
  • возможна анимация изменения диапазона

Это позволяет реализовывать динамическое воспроизведение данных.


Обновление состояния фильтра

Каждое изменение фильтра вызывает пересборку состояния слоя:

  1. обновляется value диапазон
  2. пересчитывается фильтрационная маска
  3. обновляется визуализация
  4. синхронизируются связанные слои

При большом количестве слоёв важно учитывать стоимость пересчёта.


Граничные случаи и особенности

Пустой диапазон

Если min > max, слой становится полностью невидимым.

Выход за пределы domain

Значения за пределами domain автоматически ограничиваются.

Null-значения

Отсутствующие значения:

  • либо исключаются
  • либо обрабатываются отдельно, в зависимости от конфигурации слоя

Несоответствие типов

Если поле не числовое, фильтр не применяется и может игнорироваться системой.


Использование нормализации данных

В некоторых случаях числовые фильтры применяются к нормализованным значениям:

  • процентные шкалы (0–100)
  • стандартизированные значения (z-score)
  • логарифмические преобразования

Это позволяет делать сравнимыми данные разных масштабов.


Комбинация с визуальными каналами

Числовые фильтры тесно связаны с визуальными параметрами слоя:

  • высота столбцов
  • цветовая шкала
  • радиус точек
  • интенсивность тепловой карты

Фильтрация изменяет не только состав объектов, но и восприятие распределения данных.


Типичные сценарии применения

  • анализ плотности событий по значению метрики
  • фильтрация транспортных потоков по скорости
  • выделение объектов по стоимости или рейтингу
  • ограничение временных интервалов наблюдения
  • исследование распределений по числовым признакам

Внутренние ограничения модели фильтрации

Система числовых фильтров предполагает:

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

Такая модель обеспечивает воспроизводимость анализа и стабильность интерфейса при работе с большими массивами данных.