В географических визуализациях Vega и Vega-Lite проекция определяет способ преобразования координат широты и долготы в двумерное пространство экрана. Поведение карты формируется набором параметров, управляющих масштабированием, смещением, центровкой и поворотом. Эти параметры задают геометрическую интерпретацию пространственных данных и напрямую влияют на читаемость и корректность отображения.
Параметр scale определяет степень увеличения или уменьшения географической сцены при проецировании на экран.
Проекция в Vega-Lite переводит сферические координаты (longitude, latitude) в плоскость. Масштаб управляет тем, насколько «крупно» отображается карта:
Математически scale влияет на коэффициент преобразования координат:
[ x’ = scale x,y’ = scale y]
где (x, y) — координаты после базовой проекции.
{
"projection": {
"type": "mercator",
"scale": 150
}
}
Параметр translate задаёт смещение всей проекции относительно координатной системы SVG/Canvas.
translate задаётся как массив из двух чисел:
"translate": [tx, ty]
где:
translate определяет положение центра проекции на холсте. Без корректного смещения карта может оказаться смещённой за пределы видимой области.
{
"projection": {
"type": "mercator",
"scale": 120,
"translate": [400, 250]
}
}
После применения scale и других преобразований результат дополнительно сдвигается:
[ x’’ = x’ + tx,y’’ = y’ + ty]
Параметр center определяет точку, которая считается центром проекции в географических координатах.
"center": [longitude, latitude]
center задаёт «точку привязки» глобуса или карты. Все вычисления проекции выполняются относительно этой точки.
{
"projection": {
"type": "mercator",
"center": [0, 0]
}
}
В этом случае центр проекции совпадает с пересечением экватора и нулевого меридиана.
Изменение center:
Параметр rotate управляет вращением глобальной системы координат перед проецированием.
"rotate": [lambda, phi, gamma]
где:
rotate применяется к сфере до выполнения проекции, изменяя ориентацию глобуса:
[ (‘, ’) = R(, )]
где (R) — матрица вращения.
{
"projection": {
"type": "orthographic",
"rotate": [-10, -20, 0]
}
}
rotate позволяет:
Все четыре параметра работают как единая цепочка преобразований.
[ P_{screen} = translate(scale(projection(rotate(center(, )))))]
Полный пример проекции в Vega-Lite:
{
"projection": {
"type": "mercator",
"center": [20, 50],
"scale": 200,
"translate": [480, 300],
"rotate": [-30, 0, 0]
}
}
Такая конфигурация задаёт:
При увеличении scale без корректировки translate карта выходит за пределы viewport.
Установка центра вне допустимого диапазона долготы/широты приводит к смещению и искажению карты.
Сильные значения phi могут перевернуть карту или привести к неожиданной инверсии геометрии.
Каждый параметр отвечает за отдельный аспект пространственного преобразования:
Совместное использование этих параметров формирует полную модель управления проекцией, позволяющую точно контролировать визуализацию географических данных в Vega и Vega-Lite.