Tag: gps

如何计算浮点支持较差的处理器上GPS坐标之间的距离?

我需要计算GPS坐标之间的距离来计算行进距离。 我已经尝试了Haversine和Vincenty算法,它们在我的桌面PC上运行良好,但是当我将代码移植到dsPIC时,由于缺少浮点精度,它们返回0表示接近(几米之内)的点和罪和cos的不良实现。 对于我的用例,我的分数不会超过10米,并且都将相距不超过10公里。 我尝试了以下算法,结果似乎没问题: double dist(double latA, double lonA, double latB, double lonB) { double latD = fabs(latA – latB) * 111.3; double lonD = fabs(lonA – lonB) * 111.3 * cos(latA * 3.14159265 / 180); return sqrt(latD*latD + lonD*lonD) * 1000; } 假设每1°的距离是111.3km,我用毕达哥拉斯定理来计算距离。 有没有简单的方法来改进我的算法? 或者是否有其他算法不依赖于高度准确的sin / cos?

libgps C代码示例

我正在为支持GPS的Raspberry Pi编写一个数字运算数据记录C程序。 我抓住gpsd ,它的示例应用程序cgps正确显示gps信息。 我想使用libgps与守护进程交互,以便我可以在我的应用程序中获得所有方便的信息,但我很快就被其API的复杂性所淹没。 HOWTO页面上的文档指向我查看cgps和gpxlogger的示例代码,但是有很多耦合,我无法通过它来解决所有问题。 在光谱的另一端, libgps页面上的C代码示例被剥离回来使它无法使用。 任何人都能指出一个可能揭开神秘面纱的单一类样本吗? 也许包含getCoordinates()函数的东西?