間違ったGPSポイントをフィルタリングする方法は?


11

GPSポイントのデータベースがあります。トラックはなく、ポイントのみがあります。100メートルごとに値を計算する必要がありますが、GPSが実際のGPSポイントから遠く離れた誤った座標を与えることがあり、小さな正方形の値を計算する代わりに、本当に大きな長方形の領域の値を計算する必要があります。

間違ったGPSポイントをフィルタリングするための最適なアルゴリズムは何ですか?

理解を助けるためにスクリーンショットを作成しました:

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


1
このような外れ値を検出する基準として、移動フレームの小さな倍数(最後の10ポイントなど)のポイント間の平均距離を使用します。
lynxlynxlynx

あなたの方法をより詳細に説明できますか?私はポイントのデータベースを持っています、それらはどんな種類でもソートされません。したがって、距離は2メートルまたは500メートルになります。しかし、いくつかのポイントは非常に遠いです。あなたが理解できるようにスクリーンショット
-smirnoffs

2
そうですか。この場合、私のアプローチはあまり良くありません。代わりに、各ポイントの最も近い隣接ポイントを計算し、そこの外れ値を取り除きます。
lynxlynxlynx

2
@lynxが提案する2番目のアプローチは、特に外れ値の検出方法が優れている場合に、サンプルデータでうまく機能します。オプションについては、統計サイトで外れ値に関する質問をご覧ください。たとえば、多くの創造的な(そして有効な)アプローチがstats.stackexchange.com/questions/213で提案されています
whuber

回答:


3

Anselin Local Moran's Iをポイントに対して実行し、-1.96未満のZスコアを持つものをすべて捨てます。これは、空間的な外れ値を見つけるための統計的な方法です。これを行うには、すべてのポイントがその空間位置に関連する値を持つようにする必要があります。

しかし、whuberのコメントの後に10.1のツールをチェックすると、ArcGIS 10.1を使用している場合、グループ化分析ツールが利用可能であることがわかります。

私は、あなたがDelaunay Triangulation空間制約でグループ化分析をしたいと思うだろう。ここで障害となるのは、切断されたグループの数以上のパーティショングループの数が必要なことです(外れ値のいずれかが互いに自然に隣接している場合)。そうしないと、自然な近傍がない外れ値は、グループ化分析からグループを見つけられません。

それに基づいて、Delauneyの三角形分割がフィルターアルゴリズムのソースである可能性があると思いますが、まだわかりません。

別の更新:グループ化分析ツールを実行するスクリプトであるPartition.pyを掘り下げた後、NoNeighbors部分と組み合わせて切断されたグループにアルゴリズムを使用することは可能だと思いますが、脚本。


(-1)これは、何があっても40ポイントに約1ポイントを捨てることが保証されています。外れ値の検出にこのようなテストを使用することはお勧めできません。
whuber

1
純粋な空間的外れ値(空間的外れ値が存在する場合)をテストする場合は、そうではありません。空間的外れ値が存在しない場合、その問題が発生しますが、存在する場合は、それらの外れ値のみがこのような低いZスコアに分類されます。それはすべて、ポイントの空間分布に依存します。
blord-castillo

1
ほとんど:外れ値自体がクラスターを形成する場合、それらを完全に検出できない可能性があります。(nullまたは明らかに悪い座標が(0,0)に自動的にマッピングされる状況を考慮してください。)コメントは、外れ値を見つけることはトリッキーであり、外れ値の性質に依存することを示しています。それらがどれだけ離れているか。クラスター化できるかどうか。など。一般的な原則として、分布の仮定を行う統計(このLocal Moran's Iの使用など)は、堅牢でノンパラメトリックな統計と同様に機能しません。
whuber

2
「良い」GPSポイントがあり、バウンディングボックスの隅に同じ数の「悪い」GPSポイントが積み重なっている特定の理論上の問題を考えていました。「良い」ポイントの関心領域の知識がなければ、どのセットが「良い」とどのセットが「悪い」かを統計的に分離することはできないと思います。これは、関心のある領域を手動で指定する必要がある問題かもしれません。
blord-castillo

2
それは正しいです。二峰性の多変量分布を記述しました。このような場合に通常行われるのは、混合モデルの推定またはクラスターアルゴリズムの適用です。その結果、混合/クラスターコンポーネントを分離しますが、それらのいずれも "外れ値"として指定せずに、その義務はユーザーに委ねなければなりません。
whuber

3

これは、外れ値のリストを取得するのに役立つ場合があります。

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

ここでは、point_idがポイントテーブルの主キーになります。距離関数は、最も近い距離が10000メートルを超えるポイントを検索します。(もちろん、適切な値を入力できます)

上記が機能する場合は、次のようなDELETEステートメントに変更します。

DELETE FROM points WHERE point_id IN (
-- SELECT as above
SELECT ....
);

1
1.ポイントはソートされません。2.エラーが10000メートル未満になる場合はどうなりますか?たとえば、150メートルですか?
スミノフ

1
たぶん理解できませんでした。あなたの画像から、ほとんどすべてのポイントが1つのエリアに集まっており、非常に少数のポイントが非常に遠くにあることがわかります。それは問題ではありませんか?ある地点が別の地点からわずか150メートルしか離れていない場合、それが外れ値であることをどうやって知るのですか?
ミカ

1

私はあなたが仕事を成し遂げるのを助けるために、より実用的な答えを提供しようとします。(アルゴリズムに関する議論をお探しの場合は申し訳ありません)

シナリオ1:「GPSポイント」に言及しているので、元のGPSウェイポイントにアクセスできれば、仕事はずっと簡単になります。HDOP / VDOPが高いポイントや、視界にあるサテライトの数が多いポイントを捨てることができます-これは元々エラーの原因でした。gpsbabelのような無料のツールには、このようなフィルターが組み込まれています。http://www.gpsbabel.org/htmldoc-development/Data_Filters.html

シナリオ2:単にポイントのセットがあります。問題は空間的な外れ値の検出になります。この分野では多くの研究があり、このテーマに関する多くの論文がウェブ検索で見られます。データをクリーンアップする場合は、GRASSのv.outlierアルゴリズムを使用できます。これは、共有したスクリーンショットに基づいてケースで機能するはずです。http://grass.osgeo.org/gdp/html_grass63/v.outlier.html


コメントありがとうございます。残念ながら、座標しかありません。GPSは単なる座標のソースであり、元のGPSトラックにはアクセスできません。
スミノフ

-2

ジャンクデータがあると思います。現実的には、データの一部が間違っているという事実に関心があり、他の何らかの要因を使用してすべての間違ったポイントを確実に特定できない場合、分析にいくつかの不正なデータが含まれることになります。

それが重要な場合は、おそらくすべてを投げて、根本原因を解明する(例:悪いGPSポイントがマルチパスからのものである)、その根本原因に対処する(例:チョークアンテナを追加する、GPSの種類を改善するなど) is)、データ収集をやり直します。

不良データが問題にならない場合は、それを使用してエラーを無視してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.