Как найти точку по координатам в метрах

Вычисляем ближайшие объекты по координатам

Время на прочтение
5 мин

Количество просмотров 11K

Я разрабатывал один проект по недвижимости и появилась задача показывать объекты расположенные в радиусе 20 км с просматриваемым. Т.е. у нас есть объект, в нашем случае это поселок, и нужно отображать находящиеся рядом поселки из нашей базы данных в радиусе 20 км, при этом имея только координаты их расположения.

Исследование

Итак для решения задачи началось «гугление». И первое что было нагуглено это алгоритм расчета расстояний между двумя точками на шаре, статья уходила в Wikipedia. Статья конечно интересное, но как она поможет в моем деле!? Как выяснилось от нее будет толк, но не сразу. Смысл в том, что просчет расстояний по координатам хорош, но как делать выборку из базы и рассчитывать координаты «на ходу»!? Вероятно данным способом никак. Конечно, решение в лоб было каким то образом просчитать насколько можно сдвинуться от координаты чтобы получить нужное расстояние и запросить через какой-нибудь SQL BETWEEN.

Снова гуглим и нагугливаем ВОПРОС на Хабр Q&A. В лучшем ответе решение есть, но оно указывает, что у нас длина одного градуса в километрах равно 111 км, но это далеко не всегда так. Отсюда было понятно, что решение слишком не точное. Читаем дальше и там некий @alex40 предлагает решение как раз с between но выбирать по квадрату. Суть его решения заключается в том, чтобы взять диапазон координат по квадрату а не по окружности и запросить выборку как раз с оператором BETWEEN. И глядя на элегантность этого решения, я понял, что надо делать как то так, но оставался вопрос, что квадрат вносит слишком большую неточность.

Схема решения

Взять изначальную точку координат, и прибавить к ней число градусов соответствующее расстоянию, необходимому для выборки.

Если соединить эти точки, на которые мы прибавили изначальную координату получится квадрат (простите не ровно нарисовал).

Далее с помощью все той же википедии я открыл для себя несколько формул, и одна из них прямо то что нужно. Это формула вычисления длины градуса. Помните в начале я говорил, что 111 км. это слишком абстрактно из первого решения в вопросе. Так вот, эта формула позволяет вычислять длину градуса непосредственно на конкретной меридиане или параллели, нужно только знать радиус нашего шара. Там же на странице википедии есть предварительно рассчитанные данные, по которым можно будет проверить свою формулу

φ

Δ1
lat

Δ1
long

110.574 km

111.320 km

15°

110.649 km

107.551 km

30°

110.852 km

96.486 km

45°

111.133 km

78.847 km

60°

111.412 km

55.800 km

75°

111.618 km

28.902 km

90°

111.694 km

0.000 km

Расчеты

Приступаем к расчетам. Из открытых источников нам известно, что:

  • Средний радиус Земли R = 6371210 м.

  • Экваториальный радиус Земли RЭ = 6378,245 м.

  • Полярный радиус Земли RП = 6356,830 м.

Я для расчетов взял средний радиус. Естественно нужно помнить, что земля все-таки не идеальная сфера, поэтому погрешность есть и в этих расчетах, но для нашей задачи это допустимая погрешность.

Я написал небольшой код для проверки вычислений, и для того, чтобы я мог взять числа и проверить их на реальных данных.

Код для проверки

const EART_RADIUS = 6371210; //Радиус земли
const DISTANCE = 20000; //Интересующее нас расстояние

//https://en.wikipedia.org/wiki/Longitude#Length_of_a_degree_of_longitude
function computeDelta(degrees) {
  return Math.PI / 180 * EART_RADIUS * Math.cos(deg2rad(degrees));
}

function deg2rad(degrees) {
  return degrees * Math.PI / 180;
}

const latitude = 55.460531; //Интересующие нас координаты широты
const longitude = 37.210488; //Интересующие нас координаты долготы

const deltaLat = computeDelta(latitude); //Получаем дельту по широте
const deltaLon = computeDelta(longitude); // Дельту по долготе

const aroundLat = DISTANCE / deltaLat; // Вычисляем диапазон координат по широте
const aroundLon = DISTANCE / deltaLon; // Вычисляем диапазон координат по долготе

console.log(aroundLat, aroundLon);

В коде я сразу установил константу расстояния, радиуса земли и принял решение все считать в метрах, поскольку данные я нашел в метрах и лень было разделить их на 1000, да и в метрах казалось, что точность немного выше, чем в километрах с округлением.

