Saya perlu menemukan algoritma atau metode yang dapat mendeteksi latitude
longitude
titik outlier dalam lintasan selama post-processing , yang kemudian dapat diperbaiki (dibawa kembali ke lintasan lintasan berdasarkan tetangganya).
Sebagai contoh dari jenis outlier yang ingin saya deteksi dan perbaiki, saya telah melampirkan gambar yang menunjukkan:
Saya telah mencoba menggunakan filter Kalman tanpa wewangian untuk memuluskan data sebaik mungkin, tetapi ini tampaknya tidak bekerja cukup efektif untuk outlier yang lebih ekstrem (data mentah berwarna biru, data halus dalam warna merah):
UKF saya mungkin tidak dikalibrasi dengan benar (tapi saya cukup yakin itu).
Lintasan adalah orang-orang pejalan kaki, pelari, pengendara sepeda - gerakan bertenaga manusia yang dapat memulai dan berhenti, tetapi tidak secara drastis mengubah kecepatan atau posisi yang cepat atau tiba-tiba.
Solusi yang tidak bergantung pada data waktu (dan hanya pada data posisi) akan sangat berguna (karena data yang sedang diproses mungkin tidak selalu berisi data waktu). Namun, saya sadar betapa tidak mungkin solusi semacam ini ada, jadi saya sama senangnya memiliki solusi apa pun!
Idealnya, solusi akan mendeteksi pencilan sehingga dapat diperbaiki, menghasilkan lintasan yang diperbaiki:
Sumber yang telah saya pilah:
Smooth GPS data
- /programming/1134579/smooth-gps-dataCommon GPS and Geospatial Tracking Challenges and Solutions
- http://www.toptal.com/gis/adventures-in-gps-track-analytics-a-geospatial-primer (solusi tampaknya kehilangan ketepatan data)Algoritma apa yang harus saya gunakan untuk menghapus pencilan dalam data jejak?
Algoritma yang saya gunakan.
Seperti yang dapat dilihat, itu mungkin memotong sudut pada tikungan tajam.
Saya memiliki implementasi python ArcGIS dari algoritma di atas, ia menggunakan modul networkx. Beri tahu saya jika ini menarik dan saya akan memperbarui jawaban saya dengan skrip
MEMPERBARUI:
sumber
Satu ide adalah membuat skrip yang mencantumkan sudut (dan mungkin juga panjangnya) dari setiap segmen jalur Anda. Sekarang Anda dapat membandingkan nilai setiap segmen dengan tetangga langsungnya (dan mungkin tetangga kedua juga untuk meningkatkan akurasi) dan memilih semua titik di mana nilainya melebihi nilai threashold yang diberikan. Akhirnya cukup hapus poin dari jalur Anda.
sumber
Juga patut dilihat adalah metode Median-5.
Setiap koordinat x (atau y) diatur ke median dari nilai 5 x (atau y) di sekitarnya secara berurutan (yaitu sendiri, dua nilai sebelumnya dan dua nilai berikutnya).
misal x3 = median (x1, x2, x3, x4, x5) y3 = median (y1, y2, y3, y4, y5) dll.
Metode cepat dan juga mudah digunakan pada streaming data.
sumber
Ada beberapa data yang baik dalam pertanyaan / jawaban ini.
Padahal itu semua tergantung pada bagaimana poin Anda dikelompokkan pada apa yang akan / tidak akan berfungsi. Anda harus berhati-hati pada poin yang tersebar tetapi tidak outlier.
sumber
Anda dapat mengimpor data Anda ke excel atau menggunakan panda dan bendera dan atau menghapus semua jarak dari titik sebelumnya yang melebihi beberapa ambang batas jarak yang tidak realistis.
sumber