Параметры проекции: scale, translate, center, rotate

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


scale: управление масштабом проекции

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

Суть масштабирования

Проекция в Vega-Lite переводит сферические координаты (longitude, latitude) в плоскость. Масштаб управляет тем, насколько «крупно» отображается карта:

  • большие значения scale → карта увеличивается, видна меньшая область
  • малые значения scale → карта уменьшается, охватывает большую территорию

Математически scale влияет на коэффициент преобразования координат:

[ x’ = scale x,y’ = scale y]

где (x, y) — координаты после базовой проекции.

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

{
  "projection": {
    "type": "mercator",
    "scale": 150
  }
}

Особенности поведения

  • Значение зависит от типа проекции (mercator, orthographic и др.)
  • При отсутствии scale используется значение по умолчанию, рассчитанное под размер viewport
  • Часто используется совместно с translate для точного позиционирования карты

translate: смещение центра проекции

Параметр translate задаёт смещение всей проекции относительно координатной системы SVG/Canvas.

Структура

translate задаётся как массив из двух чисел:

"translate": [tx, ty]

где:

  • tx — смещение по оси X
  • ty — смещение по оси Y

Функциональная роль

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

Пример использования

{
  "projection": {
    "type": "mercator",
    "scale": 120,
    "translate": [400, 250]
  }
}

Поведение в системе координат

После применения scale и других преобразований результат дополнительно сдвигается:

[ x’’ = x’ + tx,y’’ = y’ + ty]

Практическое значение

  • обеспечивает центрирование карты в контейнере
  • компенсирует изменение размеров viewport
  • используется при адаптивной верстке визуализаций

center: географический центр проекции

Параметр center определяет точку, которая считается центром проекции в географических координатах.

Формат

"center": [longitude, latitude]

Роль в преобразовании

center задаёт «точку привязки» глобуса или карты. Все вычисления проекции выполняются относительно этой точки.

Пример

{
  "projection": {
    "type": "mercator",
    "center": [0, 0]
  }
}

В этом случае центр проекции совпадает с пересечением экватора и нулевого меридиана.

Влияние на визуализацию

Изменение center:

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

Применение в разных проекциях

  • Mercator: центр влияет на горизонтальное смещение
  • Orthographic: центр задаёт точку «смотрящего глобуса»
  • Equal Earth: влияет на симметрию отображения

rotate: поворот географической системы координат

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

Формат задания

"rotate": [lambda, phi, gamma]

где:

  • lambda — поворот вокруг вертикальной оси (longitude)
  • phi — наклон вокруг горизонтальной оси (latitude)
  • gamma — вращение плоскости экрана

Математическая интерпретация

rotate применяется к сфере до выполнения проекции, изменяя ориентацию глобуса:

[ (‘, ’) = R(, )]

где (R) — матрица вращения.

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

{
  "projection": {
    "type": "orthographic",
    "rotate": [-10, -20, 0]
  }
}

Поведение параметров

  • lambda изменяет долготу центра обзора
  • phi наклоняет «ось Земли»
  • gamma используется реже, в основном для специфических визуальных эффектов

Влияние на восприятие карты

rotate позволяет:

  • менять точку обзора глобуса
  • имитировать вращение Земли
  • корректировать ориентацию региональных карт
  • компенсировать искажения при нестандартных центрах

Взаимодействие параметров scale, translate, center и rotate

Все четыре параметра работают как единая цепочка преобразований.

Последовательность применения

  1. center задаёт исходную точку географической системы
  2. rotate изменяет ориентацию сферы
  3. применяется базовая проекция (mercator, orthographic и др.)
  4. scale выполняет масштабирование результата
  5. translate переносит итоговую картинку в координаты canvas

Концептуальная модель

[ P_{screen} = translate(scale(projection(rotate(center(, )))))]

Типичные зависимости

  • увеличение scale требует пересмотра translate
  • изменение center часто требует корректировки rotate
  • rotate может визуально «сдвигать» центр, несмотря на фиксированный center
  • translate компенсирует все визуальные смещения

Практическая конфигурация Vega-Lite

Полный пример проекции в Vega-Lite:

{
  "projection": {
    "type": "mercator",
    "center": [20, 50],
    "scale": 200,
    "translate": [480, 300],
    "rotate": [-30, 0, 0]
  }
}

Такая конфигурация задаёт:

  • центрирование карты на долготе 20° и широте 50°
  • увеличенный масштаб отображения
  • смещение к центру холста
  • поворот глобуса для изменения ориентации

Особенности применения в Vega и Vega-Lite

Vega-Lite

  • декларативное описание
  • автоматический расчёт части параметров
  • упрощённый контроль над viewport

Vega

  • полный контроль над pipeline трансформаций
  • возможность динамического изменения параметров
  • более тонкая работа с projection pipeline

Типичные ошибки конфигурации

Несогласованность scale и translate

При увеличении scale без корректировки translate карта выходит за пределы viewport.

Некорректный center

Установка центра вне допустимого диапазона долготы/широты приводит к смещению и искажению карты.

Чрезмерный rotate

Сильные значения phi могут перевернуть карту или привести к неожиданной инверсии геометрии.


Геометрическая роль параметров

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

  • scale — размер
  • translate — положение
  • center — географическая опорная точка
  • rotate — ориентация

Совместное использование этих параметров формирует полную модель управления проекцией, позволяющую точно контролировать визуализацию географических данных в Vega и Vega-Lite.