使用 GpsDrive 找到你的路
埃及人发明了几何学,这是测量学的数学基础。尼罗河每年的洪水冲走了标记,迫使那些一丝不苟的官僚重新测量道路、田地和景观的其他特征。
火药传到了西方人手中,并发明了远程火炮。这需要精确定位海军和火炮,以及它们的目标。因此,军方长期以来对定位事物的艺术很感兴趣,他们改进了埃及人最初开创的技术。
在 20 世纪 70 年代,美国国防部 (DoD) 开始研发全球定位系统 (GPS)。这在近地轨道上部署了 24 颗卫星的星座。GPS 允许瞬间定位,精度在几十米以内。苏联也推出了类似的系统 Glonass,俄罗斯至今仍在维护。欧盟也已开始研发自己的改进系统 Galileo,计划于 2008 年部署。
军方很高兴;他们现在可以更准确地定位目标。然而,与另一个国防部项目互联网协议一样,民用衍生产品可能远远超过任何军事利益。我们现在可以使用 GPS 来定位迷路的徒步旅行者,帮助遇险船只,并以前所未有的精确度和低成本搜索油井。事实上,欧盟主要将 Galileo 视为一项商业风险投资。
所有三个系统都基于卫星上的原子钟。接收器使用时间信号来告知其与每颗卫星的距离。球面几何告诉我们,三颗卫星可以在二维空间中定位。在三维空间中定位至少需要四颗卫星。现代 GPS 接收器可以跟踪多达 12 颗卫星,这是它们在任何一个时间点可以看到的最大数量。
由于 GPS 运行的频率和信号强度,目前 GPS 接收器的主要限制是必须在户外或接近户外,或者有远程天线,才能跟踪卫星。
GpsDrive 是一个根据 GNU 通用公共许可证 (GPL) 授权的程序,用于实时显示自己的位置。它可以在大多数运行 Linux 的笔记本电脑以及 Linux 驱动的 PDA(如 Yopy 和 Zaurus)上运行。目前,支持 12 种语言。
在我们开始之前,先说一句警告:永远不要将 GPS 视为导航其他工具的辅助或补充。GPS 的出现并不是丢弃您的《Bowditch》的理由。
GpsDrive 需要 Gnome Toolkit plus (GTK+) 2.2 或更高版本,大多数 Linux 发行版都附带了该工具包。抗锯齿字体很好,但不是必需的。
MySQL 可以存储航点,如果可能,GpsDrive 会自动使用它。
Kismet 是一种无线嗅探器,一种用于检测 Wi-Fi 接入点的工具。当 Kismet 检测到它们时,GpsDrive 会自动将联系信息转换为航点并存储在 MySQL 中。这使 GpsDrive 成为一个出色的无线网络探测工具。
Festival 是一个用于 Linux 的语音输出程序。当您接近航点时,GpsDrive 使用它进行语音传递评论。对于移动 GpsDrive 用户来说,这是一个出色的安全功能。Flite 是 Festival 的精简版本。
对于熟悉典型软件包安装的人来说,安装 GpsDrive 很简单。
从 GpsDrive 的主页或其网站上指示的镜像站点获取 GpsDrive(请参阅在线资源)。您可以获得最新稳定版本的 tarball、md5sums 和 RPM 软件包。您也可以从匿名 CVS 获取最新的工作质量版本。tarball 版本更灵活,因为您可以删除一些您不打算使用的组件。
要安装 tarball,请将其复制到合适的位置。然后执行以下操作
tar -xvzf gpsdrive*tar.gz cd gpsdrive ./configure make
如果您仅使用 NMEA 协议,并且不需要 GARMIN 协议,请使用以下命令配置 GpsDrive
./configure --disable-garmin
您可以附加--enable-auto-optimization以获得优化的编译器标志。
然后,以 root 用户身份,安装程序、gpsd 守护程序和语言文件。运行
make install
RPM 安装是通常的
rpm -ivh gpsdrive*.rpm
安装完成后,您应该能够阅读手册页,其中包含最新信息。
首先要做的是查看 GpsDrive 是否与您的 GPS 接收器一起工作。要测试系统,请启动 gpsd,这是一个提供原始 GPS 数据的守护程序。它将监听 /dev/gps,除非您在命令行中使用 -p 选项另行告知
gpsd -p /dev/ttyS1
因为您应该以非 root 用户身份运行 GpsDrive 和 gpsd,请确保该用户对设备具有读写权限。
一旦 gpsd 正在运行,运行
telnet localhost 2947
当您收到连接消息时,按下 R 键,gpsd 将开始向您提供原始 NMEA 语句,如下所示
[ccurley@charlesc ccurley]$ telnet teckla 2947 Trying 192.168.1.32... Connected to teckla. Escape character is '^]'. r GPSD,R=1 $PRWIRID,12,01.05,07/29/96,0003,*46 $GPRMC,235947,V,4333.1694,N,10812.0068,W,0.000,0.0,120895,13.3,E*42 $PRWIZCH,00,0,00,0,00,0,00,0,00,0,00,0,00,0,00,0,00,0,00,0,00,0,00,0*4D ASTRAL ASTRAL $GPRMC,235949,V,4333.1694,N,10812.0068,W,0.000,0.0,120895,13.3,E*4C .... GPSD,R=0 ^] telnet> quit Connection closed.
即使接收器无法获得任何信号,这也能正常工作,因为接收器将发送指示它没有信号的数据。
一旦您知道您的 GPS 接收器位于哪个设备上,请创建一个指向 /dev/gps 的符号链接(以 root 用户身份),以便 gspd 或 gpsdrive 可以使用默认值
ln -s /dev/ttyS0 /dev/gps
您可以在 GpsDrive GUI 中设置设备名称,但 gpsd 不会使用该设置。
如果您要使用 MySQL 进行航点存储(Kismet 需要这样做),请参阅文件 README.SQL。您需要将文件 create.sql 馈送到 MySQL 的命令行客户端,因此您必须在 MySQL 中具有适当的权限。您可以使用任何合理的 MySQL 客户端来编辑您的航点,包括 OpenOffice.org。
一旦您安装了 GpsDrive 和您想要的任何可选软件,并且您知道 GPS 接收器正在工作,请尝试 GpsDrive。您将看到一个启动画面,然后是主窗口。然后您将第一次也是最后一次看到一个烦人的屏幕。作者 Fritz Ganter 用自己的钱支付了网站服务器的费用,并感谢您的贡献。
关闭 nag 框后,您应该在 GpsDrive 窗口的地图部分看到一个图像。这是一个占位符,直到您获得自己的地图。首先要做的是在“首选项”菜单中关闭模拟模式。如果您想要英里或海里,请在那里选择该选项。
要获得您的第一张地图,请确定您的新地图中心的纬度和经度。然后将程序置于位置模式(菜单的左下区域)。接下来,使用 X 键创建一个航点,并输入地图中心的纬度和经度。使用减号表示南和西(图 1)。
使用查找工具(左上角菜单)转到航点。现在,单击主窗口左侧的“下载地图”条目。您会注意到您的纬度和经度是默认值。选择您的比例和来源,然后获取地图。成功!新地图立即显示。如果这是一个您经常使用的位置,您可能需要下载几张不同比例的地图。
GpsDrive 有三种模式:位置模式、正常模式和模拟模式。
使用位置模式在地图上移动。通过选中主窗口左下角的“Pos. mode”进入位置模式。一旦您处于位置模式,当您通过单击地图跳跃移动时,GpsDrive 会向您显示从当前位置(用蓝色方块标记)到目标(用红色和蓝色交替的十字标记)的距离和方位。
例如,一旦您拥有大范围的小比例地图,您就可以四处移动并下载感兴趣位置的选定大比例地图。您还可以使用位置模式定义航点。
在正常模式下,GpsDrive 从 GPS 接收器获得定位,并跟踪接收器指示的位置。随着位置的变化,GpsDrive 会在其地图供应中平移。GpsDrive 以正常模式启动。
在模拟模式下,GpsDrive 从起点生成到一个或多个航点的路径。要进入模拟模式,请调出“首选项”,转到第一个设置选项卡并选中“模拟”。这是一种有趣的模式,因为您可以观看一辆虚拟车辆以高速在乡间移动。
您将需要几种不同比例的地图。我建议您获得一张非常小比例的地图,该地图覆盖您的所有正常旅行区域。有了这张地图,如果您在位置模式下不小心单击到您的区域之外,您就不会从地图上掉下来。NASA 地图(如果您有磁盘空间)或默认地图可以很好地做到这一点。
在 GUI 中,您只需选择您想要的地图的参数和服务器,然后获取它。这是简单的方法。但是,结果可能无法很好地平铺。您可以从 Topozone.com 获取美国地质调查局地图,或从 Expedia.com 获取街道地图。
如果您知道中心点的纬度和经度以及您想要的比例,请将它们输入到下载地图对话框中,然后转到。您还可以进入位置模式并单击现有地图,直到您到达您想要的新地图的中心,然后下载它。
然后,还有 NASA 地形数据。有关详细信息,请参阅文件 README.nasamaps,有关示例,请参阅图 2。
对于更系统的地图收集,请参阅随附的 gpsfetchmap.pl。
现在您已经有了一些地图,是时候玩玩您的新玩具了。
GpsDrive 配备了完善的工具提示,因此我们在这里仅介绍显示器的亮点。
在主窗口中地图的正下方,GpsDrive 显示导航数据。到下一个航点的距离和当前速度是显而易见的。在这些数据的右侧是一些关于航点、您的朋友服务器上可见的移动目标以及 GPS 接收器指示的当前时间的信息。
在到航点距离显示器的左侧是 GPS 信息。在没有 GPS 的情况下,会显示一个旋转的地球。当存在 GPS 时,地球被可见卫星的信号强度计取代。如果没有定位,其背景为红色;如果已定位,则为绿色。
在 GPS 数据的左侧是一个罗盘。罗盘的顶部指示您当前的航向或您正在航行的航线。黑色指针给出到下一个航点的方位。
许多设置都在“首选项”菜单中处理,您可以从主窗口的左侧选择该菜单。您已经知道如何选择您的计量单位。如果您使用的是较旧的计算机,您可能需要限制 GpsDrive 占用的 CPU 时间,并关闭阴影,阴影需要额外的处理才能绘制。
在第二个设置选项卡中,您将找到一些与 GPS 相关的设置。例如,您可以选择让 GpsDrive 直接访问接收器,而不是通过 gpsd。
SQL 选项卡允许您选择要包含或排除在显示中的特定类型的航点。这允许您将航点组织成类别,并决定要显示哪些航点。我将此与我首选的加油站连锁店的一组航点一起使用。我可以根据我是否正在寻找汽油来打开或关闭它们在显示器上的显示。
一旦您手头有地图,您可以使用几个控件来操作它们。对于您经常旅行的区域,您可能拥有几种不同比例的地图。有几种方法可以在它们之间进行选择。首先是选中左侧菜单下部的“自动最佳地图”。这会告诉 GpsDrive 选择当前位置可用的最佳(最大比例)地图。
在它的下方,在区域地图的正上方,您可以选中街道地图或地形地图,或两者都选中。如果两者都选中,GpsDrive 会在两种类型之间移动,这为您拥有的地图提供了最大的覆盖范围。
关闭“自动最佳地图”,您可以通过几种方式选择比例。在主窗口的左上角区域,您会找到两个箭头。单击左箭头移动到更大比例的地图,单击右箭头移动到更小比例的地图。您也可以移动最右下方的滑块以获得相同的效果。这将设置首选比例,GpsDrive 会尽可能保持接近该比例。
在给定的地图中,您也可以放大和缩小。使用主窗口左上角的两个放大镜控件。当前的放大倍率在主地图的右上角指示。当 GpsDrive 更改地图时,它会保持相同的缩放级别,这可能会让人感到不安。
首先,确保您已打开航点,并且您正在使用 SQL 或未使用 SQL,视情况而定。
有几种方法可以设置航点。您可以手动将它们编辑到文本文件或 MySQL 数据库中,您可以使用程序 gpsbabel 从其他文件格式转换,或者您甚至可以从 Wayhoo.com 下载它们。
在位置模式下,您可以通过按 X 键在当前位置输入航点,或者您可以使用 Y 键在当前鼠标指针处输入航点。您始终可以在提交航点之前编辑参数。
GpsDrive 配备了一个朋友服务器。这允许几个人在他们的系统上显示彼此的位置。您可以运行自己的服务器,也可以使用您可以在公共互联网上找到的任何服务器。这是多个车辆位置的实时绘图。这使得 GpsDrive 成为汽车拉力赛或搜索和救援任务的绝佳辅助工具。
如果用户由于 Wi-Fi 信号丢失而暂时掉线,则会显示用户的最后已知位置。一旦他或她重新上线,显示将在几秒钟内更新。
GpsDrive 中唯一缺少的功能是街道级路线规划。要做到这一点,该程序需要街道级数据的开源。商业数据通常在 10,000 欧元左右,这是一个令人望而却步的价格。如果您知道这样的数据源,请告知作者。
GpsDrive 是一个出色的工具,用于实时显示一个或多个 GPS 接收器的位置。它适用于多种应用,从跟踪星期天下午的探索等有趣的事情到搜索和救援等严肃的工作。
本文的资源: /article/8068。
Charles Curley (www.charlescurley.com) 在怀俄明州的两所大学教授 Linux。他还使用 Emacs 等开源软件工具编写软件、文章和书籍。