Почти каждая интерактивная карта, которую вы когда-либо использовали, нарисована в проекции Web Mercator. Google Maps, OpenStreetMap, Mapbox, MapLibre, Apple Maps, MapAtlas — везде одна и та же проекция, идентифицированная в базе данных EPSG как EPSG:3857. Причина проста: это проекция, которая аккуратно масштабируется в тайловую сетку, сохраняет узнаваемые формы при любом зуме и хорошо работает как стандартный фон для почти любого бизнес-кейса с картами.
Это руководство объясняет, что именно представляет собой данная проекция, почему она искажает площади именно таким образом и когда стоит использовать что-то другое.
Проекция за 30 секунд
Земля — приблизительно сфера. Экран компьютера плоский. Картографическая проекция — математическая функция, преобразующая положения на сфере (широта, долгота) в положения на плоской поверхности (x, y). Каждая проекция чем-то жертвует: формой, площадью, расстоянием или направлением. Идеальной проекции для всех применений не существует, именно поэтому картография является отдельной дисциплиной.
Web Mercator сохраняет форму и направление. Она искажает площадь. Чем дальше вы от экватора, тем крупнее объекты выглядят по сравнению с их реальным размером на земле.
Математика в одном абзаце
Для долготы lng и широты lat в радианах:
x = R * lngy = R * ln(tan(pi/4 + lat/2))
где R — радиус сферической Земли в проекции (6 378 137 метров в EPSG:3857). Тайловая сетка отображает эти значения x,y в целочисленные пиксельные координаты на каждом уровне зума: зум 0 охватывает мир в одном тайле 256x256, каждый последующий уровень удваивает разрешение.
Ограничение по широте установлено примерно на ±85,0511 градуса, потому что формула стремится к бесконечности на полюсах. Именно поэтому полярные регионы обрезаются на всех картах Web Mercator.
Почему площади растягиваются
Причина роста искажения площадей к полюсам в том, что ось Y нелинейна по широте. Член ln(tan(...)) увеличивает расстояние между параллелями по мере движения на север или юг. На экваторе один градус широты занимает столько же вертикального пространства, сколько один градус долготы. В Хельсинки один градус широты занимает почти вдвое больше вертикального пространства.
Два известных побочных эффекта:
- Гренландия и Африка. На карте Web Mercator Гренландия выглядит примерно такой же большой, как Африка. В действительности Африка примерно в четырнадцать раз больше. Та же иллюзия делает Антарктиду похожей на непрерывную полосу вдоль нижнего края карты.
- Россия. Россия выглядит огромной, потому что большая её часть расположена в высокоширотной полосе, где вертикальное искажение умножает её кажущуюся площадь.
Для карт на уровне улиц ничего из этого не имеет значения. Район в Берлине и район в Сиднее рендерятся почти в своей истинной форме. Но для тематических карт, сравнивающих значения по континентам, это искажение является реальной проблемой.
EPSG:3857 и EPSG:4326
В любой геопространственной кодовой базе встречаются оба кода EPSG.
- EPSG:4326 (WGS84 широта/долгота): углы. Способ хранить координаты. Способ, которым их сообщает GPS. Способ, которым они кодируются в GeoJSON. Это универсальная система координат.
- EPSG:3857 (Web Mercator): проекция. Способ преобразования координат в пиксели для отображения.
В продакшне работайте в системе 4326 везде, кроме границы рендеринга. Столбцы PostGIS: geometry(point, 4326). JSON-полезные нагрузки: [lng, lat] в WGS84. Входные данные для библиотеки карт: координаты 4326, которые рендерер проецирует внутренне.
Хранение данных в системе 3857 почти всегда является ошибкой. Как только потребуется вычислить расстояние, обратиться к другому картографическому провайдеру или передать данные в GIS-инструмент, придётся проецировать обратно в 4326, и преобразование обойдётся потерей точности.
Почему Web Mercator завоевал веб
Когда Google запустил Maps в 2005 году, команда выбрала Web Mercator, потому что это была наипростейшая проекция, создающая квадратные тайлы на каждом уровне зума. Квадратные тайлы аккуратно укладываются в пирамиду степеней двойки: зум 0 — один тайл, зум 1 — четыре, зум 2 — шестнадцать. Все крупные провайдеры веб-карт последовали тому же соглашению, потому что наборы тайлов должны были быть взаимозаменяемыми. Двадцать лет спустя Web Mercator — молчаливый стандарт по умолчанию. Почти каждый стиль карты, каждый движок маршрутизации, каждый аналитический оверлей предполагает 3857, если не указано иное.
Переход на другую проекцию в вебе означает перестройку пирамиды тайлов. Это технически возможно (Mapbox поддерживает вид глобуса, deck.gl поддерживает кастомные проекции) и становится всё более распространённым для глобальных режимов просмотра, но для карт на уровне улиц Web Mercator остаётся устойчивым стандартом.
Когда использовать другую проекцию
Web Mercator подходит для почти любой интерактивной карты на уровне города, региона или страны. Переключайте проекцию в двух сценариях:
- Тематические глобальные карты, сравнивающие значения по регионам. Плотность населения, результаты выборов, климатические переменные — всё, где визуальная площадь несёт смысловую нагрузку. Используйте Albers Equal Area для Северной Америки, Lambert Conformal для Европы, Mollweide или Equal Earth для всей планеты.
- Полярные карты. Вблизи полюсов Web Mercator разваливается. Используйте полярно-стереографическую проекцию для Арктики и Антарктики.
Для внутреннего GIS-анализа (пространственные объединения, буферы расстояний, оверлейный анализ) работайте в угловых координатах WGS84 или в локальной проецированной системе, разработанной для конкретной страны (зоны UTM, ETRS89 для Европы). Проецируйте только при отображении.
Как MapAtlas с этим работает
MapAtlas по умолчанию обслуживает тайлы Web Mercator для продукта Dynamic Maps, придерживаясь схемы EPSG:3857, которую ожидает каждая современная библиотека карт. Координаты, возвращаемые Geocoding API и Search API, всегда задаются в формате WGS84 широта/долгота (EPSG:4326): вы храните эталонную координату и позволяете рендереру выполнять проекцию. Подробнее о компромиссах проекций и когда стоит переключаться, читайте в руководстве по картографическим проекциям.
Часто задаваемые вопросы
Что такое Web Mercator?
Web Mercator — картографическая проекция, используемая Google Maps, Bing Maps, Apple Maps, OpenStreetMap, Mapbox, MapLibre, MapAtlas и почти всеми интерактивными веб-картами. Это вариант классической проекции Меркатора, адаптированный для модели тайловых веб-карт. Её идентификатор в геодезической базе данных EPSG — EPSG:3857. Проекция преобразует широту и долготу (углы на сфере) в координаты x,y на плоской карте, позволяя отобразить изогнутую Землю на прямоугольном экране.
Почему Web Mercator искажает площади?
Web Mercator сохраняет углы и формы локально, но растягивает объекты тем сильнее, чем дальше они от экватора. В Стокгольме или Анкоридже площади выглядят примерно вдвое больше их реального размера; у полярных границ проекции (около 85 градусов широты) искажение стремится к бесконечности. Именно поэтому Гренландия выглядит на карте Web Mercator примерно такой же большой, как Африка, хотя в действительности Африка в четырнадцать раз больше. Искажение — цена сохранения узнаваемых форм, что и нужно большинству пользователей.
В чём разница между EPSG:3857 и EPSG:4326?
EPSG:4326 — это WGS84 широта и долгота, универсальный способ описать положение на Земле в виде двух углов. EPSG:3857 — это Web Mercator, плоская проекция этих углов в координаты x,y. Координаты хранятся в системе 4326 (широта, долгота). Отображаются они в системе 3857 (спроецированные пиксели). Современные библиотеки карт выполняют преобразование автоматически, однако смешение двух систем координат в базе данных или коде — классический источник багов.
Когда следует использовать другую проекцию?
Web Mercator подходит для любой интерактивной карты общего назначения: городской вид, навигация, поиск магазинов, недвижимость, отслеживание транспорта. Переходите на равновеликую проекцию (Albers, Lambert, Mollweide) для тематических карт, сравнивающих значения по регионам, особенно в континентальном или глобальном масштабе. Для полярных регионов или вида глобуса используйте азимутальную проекцию. Для внутреннего GIS-анализа работайте в координатах WGS84 широта/долгота и проецируйте только при отображении.

