Hitung kecepatan maksimum dari data GPS


10

Saya memiliki lokasi GPS mentah untuk sebuah trek, dan perlu mendapatkan kecepatan maksimum. Metode sederhana (menghitung kecepatan antara 2 titik, mengambil maks) akan memberikan angka besar yang tidak berarti karena ketidaktepatan GPS, titik tersebut melompat-lompat. Bisakah Anda menyarankan algoritma siap pakai yang baik untuk menyelesaikan ini?


Jika titik tersebut melompat-lompat, apakah Anda mengatakan Anda memiliki lebih dari satu titik di suatu lokasi? Sebagian besar pertanyaan Anda terdengar seolah-olah Anda tertarik untuk menampilkan data waktu nyata dan bukan pasca-pemrosesan (untuk akurasi).
Brad Nesom

Jika Anda memiliki lokasi gps 'mentah', maka Anda harus, dengan segala cara, memiliki kecepatan di atas tanah di simpul yang merupakan elemen standar dalam string RMEA NMEA.
nagytech

Jawaban:


13

Untuk mendapatkan kecepatan, Anda harus punya waktu, tentu saja. Dengan demikian, Anda dapat memesan poin berdasarkan waktu dalam spreadsheet seperti mode, dengan kolom {Waktu, X, Y}, dengan menambah waktu.

Berikut adalah contoh di mana unit GPS hampir menyelesaikan sirkuit berlawanan arah jarum jam:

Peta perjalanan

Poin-poin ini tidak diperoleh pada interval waktu yang sama. Karena itu tidak mungkin dari peta sendiri untuk memperkirakan kecepatan. (Namun, untuk membantu Anda memvisualisasikan perjalanan ini, saya memastikan untuk mengumpulkan nilai-nilai gps pada interval yang hampir sama, sehingga Anda dapat melihat bahwa perjalanan dimulai dengan cepat dan melambat pada dua titik menengah dan pada akhirnya.)

Karena Anda tertarik pada kecepatan, hitung jarak antara baris berturut-turut dan juga perbedaan waktu. Membagi jarak berdasarkan perbedaan waktu memberikan perkiraan kecepatan sesaat. Hanya itu yang ada untuk itu. Mari kita lihat plot estimasi tersebut terhadap waktu:

Plot kecepatan vs waktu

Titik merah memplot kecepatan sementara kurva abu-abu halus, hanya untuk memandu mata. Waktu kecepatan maksimum, dan kecepatan maksimum itu sendiri, jelas dari plot dan mudah diperoleh dari data sejauh ini jika Anda menggunakan spreadsheet atau fungsi ringkasan data sederhana dalam GIS. Namun, perkiraan kecepatan ini diduga karena titik-titik gps jelas memiliki beberapa kesalahan pengukuran di dalamnya.

Salah satu cara untuk mengatasi kesalahan pengukuran adalah dengan mengakumulasi jarak antara beberapa periode waktu dan menggunakannya untuk memperkirakan waktu. Misalnya, jika data {Perbedaan waktu, Jarak} yang sebelumnya dihitung adalah

d(Time) Distance
0.90        0.17
0.90        0.53
1.00        0.45
1.10        0.29
0.80        0.11

kemudian waktu yang berlalu dan jarak total selama dua periode waktu diperoleh dengan menambahkan setiap pasangan baris berturut-turut:

d(Time) Distance
1.80        0.70
1.90        0.98
2.10        0.74
1.90        0.40

Hitung ulang kecepatan untuk akumulasi waktu dan jarak.

Seseorang dapat melakukan perhitungan ini untuk sejumlah periode waktu, mencapai plot yang lebih mulus dan lebih dapat diandalkan dengan biaya rata-rata perkiraan kecepatan selama periode waktu yang lebih lama. Berikut adalah plot data yang sama yang dihitung untuk periode 3 dan 5, masing-masing:

Plot kecepatan vs waktu, perhitungan 3 interval

Plot kecepatan vs waktu, perhitungan 5 interval

Perhatikan bagaimana kecepatan maksimum berkurang dengan jumlah smoothing. Ini akan selalu terjadi. Tidak ada jawaban yang benar unik: seberapa banyak Anda memuluskan tergantung pada variabilitas dalam pengukuran dan pada periode waktu apa Anda ingin memperkirakan kecepatan. Dalam contoh ini, Anda dapat melaporkan kecepatan maksimum setinggi 2,5 (berdasarkan titik GPS berturut-turut), tetapi itu akan agak tidak dapat diandalkan karena kesalahan di lokasi GPS. Anda dapat melaporkan kecepatan maksimum serendah 2,1 berdasarkan kelancaran lima periode.


