Jak najlepiej modelować trasy GPS do przechowywania, wizualizacji i analizy?

17

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”:

  1. 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ą nulllub nie są obecne, ale właściwości Trackpoint są zawsze „tam”.

  2. Ś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?
heltonbiker
źródło
3
3. Ścieżki to zbiór punktów o atrybutach x, y, z, m [] i czasie. Plik CSV zawierający te 5 wartości dla każdego przechwyconego punktu to więcej niż wystarczający na solidny model danych. Jeśli potrzebujesz wymyślnych rzeczy, takich jak <>i, {}aby pomóc Ci uporządkować swoje dane - i metadane - robisz to źle.
nagytech,
1
Zgadzam się ze starym dobrym CSV, który reprezentuje wszystko, co GPS nagrywa. Ale format GPX jest dość powszechny w urządzeniach GPS. Ten link może być coś wart, ponieważ zarówno GPS, jak i KML są formatami danych XML. stackoverflow.com/questions/1820129/…
Pete
Podczas gdy XML jest „świetny” i wszystko (z powodów w łączonym poście @ Pete) żaden z tych punktów nie jest istotny. Co więcej, koszty ogólne nie spowalniają chrupania liczb i nadwerężają metody przechowywania i przesyłania danych. To prawda, że ​​jeśli jesteś operatorem typu mom-n-pop, nigdy nie będziesz mieć wystarczającej ilości danych, aby poradzić sobie z tymi problemami, a skurcz liczby nie będzie intensywny. Tak czy inaczej, nie będziesz mieć zasobów, aby utrzymać działanie tak blisko metalu - więc XML z dala.
nagytech,
1
Zauważ, że to pytanie ma znacznie więcej wspólnego z MODELOWANIEM i projektowaniem danych (reprezentacja jego esencji konceptualnej) niż z faktyczną implementacją. Dotychczasowe komentarze koncentrują się na formatach plików, co jest, jak sądzę, jeszcze bardziej odległe, ponieważ formaty plików zależą bardziej od medium implementacyjnego niż natury samych danych.
heltonbiker
1
W kategoriach OO użyłem klasy Line, która może przechowywać punkty (lat, lng, ele, czas, prędkość, namiar itp.). Stamtąd trasy przedstawiają ręcznie rysowane lub zamierzone „ścieżki” oraz ścieżki, które reprezentują rzeczywistą ścieżkę z danymi czasu / prędkości. Pojęciowo wydaje mi się, że są one różne (ręcznie narysowane i dostarczone przez kartografa lub coś takiego, w porównaniu z faktyczną ścieżką). Terminy są po prostu semantyką, jasne, ale pomocne było używanie prawdziwych typów (zamiast mieszania ich wszystkich razem jako „ścieżki”). Ponadto, jeśli chodzi o formaty serializacji, rozważę GeoJSON: en.wikipedia.org/wiki/GeoJSON .
Charlie Collins

Odpowiedzi:

4

Nie sądzę, aby na to pytanie można było ostatecznie odpowiedzieć, ponieważ istnieje wiele sposobów podejścia do tego problemu.

Jednak te myśli mogą być istotne:

Przechowywanie danych jest stosunkowo nieistotne. Niezależnie od używanego mechanizmu, bazy danych, JSON, KML itp., Nadal jest to „płaskie przechowywanie”.

Ważne jest oprogramowanie, którego używasz, oraz sposób reprezentowania danych w oprogramowaniu, abyś mógł przeprowadzić modelowanie.

Prędkość jest dostępna na dwa sposoby, odległość x czas lub jako dane wyjściowe z urządzenia GPS, z którego pobierasz dane. Dlatego czas staje się nieistotny inaczej niż jako element informacyjny.

Dodatkowo możesz również wziąć pod uwagę czas, używając przesunięcia od początku ścieżki. Jeśli masz prędkość i dystans, możesz obliczyć czasy w punktach. (odległość między dwoma punktami można określić na wiele różnych sposobów )

Wzniesienie należy uznać za część modelu przestrzennego, mają one znaczenie dla ustalenia całej masy interesujących informacji o samym torze, na przykład można obliczyć nachylenie, które następnie pozwala zrozumieć zmiany prędkości wzdłuż toru. Jeśli nie ma nachylenia, jakiekolwiek spowolnienie lub zwiększenie prędkości mogło być spowodowane usunięciem stopy z pedału przyspieszenia.