Суть этого кода в следующем. Мы не забываем перевести градусы координат в радианы, поскольку формула из википедии рассчитана на радианы. Мы вычисляем дельту ширины и долготы одинаково по одной и той же формуле, поскольку мы условились что у нас идеальный шар и эта погрешность нам допустима. С помощью формулы мы узнаем сколько градусов у нас в одном километре, а дальше простая пропорция.

1 градус — 63046.689652997775 метров
X градусов — 200000 метров

Если 1 градус, соответствует 63046.689652997775 метров (для широты вычисленной из координаты), то 20000 метров соответсвует X. Дальше, как в школе учили, наискосок умножаем на оставшееся делим. И так как там у нас получается умножение на 1, то это действие можно упустить и записать как `DISTANCE / deltaLat`. Тоже самое проделываем для координаты долготы.

На этих конкретных координатах получаются числа 0.31722522007226484 и 0.22583381380662185. По сути это и есть числа, готовые прибавляться к координатам, чтобы получить тот самый заветный квадрат.

Теперь мы можем добавить эти числа в SQL запрос, чтобы посмотреть, что за выборка у нас получится:

select
	name,
	latitude,
	longitude
from
	villages
where
	latitude between 55.460531 - 0.31722522007226484 and 55.460531 + 0.31722522007226484
	and longitude between 37.210488 - 0.22583381380662185 and 37.210488 + 0.22583381380662185;

Ну и в моей выборке оказалось 7 объектов. Конечно я взял эту выборку и проверил координаты с помощью линейки на Яндекс Картах. В моем случае все попали в радиус обозначенных 20км. Но мы же помним, что взяли квадрат, а не окружность для вычисления?! Я там даже схему нарисовал в начале, что за квадрат. Итак, если сделать окружность, внутри этого квадрата, она как раз будет радиусом примерно те же 20 км.

Я добавил картинку для наглядности. Видно, что если высота квадрата 40 км, и в нем окружность, то радиус ее тоже будет соответствовать 20 км. Остаются лишние области — углы квадрата, которые я закрасил зеленым. Это то что у нас может попасть в выборку, но они уже не соответствуют именно радиусу в 20 км. Т.е. это лишние данные. И вот тут приходит на помощь та самая формула, о которой я говорил в начале — Расчет расстояния между координатами. С помощью этой формулы можно сравнить исходную точку с координатами из выборки и отсечь те, что будут превышать те самые 20 км, поставленные в задаче.

Итог

Задача решена. Алгоритм придуман. Осталось упаковать это в «красивый» и «чистый» код, чтобы все было по феншую. Надеюсь статья была полезной, потому что когда я искал решения задачи, я наткнулся на множество формул, на множество идей, но не нашел места, где это было бы собрано вот так, как попытался собрать я в рамках данной статьи.

Ссылки

Расчет длины градуса

Расчет дистанции между координатами на сфере

Статья, которая помогла вникнуть в тему расчетов

Тоже полезная статья, в ней есть данные для расчетов

UPD:

1. Изменил картинку с ошибочным радиусом и описание высоты квадрата

На чтение 5 мин. Просмотров 2.4k. Опубликовано 12.08.2022

Спутниковые координаты не только помогают найти маршрут до нужного места, но и позволяют рассчитать отрезок между двумя любыми точками в пространстве или на данной плоскости. Зная необходимые данные и координаты интересующих объектов, можно найти расстояние в километрах или метрах между этими длинами или отрезками нужной длины. Для этого применяется либо сложная формула для самостоятельного решения, либо онлайн-калькуляторы на сайте или картографические программы, выполняющие работу автоматически.

Содержание

  1. Координаты GPS
  2. Вычисление расстояния между двумя точками через формулу
  3. Формула для нахождения расстояния между точками
  4. Способы решения и нахождения расстояния между точками по координатам
  5. Онлайн-калькулятор для расчета расстояния между точками по координатам
  6. Картографическая программа для нахождения расстояния между точками
  7. Откуда берется погрешность при расчете расстояния между точками

Координаты GPS

Координаты GPS (Global Positioning System) – это цифровые обозначения местоположения устройства в пространстве или на плоскости, указанные в формате соотнесения географических широты и долготы. Данные точки на отрезке определенной длины вычисляются при помощи связи со спутником. Запускается сложная система навигации, которая, помимо указания координат, может определить расстояние между двумя точками в пространстве или на плоскости, проложить маршрут между отрезками длины и рассчитать время перемещения как пешком, так и на разных видах транспорта. В основе работы лежит всемирная система координат WGS 84.

Координаты GPS

Координаты GPS

Чтобы найти местоположение и расстояние между двумя данными точками или отрезками длины в пространстве и на плоскости по координатам GPS, можно пользоваться как специальным навигатором или профессиональным навигационным прибором, так и обычным смартфоном или планшетом.

