【小沐学GIS】电子海图OpenCPN源代码编译和运行(VS2017 + Win10)

1、简介

免费的开源海图仪和船用GPS导航软件

https://opencpn.org/

1.1 OpenCPN概述

  • OpenCPN是一款自由软件(GPLv2),用于创建简洁的海图绘图仪和导航软件,可以在航行过程中使用或者作为计划工具。
  • OpenCPN提供大量免费海图下载,支持航线设计、航行监控,能接入GPS、AIS数据,能叠加雷达图像,还满足气象导航方面的要求,还有众多插件可供选择,且一直持续改进更新中。
  • OpenCPN由C++编写,遵从GPLv2协议,其源代码可以轻易的从github获取。
    在这里插入图片描述

1.2 OpenCPN功能

在这里插入图片描述
在这里插入图片描述

2、下载和编译

OpenCPN由C++编写,遵从GPLv2协议,其源代码可以轻易的从github获取。在windows下编译方法windows下编译方法如下:
https://opencpn.org/wiki/dokuwiki/doku.php?id=opencpn:developer_manual:developer_guide:compiling_windows

2.1 Visual Studio 2017

安装Visual Studio 2017,添加C++及Windows XP C++功能。

  • 下载
    https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/
    在这里插入图片描述
  • 安装
    在这里插入图片描述

2.2 Git

安装Git:
https://git-scm.com/downloads
在这里插入图片描述

2.3 CMake

安装CMake:
https://cmake.org/download/
在这里插入图片描述

2.4 POedit

  • 安装POedit,
    https://poedit.net/

在这里插入图片描述

  • 配置系统环境变量,在PATH中添加:
C:\Program Files (x86)\Poedit\GettextTools\bin

2.5 wxWidgets

  • (1)方法一:源代码编译

获取wxWidgets 3.1.2源码并生成,使用VS2017 x86 Native Tools下的命令行,运行如下命令:
在这里插入图片描述

cd C:\Users\tomcat\Desktop\test         //修改成自己的目录
git clone -b v3.1.2 https://github.com/wxWidgets/wxWidgets
cd wxWidgets
git submodule init
git submodule updatecd build\msw
nmake /f makefile.vc BUILD=release SHARED=1 CXXFLAGS=/D_USING_V141_SDK71_ CFLAGS=/D_USING_V141_SDK71_ LDFLAGS=/SUBSYSTEM:WINDOWS,5.01
nmake /f makefile.vc BUILD=debug SHARED=1 CXXFLAGS=/D_USING_V141_SDK71_ CFLAGS=/D_USING_V141_SDK71_ LDFLAGS=/SUBSYSTEM:WINDOWS,5.01

在这里插入图片描述

cd wxWidgets
git submodule init
git submodule update

设置环境变量wxWIDGETS_ROOT_DIR为wxWidgets 3.1.2源代码目录
将wxWidgets源代码目录下的路径lib\vc_dll\添加进系统变量。

  • (2)方法二:使用二进制文件
    https://github.com/wxWidgets/wxWidgets/releases?page=1

    • 下载头文件
      在这里插入图片描述

    • 下载库文件
      在这里插入图片描述
      设置环境变量wxWIDGETS_ROOT_DIR:

wxWIDGETS_ROOT_DIR=C:/Users/tomcat/Desktop/test/wxWidgets-3.1.2

wxWidgets_LIBRARIES:

wxWidgets_LIBRARIES=C:\Users\tomcat\Desktop\test\wxMSW-3.1.2_vc141_Dev\lib\vc141_dll

2.6 OpenCPN

下载 OpenCPN源码:
https://github.com/OpenCPN/OpenCPN/releases?q=5.0.0&expanded=true
在这里插入图片描述
解压之后:
在这里插入图片描述
下载 预编译Windows依赖 - OpenCPN_buildwin-4.99a.7z,
https://download.opencpn.org/s/oibxM3kzfzKcSc3/download
然后解压到C:\Users\tomcat\Desktop\test\OpenCPN-5.0.0\buildwin目录下。

cd C:\Users\tomcat\Desktop\test\OpenCPN-5.0.0
mkdir build
cd build
cmake -G "Visual Studio 15 2017" -T v141_xp ..
cmake --build .
cmake --build . --config release
cmake --build . --config release --target package

在这里插入图片描述
在这里插入图片描述

编译过程中,会出现一些错误。例如“正体字”改成“zhengti”即可等。
下载 Copyfiles.bat.doc,并删去后缀名 .doc移动到\xx\OpenCPN\下面后执行copyfiles.bat(这步不做可能还是会缺几个dll)。
https://opencpn.org/wiki/dokuwiki/lib/exe/fetch.php?media=opencpn:dev:copyfiles.bat.doc

C:\Users\tomcat\Desktop\test\OpenCPN-5.0.0\Copyfiles.bat

鼠标双击它,直接运行如下:
在这里插入图片描述
打开文件夹“C:\Users\tomcat\Desktop\test\OpenCPN-5.0.0\build\Debug”,发现OpenCPN编译成功。
在这里插入图片描述

3、运行

