Bagaimana cara memfilter titik GPS yang salah?

11

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:

! [http://content.screencast.com/users/smirnoffs/folders/Jing/media/94624331-db6a-4171-bed9-e2183f953a1d/gps_error.png]

smirnoffs
sumber
1
Saya akan menggunakan kelipatan kecil dari frame bergerak (katakanlah 10 poin terakhir) jarak rata-rata antara poin sebagai kriteria untuk mendeteksi outlier tersebut.
lynxlynxlynx
Bisakah Anda menggambarkan metode Anda lebih detail? Saya memiliki basis data poin, mereka tidak diurutkan dalam bentuk apa pun. Jadi jaraknya bisa 2 meter atau 500 meter. Tetapi beberapa poin sangat jauh. Saya membuat tangkapan layar untuk membantu Anda memahami
smirnoffs
2
Saya melihat. Dalam hal ini pendekatan saya tidak begitu baik. Sebaliknya saya akan menghitung titik tetangga terdekat untuk setiap titik dan kemudian mencukur outlier di sana.
lynxlynxlynx
2
Pendekatan kedua yang disarankan oleh @lynx akan bekerja dengan baik dengan data sampel, terutama ketika metode deteksi outlier adalah yang baik. Lihat pertanyaan tentang pencilan di situs statistik kami untuk opsi. Misalnya, banyak pendekatan kreatif (dan valid) disarankan di stats.stackexchange.com/questions/213 .
whuber

Jawaban:

3

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.

tuan-castillo
sumber
(-1) Ini dijamin untuk membuang sekitar 1 dalam 40 poin, apa pun yang terjadi. Tidak disarankan untuk menggunakan tes semacam itu untuk deteksi outlier.
whuber
1
Itu tidak benar ketika pengujian untuk outlier spasial murni -jika outlier spasial ada. Jika outlier spasial tidak ada, maka Anda akan memiliki masalah itu, tetapi jika mereka ada maka hanya outlier yang akan jatuh ke dalam skor-z yang rendah. Itu semua tergantung pada distribusi spasial dari titik-titik.
blord-castillo
1
Hampir: jika outlier itu sendiri membentuk sebuah cluster, Anda mungkin gagal mendeteksinya sama sekali. (Pertimbangkan suatu situasi di mana koordinat nol atau yang jelas buruk dipetakan ke (0,0) secara otomatis.) Komentar Anda menunjukkan bahwa mencari pencilan bisa rumit dan tergantung pada sifat pencilan: apakah ada satu atau banyak; seberapa jauh mereka bisa; apakah mereka dapat berkelompok; dll. Sebagai prinsip umum, statistik yang membuat asumsi distribusi (seperti penggunaan I Moran Lokal ini) tidak berfungsi sebaik statistik yang kuat dan non-parametrik.
whuber
2
Saya sedang mempertimbangkan masalah teoretis tertentu, di mana Anda memiliki titik-titik GPS "baik" dan Anda memiliki jumlah titik-titik GPS "buruk" yang sama yang ditumpuk satu sama lain di sudut yang jauh dari kotak pembatas. Tanpa pengetahuan tentang bidang yang menarik untuk poin "baik", saya tidak berpikir Anda dapat secara statistik memisahkan set mana yang "baik" dan set mana yang "buruk". Ini mungkin masalah yang membutuhkan penunjukan manual bidang yang diminati.
blord-castillo
2
Itu benar: Anda telah menggambarkan distribusi multivariat bimodal. Apa yang biasanya dilakukan dalam kasus-kasus seperti itu adalah estimasi model campuran atau penerapan algoritma kluster. Hasilnya adalah untuk memisahkan komponen campuran / cluster tetapi tanpa menunjuk salah satu dari mereka sebagai "outliers:" bahwa tugas harus jatuh ke tangan pengguna.
whuber
3

Ini mungkin membantu untuk mendapatkan daftar outlier:

SELECT p1.point_id 
FROM p1 AS points, p2 AS points
WHERE p1.point_id <> p2.point_id AND
ST_Distance(p1.geom, p2.geom) > 10000

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:

DELETE FROM points WHERE point_id IN (
-- SELECT as above
SELECT ....
);
Micha
sumber
1
1. Poin tidak diurutkan. 2. Bagaimana jika kesalahan akan lebih rendah dari 10.000 meter? Misalnya 150 meter?
smirnoffs
1
Mungkin saya tidak mengerti. Dari gambar Anda, saya melihat bahwa hampir semua titik dikelompokkan dalam satu area, dan jumlah yang sangat kecil sangat jauh. Bukankah itu masalahnya? Jika suatu titik hanya berjarak 150 meter dari yang lain, bagaimana Anda tahu itu outlier?
Micha
1

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

spatialthoughts
sumber
Terima kasih atas komentarnya. Sayangnya saya hanya punya koordinat. GPS hanyalah sumber koordinat dan saya tidak memiliki akses ke trek GPS asli.
smirnoffs
-2

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.

BradHards
sumber