你会推荐哪个gps库用于python?

我正在寻找一个免费的python库,它可以根据GPS坐标计算你的方向和你的速度,也许可以计算你是否在某些边界或类似的东西。 是否有您知道并且适合您的图书馆? 编辑:好吧,似乎我必须指出一点。我们在linux机器上使用python并从gpsd获取数据。所以我希望不需要专门的库来与设备通话。我正在寻找的是python代码,用数据做一些基本的计算。比如比较最后的位置并计算速度和方向。     
已邀请:
显然,gpsd附带的python模块是我们最好的模块。 首先看一下(网站重定向到垃圾邮件)。 随gpsd一起提供的gps模块有一些非常有用的功能。第一个是从gpsd获取数据并将数据转换为可用的数据结构。 然后模块可以让您访问您的速度,以及您当前相对于北方的航向。 还包括用于计算考虑到地球的球形性质的地球上两个坐标之间的距离的函数。 我们的特殊情况缺少的功能是: 计算点到点之间的标题。意味着我正处于一个面向北方的地方,我必须转向哪个程度来面对我想要导航的那个点。 取第一个函数的数据和我们当前的航向来计算我们必须做的面向期望点的转弯(不是很大,因为它主要只是一个减法) 使用这个库的最大问题是它主要是gpsd的包装器,所以如果你在不同的操作系统上进行编程,那么gpscode应该像Windows或MacOS一样工作,你无法运行代码或安装模块。     
我不确定我是否理解您的确切要求,但是,根据您的设备和c,似乎有许多可能的候选人,例如: S60 GPS信息查看器 pygarmin pygps(镜子) 如果你的意思是你已经获得了GPS的单位输出而只需要解析它& c,我怀疑上面的一个或多个例子(遗憾的是我没有尝试过)将包含完全隔离的模块对于那项任务,根据许可条件,你可以重新利用;如果这就是你正在做的事情,那么这个问题也可能会有所帮助。     
“开始Python可视化”一书只包括这样一个例子 - 解析GPS数据并从中推断出速度和位置。其源代码可在http://www.apress.com/在线获取。     
您从GPS设备收到的GPS语句很容易解码,这看起来像一个有趣的项目。我不确定你从gspd得到什么,但如果是这些句子,几周前我实际上不得不为学校做这样的事情(但在LabView中):
$GPGGA,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx

hhmmss.ss = UTC of position 
llll.ll = latitude of position
a = N or S
yyyyy.yy = Longitude of position
a = E or W 
x = GPS Quality indicator (0=no fix, 1=GPS fix, 2=Dif. GPS fix) 
xx = number of satellites in use 
x.x = horizontal dilution of precision 
x.x = Antenna altitude above mean-sea-level
M = units of antenna altitude, meters 
x.x = Geoidal separation
M = units of geoidal separation, meters 
x.x = Age of Differential GPS data (seconds) 
xxxx = Differential reference station ID 
所以你可以做一个gpsstring.split(','),然后你将得到一个你可以解析的所有元素的数组。要查看有关这些句子的更多信息(还有其他我认为的速度和方向),请单击此处。 例如,要获得两点之间的近似距离,您可以使用Haversine公式:
distance=R*2*asin(sqrt((sin((lat1-lat2)/2))**2
               +cos(lat1)*cos(lat2)*(sin((long1-long2)/2))**2))
其中R是您想要得到结果的测量单位中地球的半径(例如R = 6372km)。该实际行取自我所处的LabView程序,但语法非常类似于Python(也许检查除法运算符,您可能希望“从未来的导入部门”执行。 此外,lat1,lat2,long1和long2必须以弧度表示。你得到它们的格式非常奇怪(hhmm.ff,其中ff是分数的分数,因此它们从0到99而不是0到59(以秒为单位))。 我用的代码是:
h=floor(x/100);
m=floor(x-(h*100));
s=(x-floor(x))*60;
deg=sgn*(h+(m/60)+(s/3600));
rad=deg*pi/180;
北部和东部的标志为1,南部和东部的标志为-1。再次,注意分裂。 检查边界是我认为最容易的部分。如果你已经得到弧度或度数的位置,你可以检查纬度是否在两个纬度边界之间,并对经度做同样的事情。 写一个包装好的东西,你有你的GPS库:)     
大多数优秀的GPS装置(我们使用Oncore M12M)实际上会为您提供速度和航向作为输出。我首先检查您的GPS接收器的文档,看看是否已经发送此信息,或者是否可以启用此类消息。根据我的经验,这些数据通常是接收器给你的标准遥测的一部分。 如果这不起作用,我认为你最好的选择是使用WGS-84(GPS坐标系)的细节来获得实际的(x,y,z)坐标,然后将其与下一个坐标区分开以找到你的标题并在时间间隔内取出差异的大小来找到你的速度。这里有一些细节: http://topex.ucsd.edu/geodynamics/14gravity1_2.pdf 如果你真的想要一个可以做到这一切的软件包,我认为pyEphem非常好,虽然我认为你可以节省一点时间搜索并通过自己编写来获得一些好的知识。 (对不起,如果没有帮助,第一次海报,还在学习如何堆叠溢出)     

要回复问题请先登录注册