Как посчитать полное расстояние по уникальному ID на основании geo-координат?
У меня есть Таблица. Вот пример таблицы.:
device_id activity_timestamp latitude longitude
caa765a9-cbba-456d-893d-04392b8ccafb 2020-01-25 07:47:00 UTC -37.042859 174.867549
10249c85-2c18-42e4-a138-c5370e0cbbfd 2020-01-24 22:14:09 UTC -38.659999 178.02
b1775b5a-32f3-440e-8486-4535a641efca 2020-01-27 02:50:54 UTC -44.8414 168.7167
02a81c42-98be-4dcb-aa58-73a1cca2ade0 2020-01-18 01:24:35 UTC -44.019599 171.7093
fbea5a29-866e-436b-b6c2-97af4965a798 2020-01-29 10:07:21 UTC -36.843089 174.76459
6aabb7e3-4dcd-4b24-b085-dd63d70692c0 2020-01-04 02:01:34 UTC -38.0138 177.278799
2f87fe2d-3130-4afb-a9d6-9463a959a8ec 2020-01-30 07:22:37 UTC -40.8459 175.8391
b09a5383-df8e-41d3-989a-8086b4bfbec4 2020-01-29 17:39:15 UTC -38.668529 178.02596
1b783c07-c6f8-4ef1-9b4e-c3bc278fcdf2 2020-01-12 05:07:54 UTC -35.3278 173.6987
384b3358-3421-4d9e-9abe-9fb8d3ba1519 2020-01-20 11:09:33 UTC -44.4883 169.966
af568083-2afe-4cb1-95c7-572802600646 2020-01-23 06:40:42 UTC -45.835999 168.752299
68ca68f2-2091-4a4d-bfe9-177a9ddbb882 2020-01-29 04:55:07 UTC -45.943399 169.2597
0ab62c16-2481-4a72-bdbb-18578b0bee9e 2020-01-29 09:38:38 UTC -45.8725 170.5036
342ed63c-1f5a-4bc3-b266-6c06b0e98e93 2020-01-13 23:57:42 UTC -44.019599 171.7093
device_id - ID устройства.
activity_timestamp - время, когда была обнаружена активность device_id.
latitude, longtitude - координаты device_id, когда обнаружена активность.
У одного девайса может быть много активностей.
Задача: Надо понять, какое расстояние прошел каждый девайс (device_id)
По сути, расстояние, которое прошел девайс - это сумма расстояний между точками, когда была обнаружена активность. Общую логику я вижу так:
- Сгруппировать все активности по одному девайсу.
- Упорядочить активности внутри одного девайса по
activity_timestamp, чтобы было понятно какие точки есть соседями (между какими точками считать расстояние). - Посчитать расстояние между соседними точками в таблице.
- Суммировать все расстояния по одному
device_id
Первые 2 пункта я решил. У меня получается вот такая таблица:
device_id latitude longitude activity_timestamp
0000035c-bffc-4cdf-90b0-56f92b38ca5a -39.046081 174.10711 2020-01-05 05:29:36
0000035c-bffc-4cdf-90b0-56f92b38ca5a -39.046081 174.10711 2020-01-05 05:29:38
0000035c-bffc-4cdf-90b0-56f92b38ca5a -39.046081 174.10711 2020-01-05 05:29:40
0000035c-bffc-4cdf-90b0-56f92b38ca5a -40.225639 175.64711 2020-01-07 22:55:26
0000035c-bffc-4cdf-90b0-56f92b38ca5a -40.225631 175.64711 2020-01-07 22:55:26
0000035c-bffc-4cdf-90b0-56f92b38ca5a -40.225631 175.64711 2020-01-07 22:55:30
0000035c-bffc-4cdf-90b0-56f92b38ca5a -40.225639 175.64711 2020-01-07 22:55:30
0000035c-bffc-4cdf-90b0-56f92b38ca5a -40.225639 175.64711 2020-01-07 22:55:32
0000035c-bffc-4cdf-90b0-56f92b38ca5a -40.225631 175.64711 2020-01-07 22:55:32
0000035c-bffc-4cdf-90b0-56f92b38ca5a -40.230041 175.724009 2020-01-20 05:18:42
0000035c-bffc-4cdf-90b0-56f92b38ca5a -40.230049 175.724009 2020-01-20 05:18:42
0000035c-bffc-4cdf-90b0-56f92b38ca5a -40.23048 175.72405 2020-01-20 05:18:44
0000035c-bffc-4cdf-90b0-56f92b38ca5a -40.23048 175.72405 2020-01-20 05:18:45
0000035c-bffc-4cdf-90b0-56f92b38ca5a -40.230479 175.72405 2020-01-20 05:18:45
0000035c-bffc-4cdf-90b0-56f92b38ca5a -40.23048 175.72405 2020-01-20 05:18:46
0000035c-bffc-4cdf-90b0-56f92b38ca5a -40.230479 175.72405 2020-01-20 05:18:46
0000035c-bffc-4cdf-90b0-56f92b38ca5a -40.230479 175.72405 2020-01-20 05:18:47
0000035c-bffc-4cdf-90b0-56f92b38ca5a -40.23048 175.72405 2020-01-20 05:18:47
0000035c-bffc-4cdf-90b0-56f92b38ca5a -40.23048 175.72405 2020-01-20 05:18:49
0000035c-bffc-4cdf-90b0-56f92b38ca5a -40.230479 175.72405 2020-01-20 05:18:49
0000035c-bffc-4cdf-90b0-56f92b38ca5a -40.3397 175.619519 2020-01-21 00:03:28
0000035c-bffc-4cdf-90b0-56f92b38ca5a -40.339691 175.619519 2020-01-21 00:03:28
0000035c-bffc-4cdf-90b0-56f92b38ca5a -40.339852 175.61936 2020-01-21 00:03:32
0000035c-bffc-4cdf-90b0-56f92b38ca5a -40.33986 175.61936 2020-01-21 00:03:32
0000035c-bffc-4cdf-90b0-56f92b38ca5a -40.339852 175.61936 2020-01-21 00:03:33
0000035c-bffc-4cdf-90b0-56f92b38ca5a -40.33986 175.61936 2020-01-21 00:03:33
000027a4-543f-4842-a3d1-a02813dffed3 -36.77559 174.5558 2020-01-10 00:21:43
000027a4-543f-4842-a3d1-a02813dffed3 -36.775585 174.5558 2020-01-10 00:21:43
000027a4-543f-4842-a3d1-a02813dffed3 -36.831769 174.638659 2020-01-14 23:24:03
000027a4-543f-4842-a3d1-a02813dffed3 -36.831761 174.638659 2020-01-14 23:24:03
000027a4-543f-4842-a3d1-a02813dffed3 -36.83176 174.638659 2020-01-23 08:19:18
000027a4-543f-4842-a3d1-a02813dffed3 -36.83176 174.638659 2020-01-23 08:53:55
000027a4-543f-4842-a3d1-a02813dffed3 -36.831757 174.638659 2020-01-23 08:53:55
000027a4-543f-4842-a3d1-a02813dffed3 -36.799999 174.599999 2020-01-25 03:19:43
000027a4-543f-4842-a3d1-a02813dffed3 -36.83171 174.638669 2020-01-26 10:38:51
Я не могу понять как посчитать расстояние между соседними точками в таблице таким образом чтобы расстояние считалось только между точками одного девайса (device_id)?
Может есть еще какие-то другие способы решения этой задачи?
Спасибо