2013-03-25 4 views
0

Мне нужно проанализировать набор координат GPS в python. Мне нужно выяснить, что является самым частым местом. Учитывая точность данных GPS-данных, точность местоположений не очень высока. Трудно explan (и искать Infos на Google), поэтому пример:Python: Узнайте наиболее часто встречающиеся местоположения на множестве GPS-координат

  • Я езжу из дома на работу каждый день в течение 2-х месяцев
  • Я начинаю свой GPS логгер для каждой поездки и остановки в конце поездки
  • Иногда я иду куда-нибудь

Если я запускаю сценарий мне нужно анализировать координаты, где диски, созданные и остановленные, с радиусом расположения точности скажем, 20м, я выясню что самым частым местом является мой дом и моя работа (каждый с радиусом 20 м). Неважно, где я припарковал этот радиус.

Есть ли библиотека в python, которая может выполнять такие операции? Что вы порекомендуете?

Благодаря

+0

Чтобы уменьшить точность, я бы просто сбросил последние пару цифр. – CoffeeRain

+1

Довольно просто рассчитать расстояние между 2 точками на основе lat/long ... Это теоретическая вещь Пифагора.Учитывая ваше относительно небольшое количество координат (только для начала и остановки), просто выполните некоторые простые математические вычисления, не требующие библиотеки. – Endophage

+0

@ Эндофаг ... Вижу, не нужно учитывать кривизну Земли? – otmezger

ответ

0

Для подсчета наиболее часто местоположения, простой подход состоит в использовании только первые 3 цифры после latitdue/долготы десятичной запятой, или лучше раунд до 3 знаков после запятой.

В aequator:

4 цифры: 11 м
3 цифры 11оГО
2 цифры 1.1km
1 цифра 11.1km
0 цифра 111,111 км (расстояние между двумя меридианами): 40 000 000/360

Тогда вы можете использовать как хэш-таблицу, умножить ее на e, g 1000, чтобы избавиться от 3 десятичных знаков, и сохранить как java.awt.Point в хеш-таблице.

Есть лучшие решения, но это дает первое представление.

+0

Я не думаю, что это хорошая идея, потому что, если у меня есть точка между 2 "4 цифрами", она округляется неправильно – otmezger

+0

точка, которая расположена на границе этой трехзначной сетки, может падать в другую сетку. Но на раме 60 м - 100 м, это нормально, тогда в худшем случае, если ваше место для парковки меняется, у вас есть две горячие точки вокруг вашего дома. Все другие решения требуют высоких специальных знаний о геопространственных знаниях. (Например, используйте PMR-quadtree и т. Д.). Вы можете прочитать Hana Samet: Основы многомерных и метрических поисковых структур. – AlexWien

+0

Обновите ответ, чтобы округлить до трех цифр. (Подумайте о том, что душа, как шахматная доска, и ваш трек, которым вы управляете, например, хлебные крошки, вы увеличиваете графское кольцо каждого поля борада в шахматы, когда на нем находится хлебная крошка.) – AlexWien

1

Если вас больше всего интересуют места, которые вы отправляете, вы можете подумать, что каждый диск принимает первую и последнюю точки, а только принимает промежуточные точки, если вы там больше, чем x раз. Возможно, если ваша средняя скорость в этот момент за последние k datapoints меньше определенного порога. Это должно значительно облегчить применение некоторых методов кластеризации (например, k-means clustering).

Что-то, что может пригодиться, это использовать approximate nearest neighbors, чтобы найти для любой заданной точки коллекцию точек, которые относительно близки к ней.

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

Смежные вопросы