Более

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

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


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

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

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


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

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

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


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

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

# # Спроецируйте данные. # 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 # # Выпуклое отслаивание. # xy <- cbind (x, y) while (TRUE) {hull <- chull (xy) if (length (hull) 

Смотреть видео: Cum se introduc punctele intermediare Igo Primo