Поиск подхода к решению задачи
Добавлено: 06 май 2013, 14:07
Добрый день!
Передо мной стоит задача написания программы, которая по данным, полученным с GPS навигатора, выполняла бы следующие действия:
1. Отображала траекторию пути замкнутую на первую точку.
2. Считала площадь получившейся плоской фигуры.
Из постановки задачи следует, что мне потребуется преобразовать широту и долготу (как я понял, GPS поставляет данные в системе WGS84) в прямоугольные координаты (метры).
После длительных изысканий я нашел формулы для преобразования WGS84 -> Проекция Меркатора.
os = (2 * math.pi * 6378137 / 2.0)
mx = lon * os / 180.0
my = math.log( math.tan((90 + lat) * math.pi / 360.0 )) / (math.pi / 180.0)
my = my * os / 180.0
Собственно вопросы:
1. Верны ли формулы?
2. Подходит ли для решения моей задачи данная проекция (смущает фраза из описания "Масштаб на карте в этой проекции не является постоянным...")?
3. Если нет - то какую проекцию лучше выбрать?
Далее. Тестируя прием данных от GPS навигатора, столкнулся с тем, что стоя на одном месте получаю разные данные о своем местоположении (расхождение +- 10м). Пробовал усреднять данные за 2 секунды, но ощутимого улучшения результата не добился. Данные я беру из NMEA строки $GPRMC. Достоверность проверяю по второму параметру в данной строке.
Вопросы:
1. Существует ли возможность определить точность данных, принимаемых от GPS навигатора?
2. Какие существуют способы программного увеличения точности этих данных?
Передо мной стоит задача написания программы, которая по данным, полученным с GPS навигатора, выполняла бы следующие действия:
1. Отображала траекторию пути замкнутую на первую точку.
2. Считала площадь получившейся плоской фигуры.
Из постановки задачи следует, что мне потребуется преобразовать широту и долготу (как я понял, GPS поставляет данные в системе WGS84) в прямоугольные координаты (метры).
После длительных изысканий я нашел формулы для преобразования WGS84 -> Проекция Меркатора.
os = (2 * math.pi * 6378137 / 2.0)
mx = lon * os / 180.0
my = math.log( math.tan((90 + lat) * math.pi / 360.0 )) / (math.pi / 180.0)
my = my * os / 180.0
Собственно вопросы:
1. Верны ли формулы?
2. Подходит ли для решения моей задачи данная проекция (смущает фраза из описания "Масштаб на карте в этой проекции не является постоянным...")?
3. Если нет - то какую проекцию лучше выбрать?
Далее. Тестируя прием данных от GPS навигатора, столкнулся с тем, что стоя на одном месте получаю разные данные о своем местоположении (расхождение +- 10м). Пробовал усреднять данные за 2 секунды, но ощутимого улучшения результата не добился. Данные я беру из NMEA строки $GPRMC. Достоверность проверяю по второму параметру в данной строке.
Вопросы:
1. Существует ли возможность определить точность данных, принимаемых от GPS навигатора?
2. Какие существуют способы программного увеличения точности этих данных?