Как отфильтровать неправильные точки 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, будет хорошо работать с образцами данных, особенно когда хороший метод обнаружения выбросов. Смотрите вопросы о выбросах на нашем сайте статистики для вариантов. Например, многие творческие (и действительные) подходы предлагаются по адресу stats.stackexchange.com/questions/213 .
whuber

Ответы:


3

Запустите Anselin Local Moran's I против очков и выбросьте что-нибудь с z-счетом ниже -1,96. Это статистический метод определения пространственных выбросов. Для этого вы должны убедиться, что все точки имеют значение, относящееся к их пространственному положению.

Но, проверяя инструменты в 10.1 после комментариев Уобера, я понимаю, что если вы используете ArcGIS 10.1, доступен инструмент группового анализа, который действительно является тем, чем вы хотите заниматься.

Я думаю, вы хотели бы провести групповой анализ с пространственным ограничением Триангуляции Делоне. Это препятствие заключается в том, что вам нужно иметь количество групп разбиения, равное или превышающее количество отключенных групп (если какие-либо выбросы являются естественными соседями друг другу). В противном случае выбросы, не имеющие естественных соседей, не получат группу из анализа группирования.

Исходя из этого, я думаю, что триангуляция Делоне может быть источником алгоритма фильтра, но я пока не уверен.

Еще одно обновление: после поиска в Partition.py, скрипте, который запускает инструмент группового анализа, я думаю, что можно использовать алгоритм там для отключенных групп в сочетании с частью NoNeighbors, хотя у меня возникают проблемы с поиском этой части скрипт.


(-1) Это гарантированно отбросит примерно 1 из 40 пунктов, несмотря ни на что. Не рекомендуется использовать любой такой тест для обнаружения выбросов.
whuber

1
Это не так, когда тестирование для чисто пространственных выбросов, если существуют пространственные выбросы. Если пространственные выбросы не существуют, то у вас возникнет эта проблема, но если они существуют, то только такие выбросы должны попадать в такой низкий z-показатель. Все зависит от пространственного распределения точек.
blord-castillo

1
Почти: если сами выбросы образуют кластер, вы можете вообще не обнаружить их. (Рассмотрим ситуацию, когда нулевые или явно неправильные координаты сопоставляются с (0,0) автоматически.) Ваш комментарий показывает, что поиск выбросов может быть сложным и зависит от характера выбросов: может ли быть один или несколько; как далеко они могут быть; могут ли они объединяться; и т. д. Как общий принцип, статистика, которая делает предположения о распределении (например, это использование Локального Морана 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 FROM points WHERE point_id IN (
-- SELECT as above
SELECT ....
);

1
1. Точки не отсортированы. 2. Что если ошибка будет ниже 10000 метров? Например 150 метров?
Smirnoffs

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-трекам.
Smirnoffs

-2

Я думаю, что у вас есть нежелательные данные. На самом деле, если вам небезразличен тот факт, что некоторые данные неверны, и вы не можете надежно идентифицировать каждую неправильную точку, используя какой-либо другой фактор, тогда у вас в анализе будут плохие данные.

Если это имеет значение, то вам, вероятно, следует подумать о том, чтобы бросить все, выяснить основную причину (например, плохие точки GPS из-за многолучевости), устранить эту основную причину (например, добавить дроссельную антенну, или лучший тип GPS, или любое другое лучшее решение есть), а затем повторить сбор данных.

Если плохие данные не имеют значения, просто используйте их и игнорируйте ошибки.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.