2012-05-11 4 views
1

Я уже опубликовал подобное сообщение. И я получил теоретический ответ, но мне действительно нужно, чтобы кто-то помог мне.Преобразование из британских координат в стандарт WGS84 nmea

Так что я использую этот EXAMPLE для тестирования своего GPS. Я хочу сделать, как получить стандартные десятичные значения, такие как 56,322415 для широты и долготы. Потому что теперь я получаю значение 5304,254.

Мне нужна она в этой форме, потому что я буду использовать ее для Google карт.

Можете ли вы проверить код и сообщить мне, что мне следует оставить или как его преобразовать в формат WGS84.

спасибо.

EDIT:

Вот картина, которая объясняет то, что я вижу, когда я запустить программу enter image description here

И это тот, который один страница CodeProject:

enter image description here

EDIT 2:

Поэтому, когда я использую THIS CONVERTER, чтобы узнать, какие десятичные значения мне нужно получить, когда у меня есть градусы, я не получаю одинаковые значения.

Это значение, которое я должен получить:

enter image description here

И это значение, которое я получаю в программе:

46,64662666666667

Любая идея, почему Я не могу получить такое же преобразование?

+0

Любая помощь приветствуется –

ответ

2

следующая строкой в ​​функции ParseNMEA является тот, который выполняет преобразование из WGS84 в Британском Указе обследование координаты:

return Transform(deciLat, deciLon, height); 

так что если вы удалите эту строку и использовать только значения deciLat и deciLon, вы должны хорошо ...

Дополнение после обновления вопрос:

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

Вы можете использовать следующие функции для выполнения преобразования, предполагающее вход всегда в инвариантной культуры (с десятичной точкой):

string[] arrLon = strLon.Split(new char[]{'°', '"'}, StringSplitOptions.RemoveEmptyEntries); 
double dblLon = double.Parse(arrLon[0]) + double.Parse(arrLon[1], new System.Globalization.NumberFormatInfo())/60; 
double deciLon = arrLon[2] == "E" ? dblLon : - dblLon; 

Дополнительная информация:

NumberFormatInfo: http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.aspx

+0

Привет, я попробовал то, что вы сказали, и когда я удалить часть кода, когда она вызывается метод преобразования я не получаю из информации. Вы пытались его удалить? Если вам удалось это сделать, сообщите мне, какая часть вы изменили. –

+0

Вы что-то пробовали? –

+0

Hi denonth, это подпадает под очень базовые навыки программирования, поэтому я не уверен, что SO - это подходящее место, чтобы узнать об этом, но функция Transform возвращает true, если все идет хорошо, и поэтому функция ParseNMEA. Я не загружал и не запускал код, но вы должны «возвращать true» вместо «return Transform (...» для правильной работы функций. – Dirk

1

Похоже, что ваши проблемы теперь решены, я знаю, что были проблемы, вызванные форматированием разных локальных номеров, которые были подняты и разрешены в одном из комм Энты:

http://www.codeproject.com/Articles/13577/GPS-Deriving-British-Ordnance-Survey-Grid-Referenc?msg=2106791#xx2106791xx

Если вы хотите просто десятичные значения широты и долготы, я думаю, вы можете выбросить все вещи прочь теперь и просто использовать решение, предоставляемое Dirk! = О)

Alex

+0

Привет, Алекс, ты был прав. Решение Dirk действительно работало для меня. Спасибо за ваше время –