Web Mercator является одной из ключевых картографических проекций, лежащих в основе большинства современных веб-картографических систем и напрямую используемой в экосистеме CesiumJS при работе с 2D-тайлами и смешанными режимами отображения. Несмотря на то, что CesiumJS ориентирован на трёхмерную глобусную модель, понимание Web Mercator критично для корректной интеграции слоёв, тайловых сервисов и источников данных, предоставляемых в формате XYZ, TMS и WMTS.
Web Mercator, также известный как EPSG:3857, представляет собой псевдосферическую проекцию, в которой поверхность Земли отображается на квадратную плоскость. Формально она основана на классической проекции Меркатора, но адаптирована для использования в веб-картографии, где важны простота вычислений и совместимость с тайловой системой.
Проекция опирается на преобразование географических координат (широта φ, долгота λ) в декартову систему координат (x, y):
долгота отображается линейно:
x = R · λ
широта преобразуется через логарифмическую функцию:
y = R · ln(tan(π/4 + φ/2))
где R — радиус Земли в модели (обычно принимается 6378137 м).
Ключевой особенностью является нелинейное растяжение по оси Y, которое резко увеличивается при приближении к полюсам. На практике это приводит к тому, что область выше ~85.0511° широты не может быть корректно отображена.
Web Mercator не предназначена для точного отображения полярных областей. При φ → ±90° значение функции y стремится к бесконечности, поэтому вводится искусственное ограничение:
Это значение соответствует границе, при которой квадратная карта остаётся конечной.
В CesiumJS это ограничение проявляется при использовании 2D-слоёв или при наложении тайловых карт на глобус. Полярные области либо не отображаются, либо «сжимаются» к верхнему и нижнему краю проекции.
Одним из главных преимуществ Web Mercator является простая схема разбиения на тайлы. В стандартной XYZ-системе:
Это обеспечивает предсказуемую структуру хранения данных и эффективную подгрузку.
В контексте CesiumJS тайловая система Web Mercator используется как один из слоёв поверх 3D-глобуса. Даже при рендеринге сферической Земли движок способен отображать такие слои, «натягивая» их на эллипсоид WGS84.
CesiumJS по умолчанию использует трехмерный эллипсоид WGS84 (EPSG:4326), где координаты задаются как:
Однако Web Mercator вводит промежуточное пространство:
При загрузке тайлового слоя Cesium выполняет следующие преобразования:
Важно, что обратное преобразование выполняется только визуально, без изменения исходной геодезической модели.
Основное свойство Web Mercator — сохранение углов (конформность), но не площадей. Это приводит к значительным искажениям:
Такая деформация допустима в веб-картографии, где важнее визуальная согласованность тайлов, чем метрическая точность.
В CesiumJS это особенно заметно при одновременном использовании:
Web Mercator тесно связан с концепцией уровней детализации (LOD). При увеличении масштаба:
Каждый следующий уровень увеличивает разрешение в 2 раза по каждой оси, что даёт экспоненциальный рост детализации:
CesiumJS использует эту структуру для оптимизации загрузки данных: запрашиваются только видимые тайлы, соответствующие текущей камере.
Камера в CesiumJS оперирует трёхмерным пространством, но при работе с Web Mercator-слоями возникает дополнительный слой логики:
При наклоне камеры эффект искажения Web Mercator становится более заметным: плоские текстуры «тянутся» по поверхности сферы, особенно ближе к горизонту.
Одним из сложных аспектов является обработка границы 180° долготы (анти-меридиана). В Web Mercator:
В CesiumJS это решается:
Без этого возникают артефакты разрыва изображения при переходе через 180°.
Векторные слои, такие как GeoJSON или Vector Tiles, часто хранятся в Web Mercator для упрощения рендеринга. В CesiumJS они:
Такой двойной переход увеличивает вычислительную нагрузку, но обеспечивает совместимость с большинством картографических источников.
CesiumJS изначально ориентирован на геодезически корректную модель Земли, где:
Web Mercator в этой системе является внешним слоем визуализации, а не фундаментальной координатной системой. Это принципиальное различие:
Их совмещение требует постоянных преобразований между системами координат.
При работе с Web Mercator возникают численные ограничения:
CesiumJS минимизирует ошибки за счёт:
В гибридных сценах CesiumJS Web Mercator часто используется одновременно с:
В таких конфигурациях Web Mercator выполняет роль:
Это делает его неотъемлемым компонентом взаимодействия с картографическими сервисами, несмотря на математические ограничения и искажения.