Jeśli chodzi o łączenie ścieżek i ręcznie rysowanych ścieżek, czas nie ma większego znaczenia. Możesz zastosować dowolne prędkości, aby określić czas, na przykład, jak długo przemierzać ścieżkę przy danej prędkości. Jeśli łączysz ścieżki w odstępie kilku dni, twoje dane po prostu nie będą miały sensu, więc będziesz musiał zresetować pola czasu, prawdopodobnie używając przesunięć od początku ścieżki.

Jeśli wysokość nie jest znana, nie jest znana, dlatego nie powinna wynosić zero. Nie powinno być również ujemne, ponieważ rzędne ujemne są również ważnymi rzędnymi. (W dolinie poniżej poziomu morza, kopalni itp.)

Tak, DEMS są dostępne, Tak, możesz je z nich wyciągnąć. Czy będzie wystarczająco dokładne? Mało prawdopodobne, chyba że dokładność nie stanowi problemu. GPS lub barometryczny Pod warunkiem, że wysokość będzie najlepsza, jaką możesz uzyskać.

Więc spróbuj odpowiedzieć na to pytanie:

Przechowuj dane w dowolnym płaskim formacie, który ci się podoba, ale polecam PostGRES z PostGIS to dobra opcja, ładnie radzi sobie z 3D. Następnie możesz użyć rozległych funkcji przestrzennych w PostGIS do manipulowania / modelowania danych.

Jeśli używasz jakiejś formy niestandardowego programu, który opracowujesz, użyj podejścia obiektowego, a nie tablic. Jeśli korzystasz z tablic, równie dobrze możesz użyć bazy danych.

Mark Cupitt
źródło
1
Dziękuję bardzo za poświęcony czas i zainteresowanie. Odpowiedź była dla mnie bardzo interesująca. Ale z jedną rzeczą „nie mogę się zgodzić”: prędkość jest zmienną kanoniczną, a czas nie. Jest to z wielu powodów, ale przede wszystkim dlatego, że prędkość jest pochodną odległości w czasie. Zawsze uzyskasz dobrą prędkość, a szczególnie dobrą średnią prędkość (która okazała się bardziej przydatna niż prędkość natychmiastowa), jeśli wyprowadzasz odległość odcinka w czasie odcinka. Z drugiej strony, jeśli zintegrujesz prędkości, błąd integracji da bardzo złe wyniki po krótkiej liczbie próbek.
heltonbiker
2
Tak, mogę zgodzić się z tym punktem. jednak korzystanie z GPS Tracks samo w sobie jest obarczone błędami pozycji. Wszystko zależy od tego, jaką dokładność można uzyskać. Uzgodniono, że czas jest dość dokładny, ale przy użyciu tego błędu również wystąpią błędy z powodu błędów pozycjonowania GPS. Jedna sekunda interwałów na punktach śladu jest taka, że ​​jedna sekunda, ale wewnątrz GPS, jego algorytmy mogą interpolować tak czy inaczej, aby dojść do oszacowanej pozycji. Oczywiście szczegółowość danych będzie miała duży wpływ na dowolną wybraną metodę analizy
Mark Cupitt
Bardzo dobrze powiedziane ... Właśnie dlatego zrezygnowałem już całkowicie z planowania „prędkości chwilowej”, wybierając coś w rodzaju „chwilowej średniej prędkości”, czyli: „dla każdego punktu na trajektorii jej chwilowa średnia prędkość jest średnią prędkość ostatnich N minut. ” Działa bardzo ładnie i daje odpowiednie poczucie zmian prędkości podczas podróży. Ale prawidłowe obliczenia mogą być trudne i najprawdopodobniej wymagają nieco obliczeń.
heltonbiker
0

Jak już wspomniano w innej odpowiedzi, istnieje wiele różnych podejść. Ponieważ poprosiłem o „solidne koncepcyjnie modele danych”, po wielu badaniach znalazłem dwa wielkie zasoby wiedzy, które zapewniają dwa zupełnie różne podejścia do koncepcji „obiektów ruchomych” i mają wiele nakładających się (w dobrym tego słowa znaczeniu):

  1. Książki Giennadija i Natalii Andrienko, opublikowane przez Springera Verlaga, na przykład doskonałe wizualne analizy ruchu (między innymi od tego samego wydawcy). Wysoce polecany.
  2. The Abstract techniczne (schemat pojęciowy) ISO / OGC (ISO 191xx normy), specjalnie ISO 19107 (Spatial Schema), 19108 (Temporal Schema), 19111 (Spatial Odwoływanie się przez współrzędne), 19141 (Moving wyposażenie) i 19148 (odniesienie liniowe)
heltonbiker
źródło