CSV и текстовые форматы

Роль CSV в потоках геоаналитики

CSV (Comma-Separated Values) остаётся одним из наиболее распространённых форматов для загрузки табличных данных в визуализационные системы. В контексте Kepler.gl он используется как первичный слой интеграции между внешними источниками данных и геопространственной визуализацией.

Основная ценность CSV заключается в его универсальности: формат поддерживается большинством систем хранения данных, BI-инструментов и ETL-конвейеров. В Kepler.gl CSV рассматривается как табличный источник, из которого извлекаются географические координаты, временные метки и числовые показатели для построения слоёв.


Внутренняя обработка CSV в Kepler.gl

Загрузка CSV в Kepler.gl осуществляется через механизм парсеров из экосистемы loaders.gl. При импорте выполняется последовательность операций:

  • определение структуры таблицы;
  • автоматическое определение типов колонок;
  • попытка распознавания координатных полей;
  • конвертация строковых значений в числовые и временные типы;
  • нормализация данных для WebGL-рендеринга.

Особое значение имеет этап типизации. Геоаналитическая визуализация требует строгого разделения между:

  • числовыми полями (float/int);
  • категориальными признаками;
  • временными метками;
  • географическими координатами.

Требования к структуре CSV для геоданных

Наиболее устойчивые результаты достигаются при соблюдении структурных соглашений.

Минимальный набор для геопространственного слоя:

latitude,longitude
55.751244,37.618423
59.934280,30.335099

Расширенный набор с атрибутивными данными:

latitude,longitude,city,value,timestamp
55.751244,37.618423,Moscow,120,2024-01-01
59.934280,30.335099,Saint Petersburg,85,2024-01-02

Ключевым требованием является однозначность заголовков. Неоднозначные или повторяющиеся имена колонок приводят к некорректной интерпретации слоя.


Автоматическое распознавание координат

Kepler.gl использует эвристики для определения географических полей. Наиболее часто распознаются следующие варианты:

  • lat, latitude, y — широта
  • lng, lon, longitude, x — долгота

При отсутствии стандартных названий выполняется анализ диапазонов значений:

  • широта: от -90 до 90
  • долгота: от -180 до 180

При наличии нескольких кандидатов система выбирает наиболее согласованные пары.


Работа с разделителями и вариациями CSV

Помимо стандартной запятой поддерживаются альтернативные разделители, характерные для локализованных наборов данных:

  • ; (часто в европейских локализациях)
  • \t (TSV — tab-separated values)

Пример TSV-структуры:

latitude    longitude   value
55.751244   37.618423   120

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


Кодировки и нормализация текста

Корректная обработка текстовых данных зависит от кодировки входного файла. Наиболее устойчивой считается UTF-8 без BOM. При использовании иных кодировок возможны искажения категориальных значений и идентификаторов.

Особое внимание уделяется:

  • названиям объектов;
  • категориям;
  • строковым идентификаторам слоёв;
  • меткам времени в нестандартных форматах.

Обработка временных полей

CSV-данные часто содержат временные признаки, используемые для анимации и временных фильтров.

Поддерживаемые форматы:

  • YYYY-MM-DD
  • YYYY-MM-DD HH:mm:ss
  • Unix timestamp (milliseconds)

Пример:

latitude,longitude,value,time
55.751244,37.618423,100,1704067200000

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


Ограничения CSV при работе с большими наборами данных

При обработке крупных файлов возникают ограничения, связанные с:

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

Для оптимизации применяются стратегии:

  • частичная загрузка (chunking);
  • предварительная агрегация на сервере;
  • упрощение типов данных;
  • удаление избыточных колонок до импорта.

Текстовые форматы помимо CSV

В Kepler.gl под термином «текстовые форматы» попадают структуры, представляющие данные в строковом виде без бинарной сериализации.

Основные варианты:

TSV Используется для более строгого разделения колонок, особенно при наличии запятых в текстовых полях.

JSON Предоставляет иерархическую структуру и часто используется как промежуточный формат:

[
  {
    "latitude": 55.751244,
    "longitude": 37.618423,
    "value": 120
  }
]

GeoJSON Представляет пространственные объекты в стандартизированном формате:

{
  "type": "Feature",
  "geometry": {
    "type": "Point",
    "coordinates": [37.618423, 55.751244]
  },
  "properties": {
    "value": 120
  }
}

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


Конвертация текстовых форматов в слой данных

При импорте текстовых форматов выполняется унификация в единый табличный слой Kepler.gl. Независимо от исходной структуры данные приводятся к:

  • плоской таблице (flat table model);
  • типизированным колонкам;
  • нормализованным географическим полям;
  • единообразному представлению временных значений.

GeoJSON при этом транслируется в набор объектов с геометрией и свойствами.


Особенности загрузки через JavaScript API

При программной работе CSV может быть загружен через конфигурацию датасета:

const dataset = {
  data: csvString,
  format: 'csv'
};

Альтернативный вариант через объект:

const dataset = {
  info: { label: 'sample' },
  data: parsedArray,
  format: 'row'
};

Kepler.gl выполняет дальнейшую нормализацию независимо от исходного представления, приводя данные к внутреннему формату слоёв.


Обработка ошибок и неоднозначных данных

Типовые проблемы при работе с CSV:

  • смешение типов в одной колонке (числа и строки);
  • пустые координаты;
  • некорректные разделители;
  • повреждённые строки;
  • несоответствие заголовков и данных.

При обнаружении ошибок применяется стратегия «best effort parsing», при которой корректные строки сохраняются, а некорректные игнорируются или помечаются как null-значения.


Подготовка данных для визуализации слоёв

После импорта CSV данные используются различными слоями:

  • Point Layer — координаты точек;
  • Heatmap Layer — плотность значений;
  • Grid Layer — агрегация по сетке;
  • Hexagon Layer — пространственная кластеризация.

Каждый слой извлекает разные комбинации полей:

  • географические координаты;
  • числовые метрики;
  • временные параметры;
  • категориальные признаки.

Оптимизация структуры CSV перед визуализацией

Эффективная работа достигается при соблюдении принципов подготовки данных:

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

Уменьшение размерности данных напрямую влияет на производительность WebGL-рендеринга и скорость взаимодействия с картой.