Вычисление расстояния между двумя точками через формулу

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

Кратчайшим (прямым) расстоянием считается дуга, проходящая по поверхности Земли от точки А в точку Б. Чтобы найти ее длину, применяют так называемую модифицированную формулу гаверсинусов, учитывающую радиус планеты.

Известно, что Земля – не идеальный шар, а несколько приплюснутый, потому и радиус у нее в разных точках различен. Ввиду этого для подсчета кратчайшего расстояния между точками используется усредненное значение радиуса относительно оси (6372.795 км для Земли), что допускает погрешность итогового значения около 0,5 %.

Формула для нахождения расстояния между точками

В формуле, при помощи которой можно найти расстояния между двумя данными точками планеты с использованием координат, присутствуют следующие величины (известные из математики):

  • d – центральный угол (перпендикуляр) между двумя данными точками, лежащими на большом круге (т. е. на окружности, получаемой при сечении центральной части шара плоскостью);
  • r – радиус сферы (т. е. усредненное значение радиуса Земли: 6372.795 км);
  • y₁ и y₂ –  широта двух точек в радианах;
  • x₁ и x₂ – долгота двух точек в радианах.

Получим следующую тригонометрическую формулу, плавно вытекающую из теоремы пифагора (евклидова геометрия), которая равна:

cos(d) = sin(y₁)·sin(y₂) + cos(y₁)·cos(y₂)·cos(x₁ − x₂)

Данное соотношение можно получить из прямоугольного треугольника.

Подставив в формулу заданные значения точек, и получим вычисление.

Для того чтобы найти ответ про расстояние между двумя точками координат в километрах, поможет формула:

L = d·R.

Способы решения и нахождения расстояния между точками по координатам

Чтобы провести решение и получить ответ о расстоянии точек в пространстве или плоскости по координатам GPS, необязательно использовать формулу вручную. Ответ о расстоянии между точками по координатам получим при помощи специальных утилит.

Онлайн-калькулятор для расчета расстояния между точками по координатам

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

Картографическая программа для нахождения расстояния между точками

Вычислять расстояние между двумя точками на плоскости по координатам и давать точный ответ умеет любое приложение-навигатор и без вычисления по формуле, например:

  • «Карты»;
  • «Google.Maps»;
  • «Google Планета Земля»;
  • «SAS.Планета».

Определение координат объекта в Google Maps на компьютере

Определение координат объекта в Google Maps на компьютере не по формуле

Для определения расстояния между точками не по дорогам и маршрутам, а напрямую по двум точкам, применяется инструмент «Линейка».

Многие из популярных навигаторов способны определять расстояние по координатам двух точек онлайн без формул: это можно сделать на сайте в разделе «Азимут» или «Другие вычисления».

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

Откуда берется погрешность при расчете расстояния между точками

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

Чем больше искомое расстояние, тем больше получим погрешность в расстоянии между точками.

Также неточность между точками получим тогда, когда при вычислениях расстояния между точками берут недостаточно цифр после запятой в координатах: результат будет приблизительным.

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

Расстояние между двумя координатами

Онлайн калькулятор рассчитывает расстояние между двумя географическими координатами.

Инструкция по использованию калькулятора

Широту и долготу двух точек, между которыми необходимо найти расстояние, следует указывать в градусах в виде десятичной дроби.
Например, расстояние между Москвой (55.75059; 37.61777) и Киевом (50.44952; 30.52537) составляет 755 километров.

Южная широта и западная долгота задаются отрицательной величиной от 0° до -90° и от 0° до -180° соответственно.

Поделиться страницей в социальных сетях:

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

Широта и долгота — это географический аспект плоскости или сферы, перенесенный на топографические изображения. Для более точного нахождения какого-либо пункта берется во внимание также его высота над уровнем моря, что позволяет найти его в трехмерном пространстве.

shirota i dolgota

Широта и долгота

Необходимость найти точку по координатам широты и долготы возникает по долгу службы и по роду занятий у спасателей, геологов, военных, моряков, археологов, летчиков и водителей, но может понадобиться и туристам, путешественникам, искателям, исследователям.

Что такое широта и как ее найти

Широтой называют расстояние от объекта до линии экватора. Измеряется в угловых единицах (таких как градус, град, минута, секунда и т.д.). Широта на карте либо глобусе обозначается горизонтальными параллелями — линиями, описывающими окружность параллельно экватору и сходящимися в виде ряда сужающихся колец к полюсам.

linii shiroty

Линии широты

