Saya menggunakan OpenStreetMap dan jaringan jalan vektorialnya dan saya ingin menerapkan algoritma pencocokan peta.
Saat ini saya dapat, untuk setiap posisi GPS, untuk mengambil segmen jalan terdekat dan menghitung proyeksi posisi ini untuk segmen itu, seperti pada gambar ini (Pin merah adalah posisi GPS murni, berwarna biru pada segmen yang dipetakan dan dalam warna Hijau) posisi yang dipetakan):
Namun, karena kurangnya keakuratan GPS, terkadang posisi yang dipetakan melompat dari segmen ke segmen yang lain dan dapat memberikan beberapa posisi pemetaan yang tidak konsisten dari waktu ke waktu.
Algoritme saya saat ini sangat mendasar: dari posisi GPS murni, saya mendapatkan segmen terdekat dan memutuskan bahwa posisi yang cocok yang dipetakan ada pada yang ini. Saya tahu ini bisa sangat ditingkatkan.
Saya dapat membayangkan bahwa dengan mempertimbangkan arah kendaraan akan meningkatkan pencocokan peta tetapi apakah Anda tahu pendekatan lain yang memungkinkan saya meningkatkan pencocokan peta saya?
Saya mencari tautan, dan / atau perangkat lunak sumber terbuka?
Jawaban:
Memproyeksikan poin ke garis seperti yang sudah Anda lakukan dimungkinkan untuk dilakukan secara langsung di PostGIS. Saya menulis tentang beberapa waktu lalu, di sini
Tetapi untuk memecahkan masalah Anda ketika poin lebih dekat ke segmen yang salah daripada segmen yang tepat mungkin ini bisa menjadi pendekatan yang mungkin.
sumber
Setelah membaca Pertanyaan Anda, dan berbagai Jawaban, saya tertarik pada masalah ini. Setelah sedikit membaca tentang algoritma Pencocokan Peta, saya memahami yang berikut:
Untuk bacaan lebih lanjut, saya sarankan yang berikut:
sumber
Menjawab pertanyaan saya sendiri!
1- .pdf yang bagus Saya baru saja menemukan tentang subjek ini:
http://safari.ce.sharif.edu/file/2011-06-06/259/2009_An%20off-line%20map-matching%20algorithm%20for%20incomplete%20map%20databases.pdf
yang juga menautkan ke implementasi sumber terbuka C ++ dari pencocokan peta yang dijelaskan dalam dokumen: http://eden.dei.uc.pt/~camara/files/mgemma.zip
(yang ini pencocokan peta offline, pemahaman saya adalah bahwa itu menghitung peta posisi yang cocok dengan jalur WHOLE sebagai input dan tidak dapat melakukannya dengan cepat untuk setiap posisi).
2- Kemudian, saya baru saja membaca yang ini secara mendalam dan itu sangat bagus menurut saya: https://dspace.lboro.ac.uk/dspace-jspui/bitstream/2134/4860/1/velaga.pdf "Berkembang Algoritma Pencocokan Peta Topologi Berbasis Berat yang Ditingkatkan untuk Sistem Transportasi Cerdas "
Algoritma ini dijelaskan dengan jelas dan nilai penyesuaian berat juga disediakan dalam dokumen ini.
sumber
Ada banyak pekerjaan pada Pencocokan Peta, lihat makalah ini untuk survei singkat tentang beberapa pekerjaan yang cukup baru (sebelum 2007). Baru-baru ini, pendekatan berdasarkan Model Hidden Markov tampaknya berkinerja cukup baik dalam keadaan normal. Misalnya, lihat makalah ini dari 2009. Ide dan modelnya cukup sederhana dan tidak akan membuat Anda terlalu kesulitan untuk mengimplementasikannya bahkan jika Anda tidak terbiasa dengan HMM (dalam hal ini, jangan panik, ada banyak dari tutorial dan perkenalan online)
sumber
Metode ini juga disebut "penggabungan vektor". Ada halaman Wiki khusus ( http://wiki.openstreetmap.org/wiki/Conflation ) yang memberikan gambaran umum dan daftar paket perangkat lunak (Sumber Terbuka) untuk melakukan penggabungan vektor jalan seperti "JOSM conflation plugin", "penggabungan Potlatch 2," penggabungan Potlatch 2 alat "," RoadMatcher "(untuk OpenJUMP), dan lainnya.
sumber
Untuk algoritme Pencocokan Peta, tergantung apakah Anda memerlukan pemrosesan waktu nyata atau offline. Dalam kasus selanjutnya, algo yang canggih dapat memproses ~ 1000 poin per detik. Persyaratan memori tergantung pada cakupan saja. Kami telah berhasil memeras jaringan jalan OSM di planet ini sekitar 16 Gb untuk tujuan itu.
Selain itu, Anda perlu membedakan pencocokan peta dari inferensi jalur : ini adalah dua proses terpisah tergantung jika Anda memiliki data frekuensi tinggi atau rendah. Ketika Anda memiliki titik yang relatif sedikit (mis. 1 data setiap kilometer dalam konteks perkotaan), itu kesimpulan jalur karena biasanya ada beberapa asumsi yang harus dilakukan untuk menebak di mana perangkat bepergian. Path inference biasanya lebih sulit tetapi semakin sedikit masalah dengan perangkat modern / harga perolehan data.
Anda dapat memeriksa profil saya untuk API yang melakukan pencocokan peta langsung pada OSM: ia menggunakan pencocokan topologi dan berfungsi dengan baik dengan data mobil apung misalnya.
sumber
Strava Slide menjelaskan bagaimana kumulatif data trek melalui jaringan jalan dapat berperilaku seperti "lembah", dan bagaimana rute yang diusulkan akan "jatuh ke tempatnya" seperti seutas tali manik-manik.
sumber
Setelah menguji sebagian besar kerangka yang disebutkan sebelumnya saya menemukan Barefoot dan benar-benar dapat merekomendasikannya. Ini menggunakan model markov tersembunyi sebagai pendekatan pencocokan peta probabilistik (rincian dalam makalah mereka "Menempatkan mobil di peta" ) dan diimplementasikan di Jawa. Ini adalah open-source dan dikembangkan secara aktif oleh Departemen CarIT BMW.
sumber
Subjek disebut pencocokan peta. Tetapi sebagai perkiraan pertama yang sangat baik mungkin cukup baik untuk hanya mencari titik terdekat untuk setiap titik gps (tanpa koreksi menebak dengan cara yang benar).
Proyek Open Source saya bernama graphhopper bukanlah sesuatu yang berfungsi untuk iOS ( pembaruan : sekarang juga berfungsi di iOS), juga tidak memiliki aplikasi Android yang berfungsi penuh untuk apa yang Anda inginkan. Tapi Anda bisa menggunakan versi server untuk membangun aplikasi iOS atau menggunakan demo Android offline sebagai permulaan. Saya telah merilis algoritma pencocokan peta di sini , hanya sebuah prototipe kasar tetapi bekerja sangat baik.
sumber
Coba dan dapatkan beberapa data uji yang bagus. Gunakan tambahan trek logging GPS dengan akurasi yang lebih tinggi, selain titik-titik logging pada perangkat target Anda. Ini akan mengidentifikasi kesalahan dalam GPS dan data OSM yang mendasarinya. Mengetahui ambang batas yang masuk akal akan membuatnya lebih mudah untuk merancang algoritma.
sumber
Jika Anda dapat memperoleh data jalan untuk wilayah Anda, Anda mungkin tertarik dengan Pemotongan massal otomatis dengan FOSS
Bergantung pada apakah Anda ingin memplot data secara real time, atau Anda berencana melakukan beberapa postprocessing di PC Anda sesudahnya, GRASS mungkin bisa membantu.
sumber
Saya telah menemukan API yang mungkin hanya melakukan pekerjaan tanpa harus melalui upaya mengembangkan solusi sendiri segera.
Mereka menggunakan data OSM untuk melakukan pencocokan peta. Mereka juga memiliki halaman demo yang memungkinkan pengunggahan file GPX untuk melihat seberapa baik ini bekerja untuk Anda.
sumber
Anda tidak perlu meningkatkan kualitas data Anda. Menggunakan algoritma topologi dengan jaringan jalan di dalam memori akan meningkatkan kecocokan Anda secara signifikan. Periksa referensi: http://trb.metapress.com/content/p31485vw72645686
sumber