Широта и долгота — это два числа, определяющие любую точку на Земле. Широта указывает, насколько далеко на север или юг вы находитесь. Долгота — насколько далеко на восток или запад. Вместе они образуют пару координат, с которой работают любые карты, GPS-устройства, геокодирующие API и AI-ассистенты.
Большинство разработчиков используют координаты не задумываясь о них — до тех пор, пока не всплывёт баг. Это руководство объясняет, что именно измеряет каждая из координат, какие форматы вам встретятся в продакшне и какая перестановка приводит к большему количеству карточных ошибок, чем любая другая одиночная ошибка.
Что измеряет широта
Широта — это угол в градусах между точкой на поверхности Земли и плоскостью экватора. Экватор соответствует 0 градусов. Северный полюс — +90 градусов. Южный полюс — -90 градусов. Линии широты (параллели) идут горизонтально вокруг земного шара и везде находятся на одинаковом расстоянии друг от друга.
Один градус широты всегда составляет около 111 километров на местности, вне зависимости от местоположения. Эта стабильность делает широту полезной для всего: от планирования авиарейсов до климатологии.
Что измеряет долгота
Долгота — это угол между точкой и нулевым меридианом, проходящим через Гринвич (Лондон) при 0 градусах долготы. Долгота изменяется от -180 градусов (запад) до +180 градусов (восток). Обе эти границы сходятся на противоположной стороне планеты на антимеридиане, образующем большую часть Линии перемены дат.
В отличие от широты, наземное расстояние, покрытое одним градусом долготы, зависит от местоположения. На экваторе один градус долготы составляет около 111 км — столько же, сколько один градус широты. В Хельсинки это уже около 56 км. На полюсах расстояние стремится к нулю, потому что там все меридианы сходятся.
Именно по этой причине вычисление расстояний на плоской карте даёт ошибочные результаты для длинных маршрутов или точек вблизи полюсов. Корректные функции расчёта расстояний используют формулу гаверсинуса или формулу Винченти, учитывающие кривизну Земли.
Знаменитая перестановка (и как её избежать)
Наиболее распространённая ошибка в продакшн-коде для работы с геопространственными данными — перестановка широты и долготы. Причина в том, что разные форматы придерживаются разных соглашений:
- Отображение для людей, адреса, GPS-приложения: сначала широта.
48.8584, 2.2945означает lat 48.8584, lng 2.2945. - GeoJSON, WKT, большинство геопространственных стандартов: сначала долгота.
[2.2945, 48.8584]— та же самая точка. - MapAtlas Geocoding API и большинство REST API версии v1: сначала широта в JSON-ключах (
lat,lng), но всегда проверяйте документацию конкретного endpoint, так как соглашения могут различаться.
Если вы извлекаете объект из GeoJSON и передаёте его в библиотеку карт, ожидающую [lat, lng], нужно поменять порядок. Если забудете, точка окажется в неправильном полушарии, и следующие два дня вы будете с удивлением выяснять, почему «Париж» появляется где-то у берегов Африки.
Защитное правило: в любой функции, принимающей координаты, называйте параметры явно. function distance(latA, lngA, latB, lngB) сложнее использовать неправильно, чем function distance(a, b), где a и b — расплывчатые массивы.
Десятичные градусы и DMS
Наиболее распространённый формат в коде — десятичные градусы (DD): 48.8584, 2.2945. Именно это ожидают все современные API и библиотеки.
Иногда встречается формат градусы-минуты-секунды (DMS): 48° 51' 30" N, 2° 17' 40" E. DMS пришёл из морской и авиационной традиции, он до сих пор используется на официальных бумажных картах и некоторых аппаратных GPS-устройствах. Перевод из DMS в DD прямолинеен: DD = градусы + (минуты / 60) + (секунды / 3600), с отрицательным знаком для южных и западных значений.
Для хранения данных десятичные градусы с 5-6 знаками после запятой покрывают все реалистичные сценарии. Более 6 знаков — это «точность напоказ»: реальные GPS-устройства редко обеспечивают точность лучше сантиметра.
Сколько знаков после запятой вам нужно?
Каждый дополнительный знак после запятой уточняет позицию примерно в 10 раз:
- 0 знаков (
48): около 111 км, уровень страны - 1 знак (
48.8): около 11 км, уровень города - 2 знака (
48.86): около 1,1 км, уровень района - 3 знака (
48.858): около 110 метров, уровень улицы - 4 знака (
48.8584): около 11 метров, уровень здания - 5 знаков (
48.85844): около 1 метра, уровень входной двери - 6 знаков (
48.858445): около 11 сантиметров, предел GPS - 7+ знаков: ложная точность, превышает реальные возможности GPS
Выбирайте точность, соответствующую задаче. Хранение 8 знаков после запятой для сценария «доставить в этот район» тратит место и создаёт у пользователя ложное представление о точности данных.
Координаты и картографические проекции
Сами по себе числа — это угловые измерения на поверхности Земли, но экран плоский. Каждая картографическая проекция — это математическая функция, преобразующая широту и долготу в пиксельные координаты x,y для отображения.
Web Mercator (EPSG:3857) — проекция, используемая Google Maps, OpenStreetMap и почти всеми интерактивными веб-картами. Она сохраняет форму и направление, но искажает площадь: Гренландия выглядит примерно такой же по размеру, как Африка, хотя в действительности Африка в четырнадцать раз больше. Для продакшн-карт это искажение не имеет значения, пока пользователи узнают места. Для тематических карт, сравнивающих площади (население, результаты выборов, климат), следует использовать равновеликую проекцию.
Хранимые значения координат всегда задаются в системе WGS84 (широта и долгота). Проекция применяется во время рендеринга. Смешивание координат в пространстве проекции с координатами WGS84 в базе данных — ещё один классический источник багов.
Хранение и индексирование координат
В большинстве баз данных храните широту и долготу как два числовых столбца (или geometry(point, 4326), если используете PostGIS). Для точечных запросов внутри ограничивающего прямоугольника достаточно B-tree индекса по каждому столбцу. Для запросов «ближайший сосед» нужен пространственный индекс: PostGIS GIST, MySQL SPATIAL или bucket-геохэша.
Хранение в виде строки ("48.8584,2.2945") преследует вас с момента, когда понадобится фильтрация, сортировка или вычисление расстояния. Не делайте так.
Как AI-ассистенты используют координаты
Современные AI-ассистенты (ChatGPT, Perplexity, Gemini) работают с местами через координаты так же, как и обычные приложения. Когда пользователь запрашивает «найди кофейню рядом со мной», ассистент определяет местоположение пользователя через координату, обращается к API мест и ранжирует результаты по расстоянию гаверсинуса. Корректно размеченные координаты в вашей структурированной разметке (свойство geo в JSON-LD, схема GeoCoordinates) помогают AI-ассистентам отдавать предпочтение вашему объявлению перед конкурентом с более расплывчатыми геоданными.
Для объявлений, охватывающих несколько городов или конкурирующих в них, координата является однозначным идентификатором. «Париж» неоднозначен: один во Франции, другой в Техасе. Координата нет.
Почему MapAtlas
MapAtlas — европейская картографическая платформа, созданная для эпохи AI-поиска. Каждый геокод, обратный поиск, изохрона и запрос маршрутизации возвращает чистые координаты WGS84 с единообразным порядком, соответствием GDPR и хостингом в ЕС. Попробуйте инструмент поиска координат, чтобы мгновенно конвертировать любой адрес в lat/lng, или прочитайте руководство «Что такое геокод» для более глубокого понимания того, как геокодирующие API работают в продакшне.
Часто задаваемые вопросы
В чём разница между широтой и долготой?
Широта измеряет положение на Земле по оси север-юг: от -90 на Южном полюсе до +90 на Северном. Долгота измеряет положение по оси восток-запад: от -180 до +180, где 0 проходит через Гринвичский меридиан. Линии широты (параллели) расположены горизонтально и везде параллельны друг другу. Линии долготы (меридианы) идут вертикально и сходятся на полюсах. Вместе они образуют уникальную пару чисел, однозначно определяющую любую точку на планете.
Что идёт первым: долгота или широта?
Зависит от формата. В удобочитаемом виде (Google Maps, GPS-приложения, адреса) на первом месте стоит широта: 48.8584, 2.2945 означает lat 48.8584, lng 2.2945. В машиночитаемых форматах, таких как GeoJSON и большинство геопространственных стандартов, первой идёт долгота: [2.2945, 48.8584]. Именно эта перестановка является наиболее распространённым источником карточных багов в продакшне. Всегда проверяйте соглашения конкретного формата, с которым работаете.
Какова точность GPS-координат?
Шесть знаков после запятой (например, 48.858444) соответствуют точности около 11 сантиметров на экваторе. Пять знаков (48.85844) дают примерно 1 метр. Четыре знака (48.8584) дают около 11 метров, что вполне достаточно для картирования на уровне улиц. Для большинства продакшн-сценариев шести знаков с избытком, а пяти вполне достаточно. Хранение избыточной точности тратит байты и создаёт ложное ощущение точности данных.
Почему меридианы сходятся на полюсах?
Параллели параллельны, потому что все они имеют единую ось Земли в качестве ориентира. Меридианы, напротив, являются большими кругами, проходящими через Северный и Южный полюсы. По мере приближения к полюсам расстояние между двумя значениями долготы по оси восток-запад сокращается: на экваторе один градус долготы составляет около 111 км, а на полюсах стремится к нулю. Именно поэтому наивные вычисления расстояний в плоских координатах дают ошибочные результаты на высоких широтах, а корректные вычисления используют формулу гаверсинуса или формулу Винченти.

