• 2

有關gps接收器誤差


感謝這麼多版友們幫助
這是我用c#寫的console程式碼,只是想確定讀出來的串流裡的經緯度跟正確的位置是不是不會差太遠



這張console是我用命令提示字元跑出來的
以下是程式碼

using System;
using System.Collections.Generic;
using System.Text;
using System.IO.Ports;
using System.Windows.Forms;
using System.IO;

namespace ConsoleApplication1
{
class Program
{
private SerialPort port = new SerialPort("COM6", 4800, Parity.None, 8, StopBits.One);

static void Main(string[] args)
{
new Program();
}

private Program()
{
port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);

port.Open();

Application.Run();
}

private void port_DataReceived(object sender, SerialDataReceivedEventArgs args)
{
Console.WriteLine(port.ReadExisting());
}
}
}





這張我用自己寫的winform接收到GPS接收器所輸出的串流
winform是用別人寫好的套件下去改,它可以直接取出串流的經緯度




我用自己寫的winform和console還有papago所定位到的位置"liz's home"顯示在google earth上
papago所顯示的位置是最正確的
座標是121.203708
25.591705



我所使用的GPS接收器是跟mainnav買的,大概1000多塊左右,不是很好的接收器
另外,我如果在室外使用papago,靜止的時候顯示所在位址的點會一直繞圈圈
還會幫我測出時速是1Km,不過我根本就沒在動,不知道是什麼原因會造成這樣的情形


lizliu wrote:
我用自己寫的winform和console還有papago所定位到的位置...(恕刪)

問題出在您的經緯度的格式都混亂了,其實 Console/winform/Papago 的位置都相近.

Console:
2459.3085 12120.6464 (格式: ddmm.mmmm dddmm.mmmm)
換成十進位: 24+59.3085/60 121+20.6464/60 -> 24.98847 121.34410

Winform:
2459.3066 12120.6447 (格式: ddmm.mmmm dddmm.mmmm)
換成十進位: 24+59.3066/60 121+20.6447/60 -> 24.98844 121.34407

Papago:
121.203708 24.591705 (格式: 121度20分37.08秒 24度59分17.05秒)
(您誤植為 25.591705, 但我不清楚為何您要將度分秒連在一起)
換成十進位: 121+20/60+37.08/3600 24+59/60+17.05/3600 -> 24.98806 121.34363

Console與Papago相差65公尺,若衛星的接收條件不佳,這樣的誤差是正常的.

將度分秒連在一起
是因為太懶 不好意思
感謝你的幫忙 我再研究看看 謝謝
剛剛試了一下發現真的是格式錯誤的問題
真的很謝謝你!!!!
會相差700公尺,就是因為引用的座標系不同才會這樣,位置越往台灣北部移動,差距越大,在台北市的差距可達到八百多公尺,但是在台灣南部,兩者的差距就會少於八百公尺。要使用papago的定位,請確認所的座標系是否一致,若使用不同的座標系,即使打入一模一樣的數值,在地圖上顯示的位置就會不在同一點。使用抓來的程式,最好追一下所使用的計算法,是基於哪一個座標系,因為原撰寫人可能沒有註明,總之,在輸出經緯度時,還要註明所使用之座標系,才能正確。
  • 2
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?