Поэтому различают широту северную — это вся часть земной поверхности севернее экватора, а также южную — это вся часть поверхности планеты южнее экватора. Экватор — нулевая, самая длинная параллель.severnaja juzhnaja shirota

  • Параллели от линии экватора к северному полюсу принято считать положительной величиной от 0° до 90°, где 0° — это собственно сам экватор, а 90° — это вершина северного полюса. Они считаются как северная широта (с.ш.).
  • Параллели, исходящие от экватора в сторону южного полюса, обозначены отрицательной величиной от 0° до -90°, где -90° — это место южного полюса. Они считаются как южная широта (ю.ш.).
  • На глобусе параллели изображаются опоясывающими шар окружностями, которые уменьшаются с их приближением к полюсам.
  • Все пункты на одной параллели будут обозначаться единой широтой, но различной долготой.
    На картах, исходя из их масштаба, параллели имеют форму горизонтальных, изогнутых дугой, полос — чем меньше масштаб, тем прямее изображена полоса параллели, а чем крупнее — тем она более изогнута.

Запомните! Чем ближе к экватору располагается заданная местность, тем меньшей будет ее широта.

Что такое долгота и как ее найти

Долгота — это величина, на которую удалено положение заданной местности относительно Гринвича, то есть нулевого меридиана.

linii dolgoty

Линии долготы

Долготе аналогично присуще измерение в угловых единицах, только с 0° до 180° и с приставкой — восточная либо западная.zapadnaja vostochnaja dolgota

  • Нулевой меридиан Гринвича вертикально опоясывает шар Земли, проходя через оба полюса, разделяя его на западное и восточное полушария.
  • Каждая из частей, находящихся к западу от Гринвича (в западном полушарии) , будет носить обозначение западной долготы (з.п.).
  • Каждая из частей, удаленная от Гринвича на восток и расположенная в восточном полушарии, будет носить обозначение восточной долготы (в.п.).
  • Нахождение каждой точки по одному меридиану имеют единую долготу, но различную широту.
  • Меридианы нанесены на карты в виде вертикальных полос, изогнутых в форме дуги. Чем мельче масштаб карты, тем прямее будет полоса меридиана.

Запомните! Чем далее от Гринвича удаляется искомый пункт, тем большей будет его долгота, чем ближе — тем меньшей будет его долгота.

Как найти координаты заданной точки по карте

Зачастую приходится узнавать координаты пункта, который расположен на карте в квадрате между двумя ближайшими параллелями и меридианами. Приблизительные данные можно получить на глазок, оценив последовательно шаг в градусах между нанесенными на карту линиями в интересующем районе, а затем сопоставив удаленность от них искомой местности. Для точных вычислений понадобятся карандаш с линейкой, или же циркуль.najti tochku po koordinatam

  • За исходные данные берем обозначения ближайших к нашей точке параллели с меридианом.
  • Далее смотрим шаг между их полосами в градусах.
  • Потом смотрим величину их шага по карте в см.
  • Измеряем линейкой в см расстояние от заданной точки до ближайшей параллели, а также расстояние между этой линией и соседней, переводим в градусы и берем во внимание разницу — вычитая от большей, либо прибавляя к меньшей.
  • Таким образом получаем широту.

Пример! Расстояние между параллелями 40° и 50°, среди которых находится наша местность, составляет 2 см либо 20 мм, а шаг между ними — 10°. Соответственно, 1° равен 2 мм. Наша точка удалена от сороковой параллели на 0,5 см либо 5 мм. Находим градусы до нашей местности 5/2 = 2,5°, которые нужно прибавить к значению ближайшей параллели: 40° + 2,5° = 42,5° — это наша северная широта заданной точки. В южном полушарии вычисления аналогичны, но результат имеет отрицательный знак.

Аналогично находим долготу — если ближайший меридиан находится дальше от Гринвича, а заданный пункт ближе — то разницу вычитаем, если меридиан к Гринвичу ближе, а пункт дальше — то прибавляем.

Если под рукой нашелся только циркуль, то его его кончиками фиксируется каждый из отрезков, а распор переносится на масштаб.

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

Лучшие сервисы для поиска места по координатам

Проще всего узнать своё местоположение можно, зайдя в ПК-версию сервиса, работающего непосредственно с Google Maps. Многие утилиты упрощают процесс ввода широты и долготы в браузере. Рассмотрим лучшие из них.

Map & Directions

На официальном сайте Maps & Directions можно найти точные GPS-координаты любого пункта, или же выбрать нужное место и посмотреть его ширину и долготу. Пользоваться сервисом очень легко, в него включена опция увеличения масштаба на карте и возможность поделиться своим местоположением.

