Czy istnieje dobra biblioteka analizy śladów GPS?


35

Wciąż piszę niestandardowy kod do pracy ze śladami GPS: pliki GPX i dzienniki NMEA z mojego telefonu, dedykowany rejestrator GPS itp. Czuję, że odkrywam koło i zastanawiam się, czy jest jakaś standardowa biblioteka / narzędzie, którego mogę użyć do pracy ze śladami GPS. Niektóre rzeczy, które lubię robić:

  • Oblicz odległość przebytą na torze
  • Oblicz średnią prędkość i chwilowe prędkości na torze
  • Oblicz czas w ruchu w funkcji czasu stacjonarnego
  • Uprość ścieżkę, wyeliminuj segmenty stacjonarne
  • Podziel ścieżkę na osobne ścieżki, po jednej na podróż
  • Wygładź błąd próbkowania GPS
  • Utwórz profil wysokości, wyszukując punkty w DEM
  • Konwertuj ścieżki do GPX, KML itp. W celu wizualizacji

Istnieje wiele aplikacji analizujących ślady GPS. Szukam biblioteki oprogramowania lub zestawu skryptów, aby móc pisać własne aplikacje. Nie dbam o formaty wejściowe; jakikolwiek punkt lat / lon ze znacznikiem czasu jest w porządku. Pracuję głównie w Pythonie na Uniksie, ale praktycznie każdy język będzie działał.

Istniejące narzędzia, których używam, to GPSBabel i GDAL / OGR do konwersji oraz PostGIS do pracy z geometrią ścieżki jako ciągiem linii. Ale przede wszystkim piszę własny kod Python, który działa na tablicach par lat / lon i wydaje się zbyt niski. Również niektóre z powyższych zadań (jak usuwanie błędu GPS) są dość subtelne. Czy jest jakaś istniejąca biblioteka, z której powinienem korzystać?


1
Po tygodniu lub dwóch i nagrodach myślę, że odpowiedź na moje pytanie brzmi „nie, nie ma biblioteki do przetwarzania ścieżek GPX”. Wiele aplikacji i kodu, ale nie ma narzędzia ogólnego przeznaczenia. Warto o tym wiedzieć. Dla mnie rozwiązaniem jest napisanie kodu PostGIS, który działa ze schematem utworzonym przez import GPX ogr2ogr. Ten schemat zawiera zarówno prosty LineString dla ścieżki, jak i tabelę punktów ze znacznikami czasu dla wymiaru czasu.
Nelson

Czy kod Delphi też jest opcją?

Google właśnie ogłosiło interfejs Tracks API , o którym wspominam tutaj w celu uzupełnienia. Wygląda na użyteczne, ale w innym kierunku niż szukam; więcej o bułce tartej i geofence.
Nelson

1
@Nelson Spójrz na tę odpowiedź od jednego z twórców (raczej doskonałego edytora jazdy online) Ride With GPS: stackoverflow.com/a/13084082/401828
heltonbiker

@Nelson To pytanie jest nadal bardzo aktualne, prawie 4 lata później. Czy w międzyczasie znalazłeś dobre rozwiązanie?
amball

Odpowiedzi:


7

Cóż, trochę zależy od wybranego języka programowania, ale opracowałem mineturer.org w Javie (strona jest zasadniczo witryną do przesyłania, analizy i wyświetlania danych GPX).

Iv'e używał JAX-B (http://jaxb.java.net/) do odczytu plików GPX (w oparciu o schemat GPX) i JTS (http://www.vividsolutions.com/jts/) + własny kod dla analizować.

Kod źródłowy mineturer.org jest dostępny na licencji MIT pod adresem https://bitbucket.org/atlefren/gpsorganizer/

Wydaje mi się, że kod może dać ci co najmniej pewne wskazówki?


Dzięki! Twoja strona wygląda świetnie (i jest całkiem użyteczna za pośrednictwem Tłumacza Google, nawet jeśli nie znasz norweskiego). Robisz dokładnie taką analizę, jakiej chcę, i jest to duża pomoc, którą otworzyłeś. W przypadku Pythona prawdopodobnie użyłbym GEOS zamiast JTS; są przyzwoite wiązania.
Nelson

2
jeśli ci się podoba ... głosuj !!
Stev_k

1
Po prostu kontynuacja: zacząłem przenosić ten projekt do Pythona, używając Shapely i GeoAlchemy (i Flask), działa, ale w tej chwili jest raczej powolny. Kod na github.com/atlefren/mineturer2 dla ciekawskich
atlefren

3

Napisałem matematykę C # -lib do matematyki 2d / 3d ukierunkowanej na obsługę GPS: czytanie GPX i TCX, filtrowanie i uproszczenie ścieżek, grupowanie ścieżek / segmentów i przekształcanie do płaszczyzny 2d.

https://www.nuget.org/packages/Math.Matthey/

https://www.nuget.org/packages/Math.Matthey.Tools.TrackReaders/


Czy można uzyskać opis lub dokumentację dla tego samorodka?
Petr Krampl

