Как конвертировать WGS84 в lat long в delphi7
Я хочу, чтобы значения координат WGS84 конвертировались в lat long в Delphi7, как сделать?
Благодарю.
Я получил координаты формата WGS84 от устройства gps (comport), но мне нужно проецировать (для карты) широтно, я получил эту координату:
$ GPGNS, 080219.00,4054.34347, N, 02916.99092, E, AN, 11,0.89,134.1, 37,7,,*7B Карта Lat: 40,9057 Длина карты: 29,2831
1 ответ
Сообщение "GNS" описано, например, здесь
Из вашего сообщения мы можем извлечь
4054,34347,N = широта
02916.99092,E = долгота
Широта:
Две первые цифры (дополненные 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