Як найкраще моделювати GPS-доріжки для зберігання, візуалізації та аналізу?


17

Я замислююсь над написанням програмного забезпечення для роботи з треками та шляхами GPS (в основному зберігання, відображення та обчислення показників, таких як швидкість, оцінка та деякі прості статистичні дані).

Цікаво, що має бути найбільш концептуально надійною моделлю даних щодо точок маршруту, і ось декілька "кандидатів":

  1. Розглядаючи композиції як послідовності точок маршруту:

    1.1. Треки вважаються "2D", оскільки проекції карт - 2D. Траєкторії можуть мати або не мати висоту, можуть бути або не мати часових позначок. Підвищення та позначка часу - це "додаткові", "необов'язкові". Для наземних застосувань висота є прямою функцією lat / lon (можна отримати через DEM);

    1.2. Доріжки вважаються "3D", оскільки географічний простір справді є 3D, а траєкторія приймача - 3D (2D-проекція, таким чином, є формою скорочення даних). Мітка часу може бути або не присутня (доріжку можна було намалювати вручну).

    1.3. Доріжки вважаються "4D" (3 просторові + часові). Таким чином, намальована вручну карта - це особливий випадок, коли висота та часова мітка відсутні nullчи іншим чином відсутні, але властивості Trackpoint завжди «є».

  2. Треки вважаються словниками потоків, де всі потоки мають однакову довжину. Існує перелік широт, перелік довжин, перелік висот, одна з часових позначок тощо. Це полегшує обчислення статистики кожного об'єкту, а поняття Trackpoint стає «віртуальним» у певному сенсі, оскільки це поперечний переріз багатьох потоків.

Якщо я правильно зрозумів, формат GPX приймає 1.1., KML приймає 1.2. (без підтримки часової позначки), і Strava API приймає 2. (у форматі JSON), але врешті-решт це лише формати FILE для серіалізації та зберігання, не обов'язково для моделювання, обчислювального подання та скорочення чисел.

Чи є якась форма, яка є кращою, в об’єктно-орієнтованому розумінні, і чому? (Я вважаю, що сильне введення тексту та розумне моделювання принаймні дозволить уникнути операцій, які не мають сенсу).

EDIT: кілька "інтригуючих" додаткових запитань:

  • ЧИ КОНЦЕПТУЛЬНО це те саме, що записано на пристрої трек? Чи мають вони бути різними типами даних?
  • Чи слід вважати "правильним", що KML зберігає нульові висоти як нуль? Нуль IS висота, і якщо ви не знаєте висоти, ви не повинні присвоювати їй числовий нуль, чи не так?
  • Якщо це має значення в доріжці з висотою, якщо висота отримана з даних DEM ("офлайн") або з даних GPS або барометричних даних ("у полі")? Чи потрібно це позначити в об'єкті сліду? Збережено для різних властивостей Trackpoint? Проігноровано? Чи повинні вони бути різними типами даних колекції?
  • Якщо я редагую записану на пристрої доріжку в редакторі карт (додавання, переміщення та видалення точок) або поєдную треки з різних дат, як слід обробляти часові позначки в точках треків? Чи слід їх "скинути" на нуль? Чи повинен створюватися об'єкт (колекція треків) іншого типу з попередніх?

3
3. Доріжки - це сукупність точок з атрибутами x, y, z, m [] та часу. CSV-файл, що містить ці 5 значень для кожної захопленої точки, більш ніж достатній для надійної моделі даних. Якщо вам потрібні химерні речі, такі як <>і {}щоб ви могли організувати свої дані - і метадані - ви робите це неправильно.
nagytech

1
Я погоджуюся з лише старим хорошим CSV, він репрезентує все, що записує GPS. Але формат GPX досить поширений для GPS-пристроїв. Це посилання може щось вартувати, оскільки GPS і KML - це формати даних XML. stackoverflow.com/questions/1820129/…
Піт

Хоча XML "чудовий", і все (з причин, пов’язаних із посиланням @ Pete) жоден із цих пунктів не має значення. У будь-якому випадку, накладні витрати нічого, крім уповільнення скорочення чисельності та роздуття ваших методів зберігання та передачі даних. Зрозуміло, що якщо ви операція "мама-поп", у вас ніколи не буде достатньо даних, щоб зіткнутися з цими проблемами, і ваше скорочення чисельності не буде інтенсивним. Так чи інакше, у вас не буде ресурсів для підтримання роботи цього закритого металу - так XML далеко.
nagytech

1
Зауважимо, що це питання має набагато більше стосунку МОДЕЛЮВАННЯ та проектування даних (представлення його концептуальної сутності), ніж власне впровадження. Наразі коментарі фокусуються у форматах файлів, що, на мій погляд, ще далеко, тому що формати файлів залежать більше від середовища реалізації, ніж від характеру самих даних.
heltonbiker

1
ОЗ, я використовував клас Line, який може містити точки (lat, lng, ele, час, швидкість, підшипник тощо). Звідти Маршрути, які представляють намальовані вручну або призначені "треки", і Треки, які представляють фактичну доріжку з даними про час / швидкість. Концептуально я думаю, що вони різні (намальовані вручну та надані картографом, або такі, порівняно з фактичними доріжками). Терміни - це просто семантика, але використання реальних типів було корисним (а не просто збиттям їх разом як "Трек"). Також, коли мова йде про формати серіалізації, я б розглядав GeoJSON: en.wikipedia.org/wiki/GeoJSON .
Чарлі Коллінз

