开源扬帆七海

尚无读者喜欢这篇文章。
"open" over an ocean

Patrick Nouhailler。由 Opensource.com 修改。CC BY-SA 2.0。

开源导航工具 OpenCPN 正在改变周末休闲和专业航海人士的航海方式。

最初是海图,然后是那些笨重、缓慢且昂贵的专用海图仪,用户界面晦涩难懂。最后,出现了在笔记本电脑、平板电脑和移动设备上运行的海图仪。你可能会认为这就到此为止了:直观的点按界面,类似于我们日常生活中使用的界面,外观时尚的图形用户界面,以及各种可下载的栅格或矢量海图。你还能要求什么呢?

开源海图仪和导航 (CPN) 工具怎么样?你可以免费下载,但它具备你期望从专有 CPN 获得的所有基本功能,外加最先进的功能,如 AIS 集成、S57 和加密 S63 矢量海图支持、BSB 栅格海图支持、OpenGL 加速、GRIB 文件导入、自动驾驶仪输出支持以及许多其他功能。

隆重推出 OpenCPN。OpenCPN 由一群活跃的航海家于 2007 年创建,他们使用真实世界的条件进行程序测试和改进。如今,OpenCPN 拥有 超过 25 位活跃的核心应用程序贡献者,还有数十位其他人员致力于开发越来越多的插件。与大型水平应用开源项目相比,这听起来可能不算多,但它比任何专有 CPN 解决方案所能声称的开发团队都要大,主要由来自全球各地、充满创造力和热情的敬业且经验丰富的航海家组成。

Google 趋势上快速搜索显示,到 2011 年初,OpenCPN 的每日搜索次数已超过所有主要的专有 CPN 应用程序。自 2009 年 1 月以来,OpenCPN 已被下载近 一百万次,现在可以在小型帆船、大型游艇、赛艇、渔船、研究船、引航船以及一些货船和游轮上找到它的身影。甚至 美国海岸警卫队也在使用它。你可以在 Windows、Mac、Linux、BSD、Solaris、Raspberry Pi 和 Android 上运行它。而且,我们不要忘记,美国的 NOAA 海图的整个目录都是免费提供的,世界各地其他政府组织越来越多的海图也是如此。此外,当然,你可以使用任何基于更常用栅格或矢量标准的商业海图。

你也可以加入团队并创建自己的分支。开发插件,或者只是为 主项目做出贡献。而且你不必是开发人员。例如,如果你找不到你语言版本的 OpenCPN,你可以加入 OpenCPN Crowdin 本地化项目,并将该语言添加到现有的 24 个本地化版本中。

适航的架构

OpenCPN 成功的根源在于许多合理的架构选择。首先,该应用程序被设计为响应式的,对于像海图仪这样图形密集型软件来说,这不是一项简单的任务。选择 C++ 作为语言,并结合平台无关的 wxWidgets 框架,创建了一个简洁的功能集,从而产生较小的代码量。OpenGL 图形加速可能与此有很大关系。

启动和关闭应用程序非常快速(将其与在紧急情况下打开旧的基于硬件的海图仪的体验进行比较,也许当你接近不熟悉的锚地时!)。放大和缩小以及拖动海图都很简单。而且,海图拼接功能(即,当用户放大、滚动或平移视口时,自动加载和渲染连续海图)通常是现有 CPN 的痛点,但它非常流畅且速度非常快。所有这一切都发生在 CPU 和内存使用率保持在非常合理的范围内的情况下。

航海家的梦想工具包

如果说有什么单一功能使 OpenCPN 从其他类似应用程序中脱颖而出,那可能就是其广泛成功的插件架构,这是从一开始就影响产品设计的开源思维模式的另一个副产品。插件允许第三方通过外部运行时库来增强应用程序的核心功能,这些运行时库可以在任何时候下载、安装和配置。为了秉持开源使产品更好、更易于支持的总体理念,插件本身需要根据 OpenCPN 采用的法律分发框架 GPLv2 许可证进行分发。

在撰写本文时,OpenCPN 网站上列出了超过三十个插件,并且还在不断增加。你想要特定区域的 GRIB 矢量风预报吗?安装 GRIB 插件。它将通过电子邮件,使用你的互联网或 SailMail 连接,获取该区域最新的 GRIB 数据。需要计划一次远洋航行吗?下载 Weather Routing 插件,它将根据天气预测模型推荐最佳路线。想将雷达图像叠加到你的海图上吗?有一个插件可以做到这一点,就像有一个插件可以叠加天气传真图像一样。

列表还在不断增加,但你明白了要点。增强海图仪功能的所有可能方式是无限的,以至于未来我们可能不再将其称为海图仪和导航软件,就像我们不再将 iPhone 称为手机一样。

开源世界的航海知识

海图仪创造更广泛、更引人注目的用户体验的方式之一是融入巡航计划功能。为什么不使用你在航行时花费大部分时间使用的同一个应用程序,直接在你的海图上搜索码头、锚地、码头等?毕竟,你可能会使用 Google 地图来规划你的公路旅行,以查找酒店、餐厅、商店等。

诸如前面提到的 Weather Routing 工具之类的插件可以在决定如何到达那里方面发挥关键作用。但是,首先如何选择合适的“那里”呢?哪个码头有双体船的空间?那个锚地是否暴露在南风中?其他巡航者如何评价那家机构的 WiFi 服务?你可能会花费数小时从航海指南出版物、巡航博客和论坛、网站等中收集相同的信息。(更不用说许多航海家仍然使用的旧版印刷巡航指南了。)

sQuiddio 插件 正是做到了这一点:它通过下载包含联系数据、用户评分、评论和其他信息的 gpx 文件,利用了来自世界各地超过 10,000 个巡航目的地的用户来源存储库。sQuiddio 允许用户通过单击海图上的相关点并填写快速表格来添加目的地。

考虑到互联网连接对巡航者来说是多么宝贵的资源,该插件尝试通过在本地缓存部分信息来最大限度地减少所需的带宽。每个目的地都包含一个指向 sQuidd.io 网站上相应页面的链接,联网用户可以在该页面上找到有关目的地的更多信息以及用户发布的图片。你可以看到目前停泊或系泊在该目的地的船只列表,以便了解该地点的拥挤程度。还提供了一些关于过去使用过该目的地的船只类型和大小的统计数据。你甚至可以通过发布地理编码的推文或 Instagram 帖子来向目的地添加评论和照片。Squidd.io 将根据帖子中包含的坐标将该信息添加到存储库。

共享代码和共享信息

我们选择专注于一个特定的插件,以突出即使是非常专业的航海导航软件领域也正在遵循与其他开源领域相同的进化模式:它们正在超越简单的代码和编码实践共享,扩展到包括信息存储库。全世界数百万船民共享的集体知识量不可能由单个组织生成,更不用说拥有了。它需要成为一种共享资产。

开放
科学

关于开源软件、工具、硬件、理念以及科学领域更多内容的文章合集

标签
User profile image.
Mauro Calvi 是 sQuidd.io 的创始人,sQuidd.io 是一个用户来源的船舶兴趣点和巡航信息存储库。

1 条评论

感谢精彩内容

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.