3.1 主界面

直接运行opencpn.exe。
在这里插入图片描述

3.2 绘制路线(Route)

鼠标右键选择菜单“New Route…”,开始创建路线操作;
在这里插入图片描述
创建多段路线如下:
在这里插入图片描述

3.3 切换地图底色

在这里插入图片描述

3.4 距离测量

鼠标右键选择菜单“Measure”,开始距离测量操作;
在这里插入图片描述
鼠标右键选择菜单“Measure Off”,结束距离测量操作;
在这里插入图片描述

3.5 添加图表

将下载好的图表数据放在文件夹里“D:\Program Files (x86)\OpenCPN\data”:
在这里插入图片描述
然后通过界面更新按钮“Prepare all ENC Charts”。
在这里插入图片描述

更新过程中如下:
在这里插入图片描述
更新完成如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

结语

如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡)
感谢各位大佬童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/193865.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统编程 day02 vim、gcc、库的制作与使用

Linux系统编程 day02 vim、gcc、库的制作与使用 01. vim0101. 命令模式下的操作0102. 切换到文本输入模式0103. 末行模式下的操作0104. vim的配置文件 02. gcc03. 库的制作与使用0301. 静态库的制作与使用0302. 动态库(共享库)的制作与使用 01. vim vim是一个编辑器&#xff0…

ESP32 Arduino实战协议篇-搭建独立的 Web 服务器

在此项目中,您将创建一个带有 ESP32 的独立 Web 服务器,该服务器使用 Arduino IDE 编程环境控制输出(两个 LED)。Web 服务器是移动响应的,可以使用本地网络上的任何浏览器设备进行访问。我们将向您展示如何创建 Web 服务器以及代码如何逐步工作。 项目概况 在直接进入项目…

Linux基础全整理 从入门到放弃,一些想说的话

阅读目录 断更后一些想说的话用户useraddpasswdpasswd文件详解 chageusermoduserdelshadow 文件格式切换用户 用户组groupaddgroup文件格式groupmodgroupdel登陆远程机器 磁盘RAIDraid0(安装系统)raid1(存放数据)raid 5&#xff0…

Linux - 进一步理解 文件系统 - inode - 机械硬盘

详谈机械磁盘 在上一篇博客当中,已经对 用户级缓冲区 和 系统缓冲区 的区别,和 初步认识 C 库函数 封装的 文件接口这些做了阐述。具体可以参考下述博客: Linux - 用户级缓冲区和系统缓冲区 - 初步理解Linux当中文件系统-CSDN博客 本博客将…

PWM实验

PWM相关概念 PWM:脉冲宽度调制定时器 脉冲:方波信号,高低电平变化产生方波 周期:高低电平变化所需要时间 频率:1s钟可以产生方波个数 占空比:在一个方波内,高电平占用的百分比 宽度调制:占…

java--拼图游戏

1、了解拼图游戏基本功能: 拼图游戏内容由若干小图像块组成的,通过鼠标点击图像块上下左右移动,完成图像的拼凑。 2、拼图游戏交互界面设计与开发: 通过创建窗体类、菜单、中间面板和左右面板完成设计拼图的交互界面 &#xff…

C++ Qt 学习(十):Qt 其他技巧

1. 带参数启动外部进程 QProcess 用于启动外部进程int QProcess::execute(const QString &program, const QStringList &arguments);QObject *parent; ... QString program "./path/to/Qt/examples/widgets/analogclock"; QStringList arguments; argument…

mysql 实现去重

个人网站 首发于公众号小肖学数据分析 1、试题描述 数据表user_test如下,请你查询所有投递用户user_id并且进行去重展示,查询结果和返回顺序如下 查询结果和返回顺序如下所示 解题思路: (1) 对user_id列直接去重: &#xff…

复杂类型,查询--学习笔记

1&#xff0c;复杂类型 解决问题&#xff1a;一些不容易获取到的数据&#xff0c;例如数组类型&#xff0c;集合类型等&#xff0c;获取他们的数据 -- 1.创建表 create table tb_array_person(name string,city_array array<string> )row format delimited fields term…

让你彻底学会HBase

让你彻底学会HBase Apache HBase&#xff08;Hadoop DataBase&#xff09;是一个开源的、高可靠性、高性能、面向列&#xff08;这里指列族&#xff0c;非列式存储&#xff09;、可伸缩、实时读写的分布式数据库。利用 Hadoop HDFS 作为其文件存储系统&#xff0c;利用 ZooKee…

图片降噪软件 Topaz DeNoise AI mac中文版功能

Topaz DeNoise AI for Mac是一款专业的Mac图片降噪软件。如果你有噪点的相片&#xff0c;可以通过AI智能的方式来处理掉噪点&#xff0c;让照片的噪点降到最 低。有了Topaz DeNoise AI mac版处理图片更方便&#xff0c;更简单。 Topaz DeNoise AI mac软件功能 无任何预约即可在…

基于寄生捕食算法优化概率神经网络PNN的分类预测 - 附代码

基于寄生捕食算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于寄生捕食算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于寄生捕食优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…