Приближение координат GPS для точки из n ожидаемых местоположений


9

Я пытаюсь найти координаты моей точки внимания (точка X, отмечена синим цветом). Я использовал устройство GPS своего автомобиля, чтобы собирать координаты в зависимости от того, где я припарковал свой автомобиль каждый раз, когда посещал точку x. Так что после выполнения этого упражнения в течение 16 дней мне удалось получить 16 наборов координат, распределенных вокруг моей точки внимания.

После нанесения этих координат на карту я заметил следующее: дважды или трижды из десяти мое устройство GPS выдавало неправильный набор координат, который оказался тихим вдали от точки X. Также из-за пробок иногда не в состоянии припарковаться близко к точке x и, следовательно, и в этом случае полученные координаты находятся далеко от точки X.

Проблема: из 16 полученных наборов координат, какой процесс я использую, чтобы сузить до одного набора координат, который находится в непосредственной близости от моей точки внимания (точка X)?

Изображение поддерживает описание проблемы выше


у вас есть информация о PDOP, предоставленная вашим устройством GPS? это может помочь вам определить ненадежные моменты.
Radouxju

Я бы поставил это в ответах, но я не уверен, что это именно то, что вы пытаетесь сделать, но отбрасывание выбросов и использование корректировки наименьших квадратов, я считаю, может решить вашу проблему. utdallas.edu/~aiken/GPSCLASS/ch11.pdf
ed.hank

Ответы:


13

Один из способов решения этой интересной проблемы состоит в том, чтобы рассматривать ее как надежную оценку центра двумерного распределения точек. (Хорошо известное) решение состоит в том, чтобы очистить выпуклые корпуса, пока ничего не останется . Центроид последнего непустого корпуса находит центр.

(Это относится к багплоту . Для получения дополнительной информации, поиск в Интернете «выпуклый пилинг корпуса многофакторный.»)

фигура

Результат для 16 иллюстрированных точек показан как центральный треугольник на этой карте. Три окружающих многоугольника показывают последовательные выпуклые корпуса. Пять отдаленных точек (30% от общего количества!) Были удалены в первые два шага.


Пример был вычислен в R. Сам алгоритм реализован в среднем блоке «выпуклый пилинг». Он использует встроенную chullподпрограмму, которая возвращает индексы точек на корпусе. Эти точки удаляются с помощью отрицательного индексационного выражения xy[-hull, ]. Это повторяется до тех пор, пока последние точки не будут удалены. На последнем шаге центроид вычисляется путем усреднения координат.

Обратите внимание, что во многих случаях проецирование данных даже не требуется: выпуклые корпуса не изменятся, если исходные элементы не будут охватывать антимеридиан (+/- 180 градусов по долготе), либо полюс, либо настолько обширными, что кривизна сегментов между ними будет Сделать разницу. (Даже тогда искривление не будет иметь большого значения, потому что шелушение все равно будет сходиться к центральной точке.)

#
# Project the data.
#
dy <- c(8,7,5,10,7,17,19,19,21,22,22,22,24,24,26,26)
dx <- c(66,67,66,89,89,79,78,76,75,81,78,77,75,80,77,83)
lat <- (28.702 + dy/1e5) / 180 * pi
lon <- (77.103 + dx/1e5) / 180 * pi
y <- dy
x <- cos(mean(lat)) * dx
#
# Convex peeling.
#
xy <- cbind(x, y)
while(TRUE) {
  hull <- chull(xy)
  if (length(hull) < nrow(xy)) {
    xy <- xy[-hull, ]
  } else {
    xy.0 <- matrix(apply(xy, 2, mean), 1, 2)
    break
  }
}
#
# Plot the data `xy` and the solution `xy.0`.
#
plot(range(x), range(y), type="n", asp=1)
points(x, y, pch=21, bg="#a01010")
points(xy.0, pch=24, cex=1.2, bg="#404080")

Ницца. Одна мысль: было бы целесообразно отбросить любые вероятные плохие данные перед вычислением корпусов - основываясь исключительно на том, как они были собраны (неспособность парковаться рядом), но НЕ на основе проверки данных?
Симбамангу

@ Симба Это разумный подход.
whuber

Если у нас есть несколько таких сайтов, каждый с разным количеством наблюдений (например, у этого было 16), в файле Excel, как бы мы изменили код для этого.
user3587184

@ user3587184 В идеале, вы не будете делать работу в Excel. Если нужно, то напишите макрос, чтобы перебрать группы наблюдений.
whuber
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.