EPSG коды

В основе любой картографической системы лежит способ описания положения точки на поверхности Земли. Для унификации таких описаний используется система кодов EPSG (European Petroleum Survey Group), представляющая собой каталог геодезических систем координат, проекций и датумов. Каждый код EPSG однозначно определяет набор параметров, необходимых для корректного преобразования географических данных.

В веб-картографии, включая OpenLayers, EPSG-коды определяют, как именно интерпретируются координаты и в какой проекции отображается карта.


Географические и проекционные системы координат

Система координат в контексте EPSG делится на два базовых типа:

Географические системы координат (GCS)

В географической системе координаты задаются в виде широты и долготы:

  • широта (latitude)
  • долгота (longitude)

Наиболее распространённый стандарт:

EPSG:4326 (WGS 84)

Он используется в GPS и большинстве геоданных API. Координаты здесь выражаются в градусах.

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

  • единицы измерения — градусы
  • поверхность Земли моделируется эллипсоидом
  • удобен для хранения и обмена данными
  • не подходит для прямого отображения на плоской карте

Проекционные системы координат (PCS)

Проекционные системы преобразуют сферическую поверхность Земли в плоскость.

Наиболее известный пример:

EPSG:3857 (Web Mercator)

Используется в большинстве веб-карт (Google Maps, OpenStreetMap, Mapbox).

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

  • координаты в метрах
  • искажения площади и расстояний, особенно на высоких широтах
  • оптимизирован для тайловой загрузки карт
  • стандарт де-факто для веб-картографии

EPSG в OpenLayers

OpenLayers работает с системой проекций через модуль ol/proj. По умолчанию библиотека использует Web Mercator:

  • EPSG:3857 — внутренняя проекция отображения карты
  • EPSG:4326 — часто используется для входных данных

При загрузке данных происходит автоматическое или ручное преобразование координат между системами.


Преобразование координат

Основная операция при работе с EPSG-кодами — трансформация координат.

Базовое преобразование

import { transform } from 'ol/proj';

const wgs84Coord = [30.3141, 59.9386]; // EPSG:4326 (долгота, широта)
const webMercatorCoord = transform(
  wgs84Coord,
  'EPSG:4326',
  'EPSG:3857'
);

Функция transform выполняет преобразование между двумя системами координат.


Обратное преобразование

import { transform } from 'ol/proj';

const mercatorCoord = [3372660, 8382695];

const geoCoord = transform(
  mercatorCoord,
  'EPSG:3857',
  'EPSG:4326'
);

Обратное преобразование используется при отображении координат пользователя или при работе с внешними API.


Настройка проекций в OpenLayers

OpenLayers позволяет явно задавать систему координат для карты.

import Map from 'ol/Map';
import View from 'ol/View';

const map = new Map({
  view: new View({
    projection: 'EPSG:3857',
    center: [0, 0],
    zoom: 2
  })
});

Здесь проекция определяет, в каких единицах интерпретируются координаты центра и масштаба.


Работа с нестандартными EPSG-кодами

Не все системы координат встроены в OpenLayers по умолчанию. Для расширенных или локальных систем используется библиотека proj4.

Подключение proj4

import proj4 from 'proj4';
import { register } from 'ol/proj/proj4';

register(proj4);

Добавление пользовательской проекции

import proj4 from 'proj4';
import { register } from 'ol/proj/proj4';
import { get as getProjection } from 'ol/proj';

proj4.defs(
  'EPSG:32637',
  '+proj=utm +zone=37 +datum=WGS84 +units=m +no_defs'
);

register(proj4);

const projection = getProjection('EPSG:32637');
projection.setExtent([0, 0, 1000000, 10000000]);

EPSG:32637 — пример UTM-зоны, используемой для точных измерений на локальных территориях.


Почему EPSG:3857 стал стандартом веб-карт

EPSG:3857 получил широкое распространение благодаря сочетанию технических и практических факторов:

  • совместимость с тайловой системой (XYZ tiles)
  • простота разбиения карты на квадраты
  • поддержка в большинстве картографических сервисов
  • единая система для всех уровней масштабирования

Однако у него есть ограничения:

  • сильные искажения на полюсах
  • невозможность точного измерения площадей без дополнительных расчётов

EPSG:4326 и работа с геоданными

EPSG:4326 остаётся основным форматом обмена геоданными.

В OpenLayers он часто используется для:

  • GeoJSON
  • API ответов (REST, WFS)
  • хранения координат в базах данных

Пример GeoJSON:

const feature = {
  type: 'Feature',
  geometry: {
    type: 'Point',
    coordinates: [30.3141, 59.9386]
  }
};

При отображении на карте требуется преобразование в EPSG:3857.


Определение проекции слоя

Каждый слой в OpenLayers может иметь собственную систему координат.

import TileLayer from 'ol/layer/Tile';
import OSM from 'ol/source/OSM';

const layer = new TileLayer({
  source: new OSM({
    projection: 'EPSG:3857'
  })
});

Несовпадение проекций слоя и карты приводит к необходимости трансформации координат.


Масштабирование и единицы измерения

EPSG-код напрямую влияет на интерпретацию масштаба.

  • в EPSG:4326 масштаб зависит от угловых единиц
  • в EPSG:3857 масштаб выражается в метрах на пиксель

OpenLayers автоматически пересчитывает масштаб в зависимости от текущей проекции.


Частые EPSG-коды в веб-картографии

EPSG:3857

Стандарт веб-карт, Web Mercator.

EPSG:4326

Географическая система WGS 84.

EPSG:3395

World Mercator, альтернативная проекция с иной моделью эллипсоида.

EPSG:326xx

UTM-зоны, применяются для локальной точной картографии.


Ошибки при работе с EPSG-кодами

Несовпадение систем координат

При попытке отобразить данные без трансформации возникают смещения объектов.

Перепутанный порядок координат

  • EPSG:4326 — [долгота, широта]
  • некоторые API используют [широта, долгота]

Отсутствие регистрации проекции

При использовании кастомных EPSG-кодов без proj4 возникает ошибка неизвестной системы координат.


Внутреннее устройство преобразований

OpenLayers использует цепочку:

  1. Определение EPSG-кода
  2. Поиск параметров проекции
  3. Применение математического преобразования
  4. Кэширование результата

Это позволяет ускорять повторные вычисления при отрисовке карты.


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

Каждая EPSG-система основана на модели Земли:

  • WGS84 — глобальный стандарт
  • NAD83 — используется в Северной Америке
  • локальные датумы — привязаны к конкретным регионам

Несоответствие датумов приводит к смещениям до нескольких десятков метров.


Использование EPSG в реальных сценариях

В типичных веб-приложениях:

  • пользовательские координаты приходят в EPSG:4326
  • карта отображается в EPSG:3857
  • сервер хранит данные в WGS84
  • отображение требует постоянных преобразований

OpenLayers выступает как слой абстракции, скрывающий сложность этих преобразований и обеспечивающий согласованное отображение пространственных данных.