Saya memiliki basis data titik GPS. Tidak ada trek, hanya titik. Saya perlu menghitung beberapa nilai untuk setiap 100 meter, tetapi kadang-kadang GPS memberikan koordinat yang salah yang terletak jauh dari titik GPS yang sebenarnya, dan alih-alih menghitung nilai untuk kotak kecil, saya harus menghitungnya untuk area persegi panjang yang sangat besar.
Apa algoritma terbaik untuk menyaring titik GPS yang salah?
Saya membuat tangkapan layar untuk membantu memahami:
Jawaban:
Jalankan Anselin Local Moran's I melawan poin dan membuang apa pun dengan skor-z di bawah -1,96. Itu adalah metode statistik untuk mencari outlier spasial. Anda harus memastikan bahwa semua titik memiliki nilai terkait dengan posisi spasial mereka untuk melakukan itu.
Tetapi dalam memeriksa alat di 10.1 setelah komentar whuber, saya menyadari bahwa jika Anda menggunakan ArcGIS 10.1, alat analisis pengelompokan tersedia, yang benar-benar ingin Anda lakukan.
Saya pikir Anda ingin melakukan analisis pengelompokan dengan batasan spasial Delaunay Triangulation. Hambatan di sini adalah bahwa Anda harus memiliki sejumlah grup partisi yang sama atau lebih besar dari jumlah grup yang terputus (jika ada outlier yang merupakan tetangga alami satu sama lain). Jika tidak, pencilan yang tidak memiliki tetangga alami akan muncul tanpa kelompok dari analisis pengelompokan.
Berdasarkan itu, saya pikir triangulasi Delauney mungkin menjadi sumber algoritma filter, tapi saya belum yakin.
Pembaruan lain: Setelah menggali ke Partition.py, skrip yang menjalankan alat analisis pengelompokan, saya pikir mungkin untuk menggunakan algoritma di sana untuk grup terputus yang dikombinasikan dengan bagian NoNeighbors, meskipun saya mengalami kesulitan menggali bagian dari naskah.
sumber
Ini mungkin membantu untuk mendapatkan daftar outlier:
Di sini, point_id akan menjadi kunci utama dalam tabel poin Anda. Fungsi jarak akan menemukan titik di mana yang terdekat lebih besar dari 10.000 meter. (Anda tentu saja dapat memberikan nilai yang sesuai)
Jika cara di atas berfungsi, ubah ke statemen DELETE, seperti:
sumber
Saya akan mencoba memberikan jawaban yang lebih praktis untuk membantu Anda menyelesaikan pekerjaan. (permintaan maaf jika Anda mencari diskusi tentang algoritma)
Skenario 1: Anda menyebutkan 'titik GPS', jadi jika Anda memiliki akses ke titik arah GPS asli, pekerjaan menjadi lebih mudah. Anda dapat membuang poin dengan HDOP / VDOP tinggi atau jumlah satelit yang terlihat - yang akan menyebabkan kesalahan pada awalnya. Alat gratis seperti gpsbabel memiliki filter seperti itu. http://www.gpsbabel.org/htmldoc-development/Data_Filters.html
Skenario 2: Anda hanya memiliki satu set poin. Masalahnya kemudian menjadi mendeteksi outlier spasial. Ada banyak penelitian di bidang ini dan saya melihat banyak makalah tentang hal ini dari pencarian web. Jika Anda ingin membersihkan data Anda, Anda dapat menggunakan algoritma GRASS v.outlier yang seharusnya bekerja dalam case Anda berdasarkan screenshot yang Anda bagikan. http://grass.osgeo.org/gdp/html_grass63/v.outlier.html
sumber
Saya pikir Anda punya data sampah. Secara realistis, jika Anda peduli pada fakta bahwa beberapa data salah, dan Anda tidak dapat secara andal mengidentifikasi setiap titik yang salah menggunakan beberapa faktor lain, maka Anda akan memiliki beberapa data buruk dalam analisis Anda.
Jika itu penting, maka Anda mungkin harus mempertimbangkan untuk membuang semuanya, mencari tahu penyebab root (mis. Titik GPS buruk berasal dari multipath), mengatasi penyebab root (misalnya menambahkan antena choke, atau jenis GPS yang lebih baik, atau apa pun perbaikan terbaik adalah), dan kemudian mengulangi pengumpulan data.
Jika data buruk tidak masalah, maka gunakan saja dan abaikan kesalahannya.
sumber