Географическая или сферическая проекция в Vega определяет
преобразование координат долготы и широты в экранные координаты x и y. В
основе лежит объект projection, который связывает
геометрическое пространство Земли с плоскостью визуализации. Проекция
выступает промежуточным слоем между геоданными и отрисовкой, обеспечивая
корректное отображение карт, регионов и пространственных
распределений.
В Vega проекция является самостоятельным компонентом, который может
использоваться совместно с географическими трансформациями
(geojson, graticule, geopath) и
масштабированием сцены.
Базовая конфигурация проекции описывается через поле
projection в корневом объекте спецификации или внутри
географических преобразований.
{
"projection": {
"type": "mercator",
"scale": 150,
"translate": [480, 300]
}
}
Каждый параметр определяет геометрическое поведение:
type — тип проекцииscale — масштабирование сферы на плоскостиtranslate — смещение центра отображенияVega поддерживает широкий набор географических преобразований. Выбор типа определяет математическую модель отображения поверхности Земли.
Одна из наиболее распространённых проекций для веб-картографии.
{
"projection": {
"type": "mercator"
}
}
Свойства:
Специализированная проекция для США, объединяющая несколько региональных проекций.
{
"projection": {
"type": "albersUsa"
}
}
Особенности:
Проекция с балансом между искажением площади и форм.
{
"projection": {
"type": "equalEarth"
}
}
Характеристики:
{
"projection": {
"type": "naturalEarth1"
}
}
Используется для:
Сферическая проекция, имитирующая вид Земли из космоса.
{
"projection": {
"type": "orthographic"
}
}
Особенности:
{
"projection": {
"type": "stereographic"
}
}
Дополнительные типы:
stereographicazimuthalEqualAreaconicConformalconicEqualAreatransverseMercatorКаждая проекция соответствует определённой математической модели картографического преобразования.
Параметр scale управляет размером отображаемой
карты.
{
"projection": {
"type": "mercator",
"scale": 200
}
}
Определяет смещение центра карты в пикселях.
{
"projection": {
"translate": [400, 250]
}
}
Формат:
[x, y]
Используется для центрирования карты в холсте.
Задаёт географический центр проекции в координатах долгота/широта.
{
"projection": {
"center": [0, 0]
}
}
Позволяет вращать сферу относительно осей.
{
"projection": {
"rotate": [0, 0, 0]
}
}
Формат:
[lambda, phi, gamma]
Параметр clipAngle ограничивает видимую область
сферы.
{
"projection": {
"type": "orthographic",
"clipAngle": 90
}
}
{
"projection": {
"precision": 0.1
}
}
Один из ключевых механизмов адаптации проекции к данным.
{
"projection": {
"type": "mercator",
"fit": {
"type": "FeatureCollection",
"features": []
}
}
}
Функция fit позволяет:
scale и
translateВозможные типы входных данных:
{
"projection": {
"size": [800, 600]
}
}
Используется для:
fitПроекция напрямую используется в географических mark-ах.
{
"marks": [
{
"type": "shape",
"from": { "data": "world" },
"encode": {
"enter": {
"fill": { "value": "#ddd" }
}
},
"transform": [
{
"type": "geoshape",
"projection": "projection"
}
]
}
]
}
Здесь:
geoshape использует заданную projectionGraticule — сетка меридианов и параллелей, зависящая от проекции.
{
"data": {
"graticule": true
},
"transform": [
{
"type": "geoshape",
"projection": "projection"
}
]
}
Проекция влияет на:
Реальные конфигурации часто включают несколько параметров одновременно.
{
"projection": {
"type": "mercator",
"scale": 180,
"center": [30, 50],
"translate": [500, 300],
"precision": 0.5
}
}
Такой набор позволяет:
При изменении размеров контейнера:
translate требует пересчётаfit может быть повторно вычисленscale часто становится относительным параметромПроекции в Vega не являются статическими: они пересчитываются при каждом изменении состояния сцены, если привязаны к динамическим данным или размерам.
Каждая проекция вводит собственные искажения:
Эти свойства не конфигурируются напрямую, но определяются
математической моделью type.
Хотя одна спецификация обычно содержит одну проекцию, возможны сценарии с раздельной отрисовкой:
Каждая сцена может иметь собственный projection,
независимо от других.
Проекции влияют на производительность через:
Увеличение точности и детализации проекции напрямую увеличивает вычислительную нагрузку на рендеринг.
При изменении GeoJSON:
fit может пересчитывать масштабcenter может смещатьсяЭто делает projection ключевым элементом реактивной визуализации пространственных данных.