Работа без базовой карты

Базовая карта (Base Map) является одним из центральных элементов большинства геопространственных приложений. Она обеспечивает визуальный контекст, отображая дороги, здания, водоёмы, административные границы и другие объекты местности. Однако в ряде сценариев использование базовой карты оказывается ненужным или даже мешает восприятию данных. Библиотека Kepler.gl позволяет полностью отключить отображение подложки и работать исключительно с пользовательскими наборами данных.

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


Причины отказа от базовой карты

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

Основные преимущества:

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

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


Архитектура отображения карты в Kepler.gl

Kepler.gl использует стек технологий:

  • React;
  • Redux;
  • deck.gl;
  • MapLibre GL или Mapbox GL.

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

Упрощённая схема рендеринга:

+-----------------------+
| Пользовательские слои |
+-----------------------+
| Базовая карта         |
+-----------------------+
| Canvas/WebGL          |
+-----------------------+

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


Полное отключение базовой карты через конфигурацию

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

Пример:

const config = {
  version: "v1",
  config: {
    mapState: {
      latitude: 55.751244,
      longitude: 37.618423,
      zoom: 8
    },
    mapStyle: {
      styleType: null,
      visibleLayerGroups: {}
    }
  }
};

В данном случае:

  • отсутствует выбранный стиль карты;
  • группы слоёв базовой карты не отображаются;
  • отображаются только пользовательские данные.

Управление параметром styleType

Секция mapStyle отвечает за внешний вид подложки.

Обычно используются значения:

styleType: "dark"

или

styleType: "light"

Для отключения карты применяются варианты:

styleType: null

или

styleType: ""

в зависимости от используемой версии библиотеки.

Пример:

const mapStyle = {
  styleType: null
};

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


Использование пустого стиля карты

В некоторых случаях требуется оставить инфраструктуру Mapbox или MapLibre активной, но скрыть все картографические объекты.

Создаётся пустой стиль:

const emptyStyle = {
  version: 8,
  sources: {},
  layers: []
};

Затем он передаётся в конфигурацию:

const config = {
  mapStyle: {
    mapStyles: {
      empty: {
        id: "empty",
        label: "Empty Style",
        url: null,
        style: emptyStyle
      }
    },
    styleType: "empty"
  }
};

Результат:

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

Скрытие групп слоёв базовой карты

Kepler.gl позволяет отключать отдельные категории объектов карты.

Доступные группы обычно включают:

{
  label: true,
  road: true,
  border: true,
  building: true,
  water: true,
  land: true
}

Полное скрытие:

visibleLayerGroups: {
  label: false,
  road: false,
  border: false,
  building: false,
  water: false,
  land: false
}

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


Работа только с координатными данными

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

Пример данных:

const dataset = [
  {
    lat: 55.75,
    lng: 37.61,
    value: 120
  },
  {
    lat: 59.93,
    lng: 30.31,
    value: 80
  }
];

Точки будут отображаться на пустом фоне.

Это позволяет строить:

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

Настройка цвета фона

При отсутствии базовой карты большое значение приобретает цвет фона рабочей области.

Настройка выполняется через CSS.

Пример тёмного фона:

.kepler-gl {
    background-color: #111111;
}

Светлый вариант:

.kepler-gl {
    background-color: #ffffff;
}

Для аналитических панелей часто используются нейтральные оттенки:

.kepler-gl {
    background-color: #f5f5f5;
}

Использование пользовательских изображений вместо карты

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

Вместо стандартной подложки может использоваться изображение.

Пример концепции:

const imageLayer = {
  id: "floor-plan",
  type: "image"
};

После размещения изображения координаты объектов привязываются к точкам изображения.

Подобный подход используется для:

  • аэропортов;
  • производственных площадок;
  • логистических терминалов;
  • торговых центров;
  • спортивных арен.

Работа с локальными системами координат

Большинство картографических приложений используют систему координат WGS84.

Однако некоторые задачи требуют локальных координат:

{
  x: 120,
  y: 340
}

или

{
  x: 5000,
  y: 8000
}

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

Это особенно востребовано в:

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

Производительность при отключённой карте

Удаление базовой карты положительно влияет на производительность.

Снижается нагрузка на:

  • сеть;
  • память браузера;
  • видеокарту;
  • процессор.

Отсутствует необходимость:

  • загружать тайлы;
  • декодировать изображения;
  • строить векторные объекты карты;
  • обновлять подписи и дорожные слои.

При работе с миллионами объектов выигрыш может быть весьма заметным.


Экспорт конфигурации без карты

После настройки проекта конфигурация экспортируется обычным образом.

Пример экспортируемого блока:

{
  "mapStyle": {
    "styleType": null,
    "visibleLayerGroups": {}
  }
}

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


Использование режима без карты в аналитических панелях

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

Типичные примеры:

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

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


Пример полной конфигурации

const config = {
  version: "v1",
  config: {
    visState: {
      layers: [
        {
          id: "points",
          type: "point"
        }
      ]
    },

    mapState: {
      bearing: 0,
      pitch: 0,
      zoom: 4,
      latitude: 55.75,
      longitude: 37.61
    },

    mapStyle: {
      styleType: null,

      visibleLayerGroups: {
        label: false,
        road: false,
        border: false,
        building: false,
        water: false,
        land: false
      }
    }
  }
};

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