2017-02-02 9 views
-1

WGS84のcoord値をDelphi7でlong longに変換するにはどうすればいいですか?WGS84をdelphi7でlong latに変換する方法

ありがとうございました。


私は長い緯度GPSデバイス(コンポート)からWGS84フォーマットCOORDを受け取ったが、(マップの)投影に必要な、私はこのCOORDを受けています:

$ GPGNS、080219.00,4054.34347、N、 02916.99092、E、AN、11,0.89,134.1,37.7 ,, * 7B地図緯度:40.9057地図長:29.2831

+0

です。 –

+0

gpsデバイス(comport)からWGS84フォーマットのcoordを受け取ったが、long longの投影をする必要があるので、私はこのcoordを受け取りました: $ GPGNS、080219.00,4054.34347、N、02916.99092、E、AN、11,0.89 、134.1,37.7 ,, * 7B 地図Lat:40.9057 地図Long:29.2831 –

+1

この形式はNMEAと呼ばれ、かなりよく文書化されています。ここにhttp://www.gpsinformation.org/dale/nmea.htm – dummzeuch

答えて

1

「GNS」メッセージは、例えば

2:我々は

4054.34347、N =緯度

02916.99092、E、=経度

緯度を抽出することができ、あなたのメッセージからhere

1桁目(pa緯度(あなたのサンプルでは40)の度数は0です。 残り(54.34347)は分です。 'N'は北半球( 'S'は南部)です。の

最初の数字(必要であれば0で埋め):doubleとしてfloatへ

変換が

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)は度です。 残り(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

それは働いている!トムありがとう。 –

関連する問題