Zobaczę, czy mogę dodać plik Readme.MD do paczki NuGet.
tma

Dziękujemy, repozytorium jest niedostępne. Czy oprócz elementów można analizować również pliki GPX zawierające elementy <rte>i ? <rtept><trk>
Petr Krampl

1
W tej chwili obsługuję tylko trrk-> trkseg-> trkpt z rozszerzeniami punktu trasy Garmin, ale dodałem rte-> rtept w 2.3.0, ale jak dotąd nie sprawdziłem poprawności.
tma

1
Dodano dokumentację dla obu pakietów na stronie nuget.org.
tma

2

GPS Toolkit powinno pomóc. To biblioteka typu open source i pakiet aplikacji, których celem jest uwolnienie badaczy od kodowania niższego poziomu.

Zapewnia następujące funkcje:

  • Narzędzia RINEX
  • Pozycjonowanie
  • Analiza resztkowa
  • Modelowanie jonosferyczne
  • Symulacja śledzenia sygnału T
  • Podstawowe przekształcenia
  • Zbieranie i konwersja danych obserwacyjnych
  • Porównanie i walidacja plików.
  • Edycja danych
  • Pozycjonowanie autonomiczne i względne.

Dziękuję za odpowiedź! GPSTk wygląda fascynująco, ale jest na niższym poziomie niż szukam. Wydaje się, że chodzi o pracę z surowymi sygnałami radiowymi GPS i uzyskiwanie z nich poprawek lokalizacji. Mam już poprawki lokalizacji z mojego odbiornika GPS i nie mam dostępu do danych satelitarnych niskiego poziomu.
Nelson


0

Doskonałe pytanie! Ostatnio sporo pracuję z danymi GPX i najprostszym rozwiązaniem, jakie znalazłem, było przekonwertowanie punktów śledzenia na przestrzenny format db, a następnie utworzenie widoków (przestrzennych i tabelarycznych) w celu podsumowania danych w razie potrzeby. Nie byłem w stanie uzyskać potrzebnych wyników za pomocą OGR do zaimportowania moich danych GPX, więc skończyłem za pomocą prostego skryptu pythonowego, aby przejść przez strukturę drzewa XML GPX i załadować ją do db (w moim przypadku SpatiaLite). To zdecydowanie nie pomaga w uniknięciu ponownego wynalezienia koła, jednak odkryłem, że udało mi się uzyskać pożądane wyniki podsumowania ścieżek za pomocą podróży przy użyciu istniejących funkcji SQL i przestrzennych funkcji SQL.


1
Główną wadą, jaką widziałem przy użyciu PostGIS LineStrings, jest to, że nie zawierają danych znaczników czasu. Z pewnością mogę je śledzić w osobnym schemacie, ale wtedy PostGIS nie robi nic, co pomogłoby mi w obliczeniach opartych na czasie. Czy masz na to jakieś sztuczki?
Nelson

0

Opracowuję ten mały program na własny użytek. Służy głównie do wizualizacji i nie obsługuje wszystkich twoich potrzeb, ale może może pomóc!


Dzięki! Jest open source i w Javie, więc to zdecydowanie pomoc.
Nelson

0

ryzykując, że nie odpowiem na twoje aktualne pytanie :-), pozwól, że zasugeruję świetną aplikację, o której mogłeś nie słyszeć, która zawiera wszystko, co wymieniłeś -

to mój kompleksowy serwis do przeglądania, edytowania i przesyłania między innymi GPX.

I może bardziej na temat, może sprawdź Przestrzeń nazw dotSpatial (.NET): http://dotspatial.codeplex.com/wikipage?title=DotSpatial.Pozycjonowanie

Pozdrowienia.


Dzięki! TopoFusion to świetna aplikacja dla systemu Windows, ale naprawdę potrzebuję biblioteki. dotSpatial ma trochę użytecznego kodu do szopowania. Jest na licencji publicznej Mozilla.
Nelson

0

Jeśli potrzebujesz abstrakcyjnej specyfikacji interfejsu API niezależnego od języka, możesz skorzystać z GeoAPI:

„Społeczność programistów zajmująca się tworzeniem rozwiązań GIS wymaga ogromnego wysiłku. Projekt GeoAPI ma na celu ograniczenie duplikacji i zwiększenie interoperacyjności poprzez zapewnienie neutralnych interfejsów API opartych wyłącznie na interfejsie, pochodzących ze standardów OGC / ISO”.

http://www.geoapi.org/

a dokładniej Standard wdrażania (PDF)


0

Prześlij swoją ścieżkę GPX na ten adres URL

Otrzymasz większość usług, o które prosiłeś, w szczególności:

  • Oblicz odległość przebytą na torze
  • Oblicz średnią prędkość
  • Oblicz czas w ruchu w funkcji czasu stacjonarnego (widoczny na profilu prędkości)
  • Uprość ścieżkę, wyeliminuj segmenty stacjonarne
  • Wygładź błąd próbkowania GPS
  • Konwertuje ścieżkę KML / KMZ itp. Do wizualizacji
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.