Web Mercator проекция

Геометрическая основа и назначение

Web Mercator (EPSG:3857) — стандартная картографическая проекция, лежащая в основе большинства веб-картографических систем, включая MapLibre GL JS. Её ключевая задача — преобразование сферических координат Земли (широта/долгота) в двумерное плоское пространство, пригодное для отрисовки на экране.

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

Ключевая особенность: Web Mercator не сохраняет площади и сильно искажает размеры объектов при удалении от экватора, но обеспечивает стабильную визуальную навигацию и совместимость между слоями данных.


Математическая модель преобразования координат

Преобразование из географических координат (λ, φ) в Web Mercator осуществляется по формулам:

  • Долгота (λ) преобразуется линейно
  • Широта (φ) проходит через логарифмическое преобразование

Идея заключается в переводе угловых координат в метрическую систему, где единицей измерения становится «псевдометр» на сфере радиуса Земли.

Особенности преобразования широты:

  • значения φ ограничиваются диапазоном приближённо ±85.0511°
  • за пределами этого диапазона проекция становится асимптотической

Это ограничение связано с тем, что при приближении к полюсам значение функции стремится к бесконечности.


Почему именно Web Mercator используется в веб-картографии

Причины доминирования Web Mercator:

1. Простота тайлинга Карта легко разбивается на квадратные тайлы (256×256 или 512×512 пикселей), что идеально подходит для CDN-доставки и кеширования.

2. Масштабирование через зум-уровни Каждый уровень зума удваивает разрешение карты, создавая пирамидальную структуру данных.

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

4. Быстрая отрисовка в GPU Современные движки, включая MapLibre GL JS, используют WebGL, где Web Mercator легко транслируется в экранное пространство.


Роль Web Mercator в MapLibre GL JS

MapLibre GL JS строится вокруг предположения, что базовая карта работает в EPSG:3857. Это означает:

  • все векторные тайлы уже приведены к Web Mercator
  • координаты источников данных интерпретируются через эту проекцию
  • камера (camera model) оперирует в проекционных координатах

Внутренний pipeline можно упростить:

  1. Географические координаты (lon/lat)
  2. Проекция Web Mercator
  3. Tile space (z/x/y)
  4. Clip space (WebGL)
  5. Screen space

Ограничения и искажения

Несмотря на популярность, Web Mercator имеет фундаментальные недостатки.

Искажение площадей

На высоких широтах объекты визуально увеличиваются:

  • Гренландия выглядит сопоставимой с Африкой
  • северные регионы визуально доминируют

Это не ошибка рендеринга, а следствие цилиндрической проекции.

Ограничение полюсов

Из-за асимптотического поведения функции:

  • полюса не могут быть отображены напрямую
  • максимальная широта ограничена ~85.0511°

Геодезическая неточность

Web Mercator не является геодезически точной системой:

  • расстояния и площади искажены
  • измерения требуют дополнительной коррекции (например, Haversine)

Тайл-система и связь с проекцией

Web Mercator напрямую определяет структуру тайловой пирамиды.

Формирование тайлов

На нулевом зуме:

  • вся карта представлена одним тайлом 256×256

На каждом следующем уровне:

  • количество тайлов увеличивается в 4 раза
  • применяется схема: 2ⁿ × 2ⁿ

Где n — уровень зума.

Координаты тайлов

Каждый тайл определяется:

  • z — уровень масштабирования
  • x — индекс по долготе
  • y — индекс по широте (в перевёрнутой системе Y)

MapLibre GL JS использует эту систему для:

  • загрузки векторных тайлов
  • кеширования
  • динамического обновления слоёв

Web Mercator и WebGL-пайплайн

В MapLibre GL JS Web Mercator не является финальной системой координат, а промежуточным этапом.

Преобразование проходит через несколько стадий:

  • lon/lat → Web Mercator (EPSG:3857)
  • Web Mercator → world coordinates
  • world coordinates → clip space (матрицы камеры)
  • clip space → rasterization GPU

Матрица проекции учитывает:

  • zoom
  • pitch (наклон камеры)
  • bearing (поворот карты)

Камера и Web Mercator

Камера в MapLibre GL JS работает не с географическими координатами напрямую, а с проекционной плоскостью.

Zoom как логарифмическая шкала

Масштабирование не линейно:

  • zoom 0 — вся планета
  • zoom 10 — регион
  • zoom 20 — отдельные здания

Каждый шаг zoom соответствует удвоению разрешения.

Pitch и перспективная деформация

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

  • Web Mercator остаётся базовой плоскостью
  • перспективное искажение добавляется поверх

Это создаёт эффект 3D-карты без изменения исходной проекции.


Сравнение с альтернативными проекциями

Хотя Web Mercator доминирует, существуют альтернативы:

Lambert Conformal Conic

  • лучше для средних широт
  • используется в авиации

Albers Equal Area

  • сохраняет площади
  • используется в статистике

WGS84 / EPSG:4326

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

Однако в веб-картографии они почти всегда преобразуются в Web Mercator для визуализации.


Векторные тайлы и Web Mercator

Векторные тайлы в MapLibre GL JS хранят геометрию уже в проекционном виде.

Особенности:

  • координаты упакованы в integer grid
  • декодируются в Web Mercator space
  • стилизация происходит после проекции

Это позволяет:

  • менять стили без перегенерации данных
  • динамически фильтровать объекты
  • применять интерактивные эффекты

Точность и масштабирование в больших зумах

На высоких уровнях зума Web Mercator сталкивается с проблемой:

  • потеря точности float32
  • дрожание объектов при панорамировании

MapLibre GL JS решает это через:

  • использование double precision в критических вычислениях
  • локальные координатные системы тайлов
  • перерасчёт матриц камеры при каждом кадре

Практическое значение для рендеринга слоёв

Каждый слой карты интерпретирует Web Mercator по-своему:

  • fill-слои используют плоские полигоны
  • line-слои строятся вдоль проекционных линий
  • symbol-слои учитывают экранное пространство

Это создаёт единый визуальный слой поверх искажённой, но предсказуемой проекции.


Геометрические пределы мира карты

Web Mercator формирует «виртуальный квадрат мира»:

  • координатное пространство бесконечно в теории
  • практически ограничено диапазоном тайлов
  • края карты дублируются при wrap-around по долготе

Эта особенность позволяет:

  • бесшовное горизонтальное панорамирование
  • циклическое отображение мира

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

При переходе через ±180° долготы:

  • координаты «переворачиваются»
  • тайлы повторяются
  • карта остаётся непрерывной

Это достигается не географической точностью, а математической нормализацией в Web Mercator пространстве.


Значение для современных картографических систем

Web Mercator стал де-факто стандартом благодаря сочетанию:

  • вычислительной простоты
  • предсказуемой структуры тайлов
  • совместимости между системами
  • оптимизации под GPU-рендеринг

MapLibre GL JS использует эту проекцию как фундамент, вокруг которого строится вся система визуализации, стилизации и интерактивности карты.