Как посчитать полное расстояние по уникальному 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)

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

  1. Сгруппировать все активности по одному девайсу.
  2. Упорядочить активности внутри одного девайса по activity_timestamp, чтобы было понятно какие точки есть соседями (между какими точками считать расстояние).
  3. Посчитать расстояние между соседними точками в таблице.
  4. Суммировать все расстояния по одному 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)?

Может есть еще какие-то другие способы решения этой задачи?

Спасибо


Ответы (0 шт):