2014-08-27 4 views
0

В настоящее время я составляю схему макетной базы данных с двумя таблицами: Booking и Waypoint.Формула Excel для вычисления расстояния между несколькими точками с использованием координат lat/lon

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

enter image description here

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

enter image description here

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

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

Пример 1:

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

1 1 1 MK4 4FL, 2, Levens Hall Drive, Westcroft, Milton Keynes 52.002529 -0.797623 
2 1 2 MK2 2RD, 55, Westfield Road, Bletchley, Milton Keynes 51.992571 -0.72753 

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

Пример 2:

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

6 3 1 MK7 7DT, 2, Spearmint Close, Walnut Tree, Milton Keynes 52.017486 -0.690113 
7 3 2 MK18 1JL, H S B C, Market Hill, Buckingham    52.000674 -0.987062 
8 3 1 MK17 0FE, 1, Maids Close, Mursley, Milton Keynes  52.040622 -0.759417 

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

+0

фотографии: http://www.cpearson.com/Excel/latlong.aspx –

+1

Хотя легко рассчитать расстояния по прямым линиям на карте («loxodromic distance») и не так сложно в больших кругах («ортодромные расстояния»), вычисление разумно точных миль над землей требует гораздо более сложного решения к задачам минимальной длины пути по графикам, представляющим маршруты, что, в свою очередь, требует наличия хороших баз данных маршрутов. Я бы рекомендовал использовать готовое специализированное программное обеспечение для этой функции, если только вы не заботитесь о точности. Если это так, дайте мне знать, и я найду формулы ... У меня их где-то ... – jsalvata

+0

@jsalvata Спасибо, что вернулись ко мне. Точность на самом деле не проблема :) – methuselah

ответ

1

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

1

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

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

Затем вычисляем:

distance= 60*sqrt(dlat^2 + (dlon*cos(alat))^2) 

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

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

2

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

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

ACOS (COS (РАДИАНЫ (90-LAT1)) * COS (РАДИАНЫ (90-LAT2)) + SIN (РАДИАНЫ (90-LAT1)) * SIN (RADIANS (90-LAT2)) * COS (RADIANS (long1-long2))) * 6371

С уважением

Смежные вопросы