Ini adalah metode yang sederhana tetapi belum tentu yang terbaik. Jika kami menguraikan kesalahan lokasi GPS menjadi komponen di sepanjang jalur dan komponen lain yang tegak lurus dengan jalur, kami melihat bahwa komponen di sepanjang jalur tidak memengaruhi perkiraan total jarak yang dilalui (asalkan jalur tersebut memiliki sampel yang cukup baik: yaitu, Anda jangan "memotong sudut"). Komponen yang tegak lurus dengan peningkatan jalurjarak yang jelas. Ini berpotensi bias estimasi ke atas. Namun, ketika jarak tipikal antara pembacaan GPS besar dibandingkan dengan kesalahan jarak tipikal, biasnya kecil dan mungkin dikompensasi untuk goyangan kecil di jalur yang tidak ditangkap oleh urutan GPS (yaitu, beberapa sudut pemotongan adalah selalu dilakukan). Oleh karena itu mungkin tidak ada gunanya mengembangkan penaksir yang lebih canggih untuk mengatasi bias yang melekat ini, kecuali frekuensi pengambilan sampel GPS sangat rendah dibandingkan dengan frekuensi di mana jalur "goyah" atau kesalahan pengukuran GPS besar.

Sebagai catatan, kami dapat menunjukkan hasil yang benar dan benar , karena ini adalah data yang disimulasikan:

Plot kecepatan sebenarnya versus waktu

Membandingkan ini dengan plot sebelumnya menunjukkan bahwa dalam kasus khusus ini kecepatan maksimum baku melebih-lebihkan maksimum sebenarnya sedangkan maksimum kecepatan lima periode terlalu rendah.

Secara umum, ketika titik-titik GPS dikumpulkan dengan frekuensi tinggi, kecepatan baku maksimum kemungkinan akan terlalu tinggi: ia cenderung melebih-lebihkan maksimum sebenarnya. Untuk mengatakan lebih dari ini dalam contoh praktis apa pun akan memerlukan analisis statistik yang lebih lengkap tentang sifat dan ukuran kesalahan GPS, frekuensi pengumpulan GPS, dan tentang kekaburan jalur yang mendasarinya.


2

Ini bukan skrip atau algoritma yang jadi. Apa yang saya lakukan pada gambar di bawah ini menunjukkan kecepatan rata-rata (dalam km):

  1. Jalankan filter gpsbabel langsung pada file GPX.
  2. Konversikan file GPX menjadi poin raster di GRASS.
  3. Jalankan r.neighborsuntuk mendapatkan kecepatan rata-rata untuk jendela raster yang ditentukan.

kecepatan bersepeda rata-rata saya


Bisakah Anda mengklarifikasi bagaimana mungkin untuk mendapatkan kecepatan dari representasi raster dari urutan lokasi?
whuber

Anda dapat mensintesis informasi kecepatan dari trackpoint GPX menggunakan gpsbabel. gpsbabel.org/htmldoc-development/filter_track.html . Kemudian impor data ini sebagai titik vektor dan konversikan ke raster dalam GRASS. Saya menggunakan beberapa GPX pada gambar ini. Menggunakan r.neighbors, saya mendapatkan kecepatan rata-rata.
Maning

Terima kasih banyak atas penjelasannya. Tetapi, jika gpsbabel telah menghitung kecepatannya, mengapa Anda menggunakan r.neighbors? Bukankah itu berpotensi mencampur kecepatan di sepanjang satu rute dengan kecepatan di sepanjang rute lain yang cukup dekat di grid? Juga, kecepatan rata-rata bias ketika waktu pengumpulan GPS tidak merata. Misalnya, jika Anda melakukan perjalanan 60 meter dalam 60 detik, Anda telah berjalan satu meter per detik, tetapi jika dipecah menjadi 10 meter dalam 1 detik ditambah 50 meter dalam 59 detik (karena kesalahan posisi +9 m pada titik tengah), kecepatan rata-rata dihitung menjadi 5,4 m / s: perkiraan terlalu tinggi.
whuber

@whuber, kamu benar. Untuk peta ini, saya tidak mencari kecepatan individu tetapi kecepatan agregat melalui waktu. Semua trek saya dalam interval 1 detik.
Maning

+1 untuk solusi kreatif. (Saya suka mencari solusi raster untuk masalah vektor yang tampaknya, tetapi ada baiknya mengetahui keterbatasan mereka.)
whuber

1

Karena data GPS Anda tidak akurat, Anda hanya akan dapat memperkirakan kecepatan maksimum.

Anda dapat mencoba menghitungnya dengan menghitung kecepatan bukan pada segmen tetapi pada polyline (kecepatan rata-rata), untuk meminimalkan efek ketidakakuratan.

Sudahkah Anda mencoba membersihkan data Anda terlebih dahulu (Douglas-Peucker) agar hanya menyimpan poin yang paling relevan?


1
Douglas-Peucker tidak benar-benar membersihkan data - itu hanya menghilangkan titik ketika mencoba mempertahankan bentuk asli, jadi sebenarnya itu bisa membuat kesalahan terlihat lebih buruk.
JaakL
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.