У меня есть база данных точек GPS. Там нет никаких треков, только точки. Мне нужно вычислять какое-то значение для каждых 100 метров, но иногда GPS давал неправильные координаты, которые находятся далеко от реальных точек GPS, и вместо вычисления значений для небольшого квадрата я должен рассчитывать его для действительно большой прямоугольной области.
Какой лучший алгоритм для фильтрации неправильных точек GPS?
Я сделал скриншот, чтобы помочь понять:
Ответы:
Запустите Anselin Local Moran's I против очков и выбросьте что-нибудь с z-счетом ниже -1,96. Это статистический метод определения пространственных выбросов. Для этого вы должны убедиться, что все точки имеют значение, относящееся к их пространственному положению.
Но, проверяя инструменты в 10.1 после комментариев Уобера, я понимаю, что если вы используете ArcGIS 10.1, доступен инструмент группового анализа, который действительно является тем, чем вы хотите заниматься.
Я думаю, вы хотели бы провести групповой анализ с пространственным ограничением Триангуляции Делоне. Это препятствие заключается в том, что вам нужно иметь количество групп разбиения, равное или превышающее количество отключенных групп (если какие-либо выбросы являются естественными соседями друг другу). В противном случае выбросы, не имеющие естественных соседей, не получат группу из анализа группирования.
Исходя из этого, я думаю, что триангуляция Делоне может быть источником алгоритма фильтра, но я пока не уверен.
Еще одно обновление: после поиска в Partition.py, скрипте, который запускает инструмент группового анализа, я думаю, что можно использовать алгоритм там для отключенных групп в сочетании с частью NoNeighbors, хотя у меня возникают проблемы с поиском этой части скрипт.
источник
Это может помочь получить список выбросов:
Здесь point_id будет первичным ключом в вашей таблице баллов. Функция расстояния найдет точки, где ближайший превышает 10000 метров. (Вы можете, конечно, поставить любое значение, соответствующее)
Если вышеперечисленное работает, тогда измените на УДАЛЕНИЕ, что-то вроде:
источник
Я постараюсь дать более практичный ответ, чтобы помочь вам выполнить работу. (извиняюсь, если вы ищете обсуждение алгоритмов)
Сценарий 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, или любое другое лучшее решение есть), а затем повторить сбор данных.
Если плохие данные не имеют значения, просто используйте их и игнорируйте ошибки.
источник