Кроме того, Maps & Directions позволяет бесплатно определить координаты своего положения на карте, нажав всего на одну кнопку. Щелкните на «Найти мои координаты», и сервис тут же поставит маркер и определит широту, долготу до многих тысячных, а также высоту.

На этом же сайте можно измерить расстояние между населенными пунктами или площадь любой заданной территории, нарисовать маршрут или рассчитать время передвижения. Сервис пригодится как путешественникам, так и просто любопытным пользователям.

Mapcoordinates.net

Полезная утилита Mapcoordinates.net позволяет узнать координату точки в любом регионе мира. Сервис также интегрирован с Google Картами, но обладает упрощенным интерфейсом, благодаря которому его сможет использовать даже неподготовленный пользователь.

В адресной строке утилиты, где написано «Искать», введите адрес места, широту и долготу которого Вы хотите получить. Карта с координатами появится вместе с маркером на нужном месте. Над маркером будет отображена широта, долгота, а также высота выбранной точки.

К сожалению, Mapcoordinates.net не подходит для того, чтобы искать пункты, зная их координаты. Однако для обратной процедуры это очень удобная утилита. Сервис поддерживает множество языков, в том числе и русский.

Поиск по координатам на карте через браузер с помощью сервиса Google Maps

Если по каким-либо причинам Вы предпочитаете работать не с упрощенными сервисами, а непосредственно с Google Maps, то эта инструкция будет полезной для Вас. Процесс поиска по координатам через Google Карты чуть более сложен, чем в описанных ранее способах, но им можно овладеть быстро и без особого труда.

Чтобы узнать точные координаты места, придерживайтесь следующей простой инструкции:

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

  2. Щелкните на участок карты, где расположен нужный Вам пункт или точка, правой кнопкой мыши;

  3. Отметьте в появившемся меню вариант «Что здесь?»;

  4. Посмотрите на вкладку, которая отобразится внизу экрана. На ней будут отображены широта, долгота и высота.

Чтобы определить место по известным географическим координатам, потребуется другой порядок действий:

    1. Откройте Google Карты в полном режиме на компьютере;

    2. В строке поиска в верхней части экрана Вы можете ввести координаты. Сделать это допускается в следующих форматах: градусы, минуты и секунды; градусы и десятичные минуты; десятичные градусы;

  1. Нажмите клавишу «Enter», и на карте на требуемом месте появится специальный маркер.

Важнее всего при использовании сервиса Google Maps правильно указывать географические координаты. Карты распознают только несколько форматов данных, поэтому обязательно учитывайте следующие правила ввода:

  • При вводе градусов используйте специальный символ, обозначающий его «°», а не «d»;

  • В качестве разделителя между целой и дробной частями необходимо использовать точку, а не запятую, иначе строка поиска не сможет выдать место;

  • Сначала указывается широта, затем — долгота. Первый параметр необходимо записывать в диапазоне от -90 до 90, второй — от -180 до 180.

Найти специальный символ на клавиатуре ПК затруднительно, да и чтобы придерживаться необходимого списка правил, нужно прикладывать достаточно много усилий. Гораздо проще пользоваться специальными утилитами — лучшие из них мы привели в разделе выше.

Нахождение места по широте и долготе на ОС Андроид

Нередко требуется найти место по координатам вдали от ноутбука или персонального компьютера. Выручит мобильное приложение Google Maps, работающее на платформе Андроид. Обычно оно используется для того, чтобы проложить маршрут или узнать график движения транспортных средств, однако программа подойдет и для нахождения местоположения пункта или точки.

Скачать приложение на на Андроид можно на официальной странице в Google Play. Оно доступно как на русском, так и на английском языках. После установки программы придерживайтесь следующей инструкции:

  1. Откройте Google Maps на устройстве и дождитесь появления карты;

  2. Найдите интересующее Вас место. Нажмите на него и держите до тех пор, пока не отобразится специальный маркер;

  3. Вверху экрана появится вкладка с окном поиска и полными координатами места;

  4. Если Вам нужно найти место по координатам, а не наоборот, то способ на мобильном устройстве ничем не отличается от своего аналога на ПК.

Мобильная версия сервиса, как и работающая на ПК, позволит детально изучить нужное место, узнать его точные координаты, или наоборот, распознать адрес по известным данным. Это — удобный способ как для дома, так и для дороги.

Post Views: 592

Понравилась статья? Поделить с друзьями:
  • Как найти максимальное число в столбце эксель
  • Код ошибки 0х80040154 0х90018 как исправить
  • Как составить публичного отчета
  • Мелированные волосы стали желтыми как исправить
  • Как найти просмотренные страницы в телефоне