-1

我想在Delphi7中将WGS84坐标值转换为lat long,如何制作?

谢谢。


我从 gps 设备(comport)收到 WGS84 格式坐标,但需要投影(用于地图)lat long,我收到了这个坐标:

$GPGNS,080219.00,4054.34347,N,02916.99092,E,AN,11,0.89,134.1‌​,37.7,,*7B 地图纬度:40.9057 地图长度:29.2831

4

1 回答 1

1

'GNS' 消息在此处进行了描述,例如

从您的消息中我们可以提取

4054.34347,N, = 纬度

02916.99092,E, = 经度

纬度:

纬度(示例中为 40)的前两个数字(如果需要,用 0 填充)是度数。其余的 (54.34347) 是分钟。“N”是北半球(“S”是南半球)。

转换为 float 作为 double 将是

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

经度:

经度 (029) 的前三个数字(如果需要,用 0 填充)是度数。其余的 (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

于 2017-02-02T16:15:22.223 回答