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

Обновлено: 02.07.2024

Расчет азимута по географическим координатам
Добрый вечер. У меня есть набор координат в градусах. 54.493078 39.920625 54.492729 39.920625.

Нахождение расстояния по координатам
Всем здравствовать! требуется квалифицированная помощь! Есть такая задача: в датафрейме есть.

Расчет расстояния по координатам GPS
Помогите с прогой пожалуйста, иначе отчислят, 1 семестр питон был, так и не врубился в него. .

на таких расстояниях земля это плоскость на трех китах

Если расстояния небольшие, то можно считать расстояние между точками как гипотенузу треугольника, где катеты это разность широт и долгот точек соответственно. То есть
X = sqrt(((долготаА - долготаB) * коэффициент_долготы)^2 - ((широтаА - широтаВ) * коэффициент_широты)^2)

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

странная у ТС формула, там должен быть арктангенс
вот моя:
function Tmform.GEtDyristRouteLong(p1lat,p1lon,p2lat,p2lon:real):real ;
var
dLat,dLon:real; //разность координат
a,c:real;//времянка
begin

dLat:=DegToRad(Abs(p1lat-p2lat)); //разность и сразу в радианы
dLon:=DegToRad(Abs(p1Lon-p2Lon));
a:= sin(dLat/2)*sin(dLat/2)+
cos(DegToRad(p1lat))*cos(DegToRad(p2lat))*
sin(dLon/2)*sin(dLon/2);
c:= 2 * ArcTan2(sqrt(a), sqrt(1-a));
result:=6371*1000*c; //метров
end;

передаются параметры в градусах


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

Вычисление Евклидова расстояния
Здравствуйте, не понимаю, почему не компилируется код? Евклидово расстояние это.

Вычисление расстояния между точками
что-то при вводе разных значение то выводиться ответ то пишется NаN =( что не так? подскажите плиз.

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

В настоящее время я составляю фиктивную схему базы данных с двумя таблицами: Booking и Waypoint .

  • Booking хранит информацию о бронировании такси.

enter image description here

  • В путевой точке хранятся точки посадки и высадки во время поездки, а также координаты широты. Каждая последовательность - это остановка в пути.

enter image description here

Как мне рассчитать расстояние между разными остановками в каждой поездке (используя данные широты и долготы) в Excel?

Есть ли способ программно определить это в Excel, т.е. чтобы формулу можно было поместить в столбец mileage (таблица Booking ), найдите соответствующую последовательность (через bookingId ) для этого путешествовать по таблице Waypoint и вернуть результат?

Пример 1:

Путешествие с 2 остановками:

4,1 мили согласно Google, запись сделана в столбце mileage в таблице Booking , где id = 1

Пример 2:

Путешествие с 3 остановками:

27,7 миль согласно Google, запись сделана в столбце mileage в таблице Booking , где id = 3

4 ответа

До недавнего времени точные карты строились с помощью триангуляции, которая, по сути, является применением теоремы Пифагора. Для расстояния между любой парой координат возьмите квадратный корень из суммы квадрата разницы в координатах x и квадрата разницы в координатах y. Однако координаты x и y должны быть в одних и тех же единицах измерения (например, в милях), что требует факторизации значений широты и долготы. Это может быть сложно, потому что множитель для долготы зависит от широты (прогулка вокруг Северного полюса меньше, чем прогулка вокруг экватора), но в вашем случае фактор 52 o Север должен служить. Исходя из этого, результаты (которые можно проверить здесь) примерно на 20% отличаются от примеров. вы даете (во втором случае с идентификаторами пары 6 и 7 и добавлением этого результата к результату сопряжения идентификаторов 7 и 8).

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

Точка A: LAT1, LONG1 Точка B: LAT2, LONG2

ACOS (COS (РАДИАНЫ (90-Lat1)) * COS (РАДИАНЫ (90-Lat2)) + SIN (РАДИАНЫ (90-Lat1)) * SIN (РАДИАНЫ (90-lat2)) * COS (РАДИАНЫ (long1-long2) )) * 6371

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

Для этого вычислите разницу широты (dlat) и разницу долготы (dlon). Если была вероятность (маловероятная), что вы пересекаете меридиан 180 °, возьмите модуль 360 °, чтобы убедиться, что разница долгот составляет от -180 ° до 180 °. Также вычислите среднюю широту (alat).

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

ОБЪЯСНЕНИЕ: здесь используется тот факт, что одна морская миля по определению всегда равна одной угловой минуте широты. Косинус соответствует тому факту, что меридианы становятся ближе друг к другу по мере приближения к полюсам. Остальное - всего лишь применение теоремы Пифагора, которая требует, чтобы соответствующая часть земного шара была плоской, что, конечно, является лишь хорошим приближением для малых расстояний.

В настоящее время я составляю схему макетной базы данных с двумя таблицами: " Booking и " Waypoint .

    Бронирование хранит информацию о бронировании такси.

enter image description here

    Путевая точка хранит пикап и вылетает точки во время путешествия вместе с латинской позицией. Каждая последовательность - это остановка в путешествии.

enter image description here

Как рассчитать расстояние между различными остановками в каждом путешествии (используя данные lat/lon) в Excel?

Есть ли способ программно определить это в Excel, т. bookingId формула могла быть помещена в колонку mileage (таблица Booking ), bookingId соответствующую последовательность (через bookingId ) для этой поездки в таблице Waypoint и верните результат?

Пример 1:

Путешествие с 2 остановками:

4,3 мили в зависимости от Google, запись в столбце mileage в таблице Booking где id = 1

Пример 2:

Путешествие с 3 остановками:

27,7 миль в зависимости от Google, запись в столбце mileage в таблице Booking где id = 3

До недавнего времени точные карты были построены путем триангуляции, которая, по сути, является применением теоремы Пифагораса. Для расстояния между любыми парами координат возьмем квадратный корень из суммы квадрата разности по координатам х и квадрата разности в координатах у. Координаты x и y должны, однако, находиться в одних и тех же единицах (например, мили), которые включают факторинг значений широты и долготы. Это может быть сложно, потому что коэффициент долготы зависит от широты (ходьба вокруг Северного полюса меньше, чем прогулка вокруг экватора), но в вашем случае должен служить фактор на 52 o север. Отсюда результаты (которые могут быть проверены здесь) примерно на 20% отличаются от приведенных вами примеров (во втором случае с идентификаторами сопряжения 6 и 7 и добавления этого результата к результату от парных идентификаторов 7 и 8).

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

Точка A: LAT1, LONG1 Точка B: LAT2, LONG2

ACOS (COS (RADIANS (90-Lat1)) * COS (RADIANS (90-Lat2)) +SIN (RADIANS (90-Lat1)) * SIN (RADIANS (90-lat2)) * COS (RADIANS (long1-long2) ))) * 6371