Відповіді:


4

Я не думаю, що на це питання насправді можна відповісти остаточно, оскільки існує багато, багато способів підходу до цього.

Однак ці думки можуть бути актуальними:

Зберігання даних є відносно неважливим. Який би механізм ви не використовували, База даних, JSON, KML тощо, це все ще "плоска сховище".

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

Швидкість доступна двома способами, відстань x час або як вихід з GPS-пристрою, звідки ви отримуєте дані. Тому час стає не важливим, крім інформаційного елемента.

Крім того, ви також можете врахувати час, скориставшись зрушенням від початку треку. Якщо у вас швидкість і відстань, то ви можете обчислити рази в точках. (відстань між двома точками можна визначити кількома різними методами )

Підняття слід вважати частиною просторової моделі, вони доречні для визначення цілого ряду цікавої інформації про саму доріжку, наприклад, можна розраховувати ступінь, яка потім дозволяє зрозуміти коливання швидкості по трасі. Якщо немає оцінки, можливо, будь-яке уповільнення або збільшення швидкості відбулося внаслідок зняття ступні з прискорювача.

Що стосується об'єднання доріжок та доріжок, намальованих вручну, час має мало значення. Ви можете застосувати довільні швидкості, щоб визначити час, наприклад, як довго проходити колію з заданою швидкістю. Якщо ви об'єднуєте доріжки в декілька днів один від одного, то ваші дані просто не матимуть сенсу, тому вам доведеться скинути часові поля, можливо, використовуючи зрушення для початку треку.

Якщо висота не відома, вона не відома, тому вона не повинна бути нульовою. Він також не повинен бути негативним, оскільки негативні висоти також є допустимими висотами. (У долині нижче рівня моря, шахті тощо)

Так, DEMS доступні, так, ви можете витягувати з них. Чи буде досить точним? Навряд чи, якщо точність не є проблемою. GPS або барометричний за умови, що висоти будуть найкращими.

Тож спробуйте дати вам відповідь, яка наближається:

Зберігайте дані у будь-якому вподобаному вам плоскому форматі, але я б рекомендував, PostGRES з PostGIS - це хороший варіант, він обробляє 3D чудово. Потім ви можете використовувати широкі просторові функції в PostGIS для маніпулювання / моделювання даних.

Якщо ви використовуєте якусь розроблену нестандартну програму, використовуйте об'єктно-орієнтований підхід, а не масиви. Якщо ви використовуєте масиви, ви також можете використовувати базу даних.


1
Дуже дякую за ваш час та інтерес, я вважав вашу відповідь дуже цікавою. Але з одним я не можу погодитися: ця швидкість є канонічною змінною, тоді як час не буде. Це з багатьох причин, але насамперед тому, що швидкість є похідною відстані у часі. Ви завжди отримаєте хорошу швидкість і особливо хорошу середню швидкість (що я вважаю кориснішим за миттєву швидкість), якщо ви отримаєте відстань відрізка за час сегмента. З іншого боку, якщо інтегрувати швидкість, помилка інтеграції дасть дуже неправильні результати після невеликої кількості вибірок.
heltonbiker

2
Так, я можу визнати це. однак використання GPS-треків самі по собі є помилками позиції. Вся справа в тому, яку точність ви можете отримати. Погоджено, час досить точний, але ви отримаєте помилки, використовуючи це також через помилки позиції GPS. Інтервали в секунду для точок треку - це лише одна секунда, але всередині GPS його алгоритми цілком можуть бути інтерпольованими, щоб дійти до оціночної позиції. Очевидно, що деталізація даних матиме великий вплив на будь-який обраний метод аналізу
Mark Cupitt

Дуже добре кажучи ... Тому я вже взагалі відмовився від побудови "миттєвої швидкості", ідучи за якусь "миттєву середню швидкість", це було б: "для кожної заданої точки траєкторії її миттєва середня швидкість є середньою швидкість останніх N хвилин ". Це змова дуже приємно і дає відповідне відчуття швидкості руху під час поїздки. Але правильний розрахунок може бути складним і, швидше за все, трохи обчислювально обчислювальним.
heltonbiker

0

Як вже було сказано в іншій відповіді, існує багато різних підходів. Оскільки я попросив "концептуально надійні моделі даних", після безлічі досліджень я знайшов два чудових масивів знань, які забезпечують два досить різні підходи до концепції "рухомих об'єктів", і мають багато перекриття (у хорошому розумінні):

  1. Книги Геннадія та Наталії Андрієнко, видані Спрінгер Верлагом, наприклад, відмінна візуальна аналітика руху (серед інших того ж видавця). Настійно рекомендується.
  2. У Абстрактні специфікації (концептуальні схеми) ISO / OGC (ISO 191хх норми), спеціально ISO 19107 (Просторове Schema), 19108 (Temporal Schema), 19111 (просторової прив'язки за координатами), 19141 (Переміщення об'єктів) та 19148 (лінійних координат)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.