Механизм разделения в Kepler.gl строится вокруг концепции независимых, но синхронизируемых представлений карты. Основная идея заключается в том, что одно и то же геопространственное состояние может быть визуализировано в нескольких окнах с различными наборами слоёв, фильтров или временных срезов.
С точки зрения внутренней структуры состояние приложения делится на три ключевых блока:
Разделение реализуется как расширение uiState, при
котором создаются два или более независимых viewport’а, связанных общим
или частично общим состоянием.
Основной режим разделения — отображение двух карт рядом. Каждая карта имеет собственный viewport, но может наследовать глобальные параметры.
Ключевые характеристики:
Логически это представляется как:
leftMaprightMapОба контейнера используют общий store, но читают разные сегменты состояния.
В этом режиме разделение происходит не по карте, а по слоям данных. Один и тот же слой может быть:
Такой подход используется для анализа различий визуализации, например:
Фильтрация является одним из ключевых механизмов разделения данных внутри Kepler.gl. При включённом split-view фильтры могут:
Каждый фильтр имеет контекст привязки:
Это позволяет строить аналитические сценарии вида:
Разделение управляется через uiState, где фиксируются
параметры режима отображения.
Типовая структура включает:
Пример логики состояния:
const initialState = {
uiState: {
splitMaps: true,
splitMapView: 'horizontal',
syncLeftRightMaps: false
}
}
Одним из ключевых механизмов является синхронизация параметров
mapState.
Возможные режимы:
При синхронном режиме любое изменение одной карты диспатчит обновление второй:
if (syncMaps) {
leftMapState -> rightMapState
}
Это обеспечивает единое пространственное восприятие при сравнении данных.
Несмотря на общую архитектуру, visState может быть
разделён логически:
Каждый слой содержит параметры видимости, которые могут быть переопределены для конкретного viewport.
Пример логики:
Такой подход позволяет строить сложные аналитические интерфейсы без дублирования данных.
Помимо встроенного split-view, возможна реализация через два независимых экземпляра Kepler.gl.
В этом случае:
Такой подход используется при необходимости:
В режиме разделения важную роль играет синхронизация событий:
События могут быть:
Механизм событий опирается на единый event dispatcher, который распределяет действия между viewport’ами.
При работе с временными данными split-view часто используется для сравнения разных периодов.
Основные стратегии:
Каждый viewport может иметь собственный временной фильтр, даже если геометрия данных идентична.
kepler.gl поддерживает разные проекции, и в split-view возможно:
Это особенно важно при анализе:
При работе с разделением существуют технические ограничения:
Кроме того, некоторые операции могут быть глобальными по умолчанию:
Концептуально полное состояние разделённой карты можно представить так:
глобальные данные (datasets)
глобальные слои (visState.layers)
два viewport’а:
правила синхронизации:
Такое разделение позволяет рассматривать Kepler.gl не как одну карту, а как систему параллельных визуальных пространств, работающих на общем наборе данных.