Apakah ada perpustakaan analisis trek GPS yang baik?

35

Saya terus menulis kode khusus untuk bekerja dengan trek GPS: file GPX dan log NMEA dari ponsel saya, GPS logger khusus, dll. Saya merasa seperti sedang menciptakan kembali roda dan bertanya-tanya apakah ada beberapa perpustakaan / alat standar yang dapat saya gunakan untuk bekerja dengan trek GPS. Beberapa hal yang ingin saya lakukan:

  • Hitung jarak yang ditempuh di trek
  • Hitung kecepatan rata-rata dan kecepatan sesaat di sepanjang trek
  • Hitung waktu bergerak vs waktu diam
  • Sederhanakan trek, hilangkan segmen stasioner
  • Segmen trek menjadi trek yang terpisah, satu per perjalanan
  • Memperbaiki kesalahan pengambilan sampel GPS
  • Buat profil elevasi dengan mencari titik dalam DEM
  • Konversikan trek ke GPX, KML, dll untuk visualisasi

Ada berbagai aplikasi yang menganalisis trek GPS. Saya mencari pustaka perangkat lunak atau set alat skrip sehingga saya dapat menulis aplikasi saya sendiri. Saya tidak terlalu peduli dengan format input; semua jenis lat / lon poin cap waktu baik-baik saja. Saya sebagian besar bekerja di Python di Unix tetapi cukup banyak bahasa apa pun akan dilakukan.

Alat yang ada saya gunakan termasuk GPSBabel dan GDAL / OGR untuk konversi dan PostGIS untuk bekerja dengan trek geometri sebagai string baris. Tapi kebanyakan saya akhirnya menulis kode Python saya sendiri yang bekerja pada array dari lat / lon pair dan itu terasa terlalu rendah. Juga beberapa tugas di atas (seperti menghapus kesalahan GPS) cukup halus. Apakah ada beberapa perpustakaan yang ada di luar sana yang harus saya gunakan?

Nelson
sumber
1
Setelah satu atau dua minggu dan hadiah saya pikir jawaban untuk pertanyaan saya di sini adalah "tidak, tidak ada perpustakaan untuk pemrosesan trek GPX". Banyak aplikasi dan kode, tetapi tidak ada alat tujuan umum. Sangat membantu untuk mengetahui hal itu. Bagi saya jalan ke depan adalah menulis beberapa kode PostGIS yang berfungsi dengan skema yang dibuat oleh impor GPX ogr2ogr. Skema itu berisi LineString sederhana untuk trek dan tabel poin dengan cap waktu untuk dimensi waktu.
Nelson
Apakah kode Delphi juga pilihan?
Google baru saja mengumumkan Tracks API yang saya sebutkan di sini untuk kelengkapan. Ini terlihat bermanfaat tetapi dalam arah yang berbeda dari yang saya cari; lebih lanjut tentang remah roti dan geofences.
Nelson
1
@Nelson Lihatlah jawaban ini, dari salah satu pencipta (editor perjalanan online yang sangat baik) Ride With GPS: stackoverflow.com/a/13084082/401828
heltonbiker
@Nelson Pertanyaan ini masih sangat baru untuk saya, hampir 4 tahun kemudian. Sudahkah Anda menemukan solusi yang baik untuk saat ini?
amball

Jawaban:

7

Yah, agak tergantung pada bahasa pemrograman pilihan Anda, tetapi saya telah mengembangkan mineturer.org di Jawa (situs ini pada dasarnya adalah situs untuk mengunggah, menganalisis, dan menampilkan data GPX).

Iv'e menggunakan JAX-B (http://jaxb.java.net/) untuk membaca file GPX (berdasarkan skema GPX) dan JTS (http://www.vividsolutions.com/jts/) + kode sendiri untuk menganalisa.

Kode sumber untuk mineturer.org tersedia di bawah lisensi MIT di https://bitbucket.org/atlefren/gpsorganizer/

Saya kira kode bisa memberi Anda beberapa petunjuk setidaknya?

atlefren
sumber
Terima kasih! Situs Anda terlihat hebat (dan cukup dapat digunakan melalui Google Translate bahkan jika Anda tidak membaca bahasa Norwegia). Anda melakukan persis jenis analisis yang saya inginkan dan itu sangat membantu Anda membuka sumbernya. Untuk Python, saya mungkin akan menggunakan GEOS, bukan JTS; ada binding yang layak.
Nelson
2
jika Anda suka ... upvote !!
Stev_k
1
Hanya tindak lanjut di sini: Saya sudah mulai porting proyek ini ke Python, menggunakan Shapely dan GeoAlchemy (dan Flask), itu berfungsi tetapi agak lambat saat ini. Kode di github.com/atlefren/mineturer2 untuk yang penasaran
atlefren
3

Saya menulis matematika C # -lib untuk matematika 2d / 3d yang menargetkan penanganan GPS: membaca GPX & TCX, memfilter & menyederhanakan trek, mengelompokkan trek / segmen dan mentransformasikannya ke bidang 2d.

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

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

