Работа с временными данными в Kepler.gl опирается на строгую интерпретацию входных значений, поскольку временные поля используются в фильтрах, анимации и агрегации. Основная сложность заключается в том, что библиотека не навязывает единый формат хранения даты, а поддерживает несколько распространённых представлений, приводя их к внутреннему унифицированному виду.
На уровне подготовки данных чаще всего встречаются три варианта:
1. ISO-строки
2026-06-14
2026-06-14T12:30:00Z
2026-06-14T12:30:00+06:00
ISO-формат является предпочтительным, поскольку он однозначен и не зависит от локали.
2. Unix timestamp
1718366400 // секунды
1718366400000 // миллисекунды
Kepler.gl автоматически различает секунды и миллисекунды по масштабу значения, приводя их к единому представлению времени.
3. Строковые локализованные даты
14.06.2026
06/14/2026
Такой формат требует дополнительного парсинга и может приводить к неоднозначной интерпретации при разных настройках окружения.
При загрузке данных Kepler.gl стремится привести временные значения к числовому timestamp (обычно в миллисекундах). Это позволяет:
Типичная цепочка преобразования выглядит следующим образом:
В результате любой временной столбец внутри состояния приложения становится числовым полем.
В Kepler.gl тип поля задаётся в visState. Временные поля
помечаются как timestamp или date.
const config = {
visState: {
layers: [
{
id: 'trips',
type: 'line',
config: {
dataId: 'my_data',
columns: {
lat0: 'start_lat',
lng0: 'start_lng',
lat1: 'end_lat',
lng1: 'end_lng'
},
columnFormat: {
timestamp: 'YYYY-MM-DD HH:mm:ss'
}
}
}
]
}
};
Поле columnFormat используется для указания формата
отображения, но не влияет на внутреннее хранение данных — оно определяет
только визуализацию.
Числовые данные в Kepler.gl разделяются на две категории:
Все числовые поля приводятся к типу Number JavaScript.
Это означает:
Отображение чисел происходит отдельно от хранения. Используются функции форматирования, основанные на правилах локали и пользовательских настройках.
Примеры распространённых форматов:
Обычное число
12345 → 12,345
Десятичное значение
12345.678 → 12,345.68
Сокращённый формат
1200000 → 1.2M
Формат чисел может задаваться через конфигурацию слоя или через глобальные настройки визуализации:
const formatOptions = {
numberFormat: {
format: '0,0.00',
trimmed: true
}
};
Здесь используются правила, аналогичные библиотекам форматирования чисел (например, через d3-format-подобный синтаксис):
0,0 — разделение тысяч.00 — фиксированное число знаков после запятойtrimmed — удаление незначащих нулейKepler.gl поддерживает локализацию отображения данных, однако важно разделять:
Локаль влияет на:
Примеры:
| Локаль | Число | Отображение |
|---|---|---|
| en-US | 12345.67 | 12,345.67 |
| de-DE | 12345.67 | 12.345,67 |
Формат отображения дат зависит от:
Примеры:
2026-06-14T18:00:00Z →
14.06.2026, 18:002026-06-14T18:00:00Z →
06/14/2026 6:00 PMФильтры времени в Kepler.gl работают только с числовыми timestamp-значениями, но отображают их в удобочитаемом виде.
Фильтр диапазона времени оперирует минимальным и максимальным значениями:
{
id: 'time_filter',
dataId: ['my_data'],
type: 'timeRange',
fieldIdx: 2,
value: [1718300000000, 1718400000000]
}
Внутри:
Для корректной работы временного фильтра важно указать, что поле является временным:
{
name: 'timestamp',
type: 'timestamp'
}
Типизация влияет на:
Kepler.gl поддерживает временную анимацию, где ключевую роль играет равномерное распределение timestamp.
Если данные не нормализованы (например, строки вместо чисел), возможны проблемы:
Поэтому обязательным этапом является приведение всех дат к timestamp.
Разные слои Kepler.gl используют числа по-разному:
Во всех случаях числовой формат должен быть стабильным и не зависеть от строки представления.
Kepler.gl выполняет агрегацию на этапе подготовки данных для рендера.
value: 10
value: 20
value: 30
→ average: 20
Ошибки в формате чисел (например, строки "10" вместо
10) могут привести к:
"1000" + "2000" → "10002000"
Решение — явное приведение:
Number(value)
parseFloat(value)
01/02/2026
Интерпретация зависит от локали:
Рекомендуемое решение — ISO 8601.
1718366400 // секунды
1718366400000 // миллисекунды
Ошибочное использование приводит к смещению дат на десятки лет. В Kepler.gl важно стандартизировать миллисекунды.
Форматы чисел и дат напрямую влияют на:
При этом визуальный слой всегда отделён от слоя данных: форматирование применяется только на этапе отображения, не изменяя исходный dataset.
Форматирование реализовано как слой абстракции между данными и UI:
Такое разделение обеспечивает: