kepler.gl предоставляет слой Line layer как один из базовых инструментов визуализации линейных геометрий на интерактивных картах. Line layer используется для отображения маршрутов, потоков перемещения, соединений между точками, транспортных сетей и любых других данных, представимых в виде линий или полилиний.
Line layer опирается на геометрии типа LineString или массив координатных пар. Основная идея заключается в том, что каждая строка данных содержит:
Типичная структура данных:
const data = [
{
source: [-73.991, 40.735],
target: [-73.985, 40.748],
weight: 10
}
];
В более сложных случаях используется массив координат:
const data = [
{
path: [
[-73.991, 40.735],
[-73.990, 40.740],
[-73.985, 40.748]
],
volume: 100
}
];
Ключевым моментом является то, что Kepler.gl преобразует такие структуры в геометрические линии внутри WebGL-слоя, оптимизированного для рендеринга больших наборов данных.
Line layer конфигурируется через объект слоя, где определяются поля данных и визуальные параметры.
Пример базовой конфигурации:
const lineLayer = {
id: 'line-layer',
type: 'line',
config: {
dataId: 'my_dataset',
label: 'Routes',
color: [30, 150, 250],
columns: {
source: 'source',
target: 'target'
}
}
};
В случае использования полилиний:
columns: {
path: 'path'
}
Kepler.gl автоматически определяет тип геометрии на основе заданных колонок.
Line layer обладает набором параметров, влияющих на внешний вид линий:
Толщина задаётся через фиксированное значение или через поле данных:
config: {
strokeWidth: 2
}
или
config: {
strokeWidth: {
field: 'weight',
domain: [0, 100],
range: [1, 10]
}
}
Цвет может быть статическим или динамическим:
config: {
color: [255, 0, 0]
}
или на основе данных:
config: {
color: {
field: 'volume',
domain: [0, 100],
range: [
[0, 255, 0],
[255, 0, 0]
]
}
}
Использование цветового градиента позволяет визуализировать интенсивность потоков или значимость связей.
config: {
opacity: 0.8
}
При работе с большим количеством линий рекомендуется снижать прозрачность для уменьшения визуального шума.
Line layer поддерживает несколько подходов к описанию геометрии:
Используется для направленных связей:
Подходит для:
Используется для сложных маршрутов:
Подходит для:
Line layer поддерживает визуализацию направленного движения с помощью анимированных эффектов:
config: {
animation: {
enabled: true,
speed: 1
}
}
Анимация используется для отображения потоков во времени, например:
При работе с географическими линиями часто возникает необходимость сглаживания:
Kepler.gl применяет WebGL-интерполяцию, позволяющую рендерить линии без потери производительности даже при большом количестве сегментов.
Line layer автоматически адаптируется к zoom level карты. Поведение может быть настроено:
config: {
minZoom: 0,
maxZoom: 12
}
Это позволяет скрывать или показывать линии в зависимости от уровня детализации.
Line layer оптимизирован для больших массивов данных за счёт использования WebGL. Основные факторы влияния на производительность:
Каждая линия разбивается на сегменты, и их количество напрямую влияет на нагрузку GPU.
Динамические поля (цвет, ширина) увеличивают вычислительную нагрузку:
Line layer поддерживает стандартные механизмы взаимодействия:
Пример обработки событий:
keplerGlInstance.on('layerClick', (info) => {
console.log(info.object);
});
Line layer часто комбинируется с другими слоями:
Комбинация позволяет строить комплексные модели:
const layer = {
id: 'transport-lines',
type: 'line',
config: {
dataId: 'transport',
columns: {
path: 'route'
},
color: {
field: 'passengers',
domain: [0, 500],
range: [
[0, 200, 255],
[255, 50, 0]
]
},
strokeWidth: {
field: 'frequency',
domain: [1, 10],
range: [1, 6]
},
opacity: 0.7,
minZoom: 2,
maxZoom: 14,
animation: {
enabled: true,
speed: 2
}
}
};
При работе с миллионами линий важно учитывать ограничения WebGL и браузера:
Kepler.gl применяет внутреннюю оптимизацию через декомпозицию данных и инстансинг геометрий, что позволяет поддерживать плавность визуализации даже при высокой плотности линий.
Line layer работает в системе координат Web Mercator (EPSG:3857). Все входные координаты в формате:
[longitude, latitude]
При необходимости Kepler.gl выполняет автоматическое преобразование координат при загрузке данных.