tma
sumber
Apakah mungkin untuk mendapatkan deskripsi atau dokumentasi untuk Nuget itu?
Petr Krampl
Saya akan melihat apakah saya dapat menambahkan Readme.MD ke pkg NuGet.
tma
Terima kasih, repositori tidak dapat diakses. Apakah mungkin untuk mem-parsing juga file gpx yang mengandung <rte>dan <rtept>elemen, selain <trk>elemen?
Petr Krampl
1
Saat ini hanya mendukung trrk-> trkseg-> trkpt dengan ekstensi track point Garmin, tetapi saya menambahkan rte-> rtept di 2.3.0, tetapi sejauh ini tidak ada validasi.
tma
1
Dokumentasi tambahan untuk kedua paket di pada nuget.org.
tma
2

Perangkat GPS harus membantu. Ini adalah pustaka sumber terbuka dan rangkaian aplikasi yang bertujuan untuk membebaskan para peneliti dari pengkodean tingkat rendah.

Ini menyediakan fungsionalitas berikut:

  • Utilitas RINEX
  • Penentuan posisi
  • Analisis residu
  • Pemodelan ionosfer
  • Simulasi Pelacakan Sinyal T
  • Transformasi dasar
  • Pengumpulan dan konversi data pengamatan
  • Perbandingan dan validasi file.
  • Pengeditan data
  • Posisi otonom dan relatif.
RK
sumber
Terima kasih atas jawabannya! GPSTk terlihat menarik tetapi berada pada tingkat yang lebih rendah daripada yang saya cari. Tampaknya tentang bekerja dengan sinyal radio GPS mentah dan mendapatkan perbaikan lokasi darinya. Saya sudah memiliki perbaikan lokasi dari perangkat GPS konsumen saya dan tidak ada akses ke data satelit tingkat rendah.
Nelson
0

Pertanyaan yang sangat bagus! Saya telah bekerja cukup banyak dengan data GPX akhir-akhir ini dan solusi paling sederhana yang saya temukan adalah mengubah titik jejak Anda menjadi format db spasial dan kemudian membuat tampilan (spasial dan tabular) untuk merangkum data sesuai kebutuhan. Saya tidak bisa mendapatkan hasil yang diperlukan menggunakan OGR untuk mengimpor data GPX saya, jadi saya akhirnya menggunakan skrip python sederhana untuk melintasi struktur pohon XML dari GPX dan memuatnya ke db (SpatiaLite dalam kasus saya). Ini jelas tidak membantu Anda dalam menghindari reinventing the wheel, namun saya menemukan bahwa saya bisa mendapatkan hasil yang diinginkan dari meringkas trek dengan perjalanan menggunakan SQL yang ada dan fungsi spasial SQL.

Brent Edwards
sumber
1
Kelemahan utama yang saya lihat dengan menggunakan PostGIS LineStrings adalah mereka tidak mengandung data timestamp. Saya tentu saja dapat melacaknya sendiri dalam skema terpisah, tetapi kemudian PostGIS tidak melakukan apa pun untuk membantu saya melakukan perhitungan berbasis waktu. Apakah Anda punya trik untuk itu?
Nelson
0

Saya mengembangkan soft kecil ini untuk saya gunakan sendiri. Ini terutama untuk visualisasi dan tidak mendukung semua kebutuhan Anda, tetapi mungkin dapat membantu!

Julien
sumber
Terima kasih! Ini open source dan di Jawa, jadi itu pasti membantu.
Nelson
0

dengan risiko tidak menjawab pertanyaan Anda yang sebenarnya :-), izinkan saya menyarankan aplikasi hebat yang mungkin belum pernah Anda dengar, yang melakukan semua yang Anda daftarkan -

itu adalah one-stop-shop saya untuk melihat, mengedit, dan mentransfer GPX, antara lain.

Dan mungkin lebih pada topik, mungkin checkout namespace Positioning dari dotSpatial (.NET): http://dotspatial.codeplex.com/wikipage?title=DotSpatial.Positioning

Salam.

MC5
sumber
Terima kasih! TopoFusion adalah aplikasi hebat untuk Windows, tetapi saya benar-benar membutuhkan perpustakaan. dotSpatial memiliki beberapa kode yang terlihat berguna untuk dipan. Itu di bawah Lisensi Publik Mozilla.
Nelson
0

Jika Anda ingin beberapa spesifikasi abstrak untuk bahasa-netral, API, ada GeoAPI:

"Komunitas pengembangan dalam membangun solusi GIS mempertahankan tingkat upaya yang sangat besar. Proyek GeoAPI bertujuan untuk mengurangi duplikasi dan meningkatkan interoperabilitas dengan menyediakan API netral, antarmuka-saja yang berasal dari Standar OGC / ISO."

http://www.geoapi.org/

dan lebih khusus Standar Implementasi (PDF)

heltonbiker
sumber
0

Unggah trek GPX Anda ke URL ini

Anda akan diberikan sebagian besar layanan yang Anda minta, khususnya:

  • Hitung jarak yang ditempuh di trek
  • Hitung kecepatan rata-rata
  • Hitung waktu bergerak vs waktu stasioner (terlihat pada profil kecepatan)
  • Sederhanakan trek, hilangkan segmen stasioner
  • Memperbaiki kesalahan pengambilan sampel GPS
  • Mengubah trek KML / KMZ dll untuk visualisasi
John
sumber