2017-02-02 5 views
-1

Я хочу, чтобы координаты WGS84 конвертировали в lat long в Delphi7, как это сделать?Как преобразовать WGS84 в long long в delphi7

Спасибо.


я получил формат WGS84 коорд от GPS устройства (ComPort), но нужно проекции (для карты) Lat долго, я получил эту коорд:

$ GPGNS, 080219.00,4054.34347, N, 02916.99092, E, AN, 11,0.89,134.1, 37.7 ,, * 7B Map Lat: 40.9057 Карта Длинные: 29.2831

+0

Я думаю, вам нужно определить проблему более точно. –

+0

Я получил координацию формата WGS84 от gps-устройства (comport), но для этого требуется проекция (для карты) lat long, я получил эту координату: $ GPGNS, 080219.00,4054.34347, N, 02916.99092, E, AN, 11,0.89 , 134.1,37.7 ,, * 7B Map Lat: 40.9057 Карта Длинные: 29.2831 –

+1

Этот формат называется NMEA и хорошо документирован, например здесь http://www.gpsinformation.org/dale/nmea.htm – dummzeuch

ответ

1

Сообщение «GNS» описано, например, here

Из Вашего сообщения мы можем извлечь

4054,34347, N = широта

02916,99092, E = долгота

Широта:

два первые цифры (pa с нулевым значением 0) в зависимости от широты (40 в вашем примере) - это градусы. Остальные (54.34347) - минуты. «N» - северное полушарие («S» будет южным).

Конверсия плавать в два раза будет

function TGpsMsg.LatStrToDouble(Lat: string; NS: char): double; 
begin 
    result := StrToFloat(LeftStr(Lat, 2)); 
    result := result + StrToFloat(MidStr(Lat, 3, 8))/60; 
    if (NS = 'S') or (NS = 's') then 
    result := -result; 
end; 

Ваш образец 40,9057245 N

Долгота:

В три первые цифры (проложенные с 0, если это необходимо) из долгота (029) - это градусы. Остальные (16.99092) - минуты. «E» находится к востоку от 0-меридиана (Гринвич) («W» будет на западе).

function TGpsMsg.LngStrToDouble(Lng: string; EW: char): double; 
begin 
    result := StrToFloat(LeftStr(Lng, 3)); 
    result := result + StrToFloat(MidStr(Lng, 4, 8))/60; 
    if (EW = 'W') or (EW = 'w') then 
    result := -result; 
end; 

Ваш образец 29,283182 E

+0

все сработало! спасибо, Том. –

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