Zastanawiam się nad pisaniem oprogramowania do obsługi śladów GPS i punktów trasy (głównie przechowywania, wyświetlania i obliczania wskaźników, takich jak prędkość, ocena i kilka prostych statystyk).
Zastanawiam się, jaki powinien być najbardziej niezawodny pod względem koncepcyjnym model danych dotyczących punktów śledzenia, a oto kilka „kandydatów”:
Traktując ślady jako sekwencje punktów śladu:
1.1 Ścieżki są uważane za „2D”, ponieważ rzuty mapy są 2D. Punkty trasy mogą mieć wysokość, ale nie mieć znacznika czasu. Wysokość i sygnatura czasowa to „dodatki”, „opcjonalne”. W zastosowaniach naziemnych wysokość jest bezpośrednią funkcją lat / lon (możliwa do uzyskania przez DEM);
1.2 Ścieżki są uważane za „3D”, ponieważ przestrzeń geograficzna jest w rzeczywistości 3D, a trajektoria odbiornika to 3D (projekcja 2D jest zatem formą redukcji danych). Znacznik czasu może być lub nie być obecny (ścieżka mogła zostać narysowana ręcznie).
1.3 Utwory są uważane za „4D” (3 przestrzenne + czas). Dlatego ręcznie rysowana mapa jest szczególnym przypadkiem, w którym wysokość i znacznik czasu są
null
lub nie są obecne, ale właściwości Trackpoint są zawsze „tam”.Ścieżki są uważane za słowniki strumieni, w których wszystkie strumienie mają równą długość. Istnieje lista szerokości geograficznych, lista długości geograficznych, lista wysokości, jedna ze znaczników czasu itp. Ułatwia to obliczanie statystyk każdej właściwości, a koncepcja Trackpoint staje się w pewnym sensie „wirtualna”, ponieważ jest to przekrój wielu strumieni.
Jeśli dobrze zrozumiałem, format GPX przyjmuje 1.1., KML przyjmuje 1.2. (bez obsługi znacznika czasu), a Strava API przyjmuje 2. (w formacie JSON), ale ostatecznie są to tylko formaty PLIKÓW do serializacji i przechowywania, niekoniecznie do modelowania, reprezentacji obliczeniowej i dzielenia liczb.
Czy jest jakaś forma preferowana w sensie obiektowym i dlaczego? (Uważam, że silne pisanie na klawiaturze i rozsądne modelowanie przynajmniej pozwoliłoby uniknąć operacji, które nie mają sensu).
EDYCJA: niektóre „intrygujące” dodatkowe pytania:
- Czy ręcznie narysowany ślad KONCEPTUALNIE jest tym samym, co zapisany na urządzeniu ślad? Czy powinny one należeć do różnych typów danych?
- Czy należy uznać za „poprawne”, że KML przechowuje zerowe rzędne jako zero? Zero JEST wysokością, a jeśli nie znasz wysokości, nie powinieneś przypisywać do niej zera numerycznego, prawda?
- Czy w przypadku toru z elewacją nie powinno mieć znaczenia, czy wysokość jest pobierana z danych DEM („offline”), czy z danych GPS lub danych barometrycznych („w terenie”)? Czy należy to oznaczyć w obiekcie Track? Zapisano w różnych właściwościach Trackpoint? Zignorowany? Czy powinny to być różne typy danych kolekcji?
- Jeśli edytuję ścieżkę zarejestrowaną przez urządzenie w edytorze map (dodawanie, przenoszenie i usuwanie punktów) lub łączę ścieżki z różnych dat, jak należy obsługiwać znaczniki czasu w punktach na ścieżce? Czy należy je „zresetować” do wartości zerowej? Czy należy utworzyć obiekt (zbiór trackpointów) innego typu niż poprzednie?
<>
i,{}
aby pomóc Ci uporządkować swoje dane - i metadane - robisz to źle.