Поскольку вы говорите, что точность не важна, и если расстояние невелико (скажем, менее 1000 миль), вы можете использовать расстояние от loxodromic.

Для этого вычислите разницу латитектов (dlat) и разность долгот (dlon). Если бы у вас был шанс (маловероятно), что вы пересекаете меридиан на 180º, возьмите по модулю 360º, чтобы гарантировать, что разница между долготами находится между -180 º и 180º. Также вычислите среднюю широту (alat).

Это расстояние находится в морских милях. Примените конверсии по мере необходимости.

ОБЪЯСНЕНИЕ: Это использует тот факт, что одна морская миля по определению всегда равна одной минуте дуги широты. Косинус соответствует тому, что меридианы становятся ближе друг к другу, когда они приближаются к полюсам. Остальное - это просто применение теоремы Пифагора, которая требует, чтобы соответствующая часть земного шара была плоской, что, конечно, только хорошее приближение для малых расстояний.

Имеется два списка объектов (например, дома и остановки) с известными статичными координатами. Требуется для каждого дома определить ближайшую остановку. Расстояние между объектами я находил по формуле =acos(sin(lat_a)*sin(lat_b)+cos(lat_a)*cos(lat_b)*cos(lon_a-lon_b)*R , где lat_a и lat_b - широты объектов, lon_a и lon_b - долготы объектов, R - радиус Земли. В Excel это выглядит так:

мы получаем по 2 значения для каждого дома (т.е. колво остановок). Нахожу минимальное расстояние по ф-ле МИН. Затем, комбинацией функций ИНДЕКС(. ;ПОИСКПОЗ(МИН(). ;. ;0);1) нахожу соответствующую остановку для конкретного дома. Можно ли как-нибудь организовать пересчет всех возможных вариантов в одной строке? То есть, составить формулу, выделяющую минимальное значение без построения колонки значений расстояний до каждой остановки?

135 1 1 золотой знак 3 3 серебряных знака 19 19 бронзовых знаков

В Excel это выглядит немного не так: обычно диапазон таблицы и ссылки на таблицу совпадают :)

Задачу можно решить одной формулой. Для этого нужно задать диапазоны и объяснить табличному процессору, что делать с данными.

В Excel, кроме обычных формул, есть понятие "формула массива" - формула, ввод которой должен быть обязательно завершен нажатием Ctrl+Shift+Enter. Формулы массива не следует сравнивать со всеми формулами, обрабатывающими массивы данных. Это разные понятия.

Формула массива для строки 2 (получить минимальное расстояние):

Находясь в строке формул, нажать "комбинацию из трех пальцев", указанную ранее. Формула должна заключаться в фигурные скобки - <>. Все. Готово.

После ввода формулы ячейку можно копировать по строкам (протянуть вниз).

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

Получить имя остановки:

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

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

Читайте также: