GPS-слежение в режиме реального времени

Я пытаюсь создать устройство GPS-слежения в реальном времени с помощью python().

Особенности

у меня есть 10 фиксированных мест

loc0 = (lat0,lon0)
loc1 = (lat1,lon1)
loc2 = (lat2,lon2)
loc3 = (lat3,lon3)
loc4 = (lat4,lon4)
loc5 = (lat5,lon5)
loc6 = (lat6,lon6)
loc7 = (lat7,lon7)
loc8 = (lat8,lon8)
loc9 = (lat9,lon9)

моя текущая позиция

locCurrent = (latCurrent,lonCurrent)

код для расчета расстояний

def haversine(lon1, lat1, lon2, lat2):
    """
    Calculate the great circle distance between two points 
    on the earth (specified in decimal degrees)
    """
    # convert decimal degrees to radians 
    lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
    # haversine formula 
    dlon = lon2 - lon1 
    dlat = lat2 - lat1 
    a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
    c = 2 * asin(sqrt(a)) 
    km = 6367 * c
    return km 

сомневаться

1.) как я должен активировать функцию, такую ​​как отправить электронное письмо или SMS, эффективно, когда расстояние меньше, скажем, 5 км (один из возможных способов - запустить бесконечный цикл while и проверить его на расстоянии (здесь 5 км) , но это не очень эффективно)

2.) который является наиболее предпочтительным языком, кроме python, для выполнения того же

пожалуйста, предложите несколько документированных руководств по этому же вопросу, заранее спасибо


person Abhimanyu    schedule 10.09.2012    source источник
comment
это для запуска на телефоне или как? или центральный сервер? или ПК? или плата ардуино? как вы получаете свои значения? не могли бы вы просто выполнить задание cron или что-то в этом роде?   -  person Joran Beasley    schedule 10.09.2012
comment
я только начал планировать свой проект. И я планирую в конечном итоге запустить его на центральном сервере, но на данный момент у меня есть OSX, и что касается информации о местоположении, я видел несколько примеров для подключения к устройству GPS через последовательные порты. .Мне нужно получить правильную информацию и направление для начала, не могли бы вы предложить мне несколько руководств по тому же самому   -  person Abhimanyu    schedule 10.09.2012
comment
если вы получаете свои данные из последовательного порта, вам нужно будет просто опросить его непрерывно, поэтому вы в основном смотрите на бесконечный цикл ... если это телефонное приложение, которое будет общаться с центральным сервером, вы будете получать запросы от приложения и не будет необходимости в бесконечном цикле... как только вы получите свои очки, вы можете просто нанести их на карту Google Maps API или что-то в этом роде.   -  person Joran Beasley    schedule 10.09.2012
comment
также я бы не стал обязательно делать это на основе расстояния ... скорее обновляйте каждые несколько минут, чтобы вы могли показывать фактические точки   -  person Joran Beasley    schedule 10.09.2012
comment
Если вы подключите GPS на сервере, как может измениться расстояние от ваших 10 фиксированных позиций? Ваш сервер переезжает?   -  person    schedule 10.09.2012


Ответы (1)


Если вы планируете постоянно собирать данные GPS через последовательный порт, присмотритесь к Twisted Server (реактор поддерживает события с последовательных портов) http://twistedmatrix.com/trac/ Есть пример, который постоянно получает позицию GPS по серийному номеру - см. gpsfix.py на этой странице http://twistedmatrix.com/documents/current/core/examples/ . Это может быть не то, что вам нужно, но это хорошая отправная точка, которая позволит вам оценить этот подход с некоторым рабочим кодом.

person Tim Hoffman    schedule 10.09.2012
comment
каковы другие способы сбора данных, например, что, если я установим GPS в свою машину и захочу отслеживать ее местоположение, и если она, скажем, в 5 км от фиксированного местоположения, она вызовет какое-то действие, спасибо - person Abhimanyu; 10.09.2012