我想在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
'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