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

25 篇文章 46 订阅

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++功能。

2.2 Git

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

2.3 CMake

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

2.4 POedit

在这里插入图片描述

  • 配置系统环境变量,在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 update

cd 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\添加进系统变量。

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???
如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡)
感谢各位大佬童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 电子海图(ENC)是一种用来表示航海水域的电子地图。ENC的源代码包含了实现该地图的相关算法和逻辑。ENC源代码通常由海图制作厂商开发,用来创建和更新电子海图。 在ENC源代码中,首先会包含地图数据处理的算法。这些算法用来解析和处理从卫星和其他传感器获得的海洋数据,如水深、海底地形、海流等。它们还可处理其他环境数据,如天气和潮汐信息,以提供具体的航行建议和警告。 其次,在ENC源代码中,可能包含电子海图的渲染算法。这些算法用来将处理过的数据转换为可视化的地图图像。通过这些算法,我们可以看到海洋和陆地的边界,航道和航线,导航灯和浮标等标记物。这有助于船舶和海事人员在航海中更好地了解和识别地形特征。 此外,在ENC源代码中,还可能包含与导航和航海安全相关的算法。这些算法可用于计算船舶的位置、航向、速度和距离等参数。它们还可提供实时的航行警告和建议,以确保船舶在海洋中航行时的安全性。 总之,ENC源代码是用来创建电子海图的关键组成部分。它包含了处理、显示和导航等方面的算法和逻辑,帮助船舶和海事人员在航海中做出准确和安全的决策。同时,ENC的源代码的不断更新也能够保持其数据的准确性和完整性,以满足不断发展的航海需求。 ### 回答2: 电子海图(Electronic Navigational Chart,简称ENC)是为了航海安全和导航目的而使用的电子地图。ENC是一种特殊的地图格式,包含了海洋、河流和湖泊的详细航行信息,如水深、海岸线、浮标等。其源代码包含了实现电子海图功能的命令和算法。 ENC的源代码通常由两部分组成:读取和处理ENC文件的代码以及可视化和交互的用户界面的代码。读取和处理ENC文件的部分负责解析ENC文件格式,将其中的数据提取出来,并进行存储和处理。这部分代码通常涉及数据结构、文件操作和计算等方面的编程。 可视化和交互的用户界面的部分负责将处理后的ENC数据以可视化的方式展示给用户,并提供用户交互的功能,如缩放、平移、搜索等。这部分代码通常包括图形界面设计、事件处理、地图渲染等方面的编程。 ENC的源代码可以使用多种编程语言实现,如C++、Java、Python等。具体实现过程中需要根据编程语言和目标平台的不同,采用相应的编程工具和库来辅助开发。开发ENC源代码需具备地理信息系统(GIS)和导航领域的专业知识,以确保电子海图的准确性和功能性。 总之,ENC的源代码是实现电子海图功能的关键部分,它完成了对ENC文件的读取、解析和可视化展示等功能。通过编写和优化ENC源代码,可以提高电子海图的性能和用户体验,为航海安全和导航带来更多的助力。 ### 回答3: 电子海图编码(ENC)是一种电子化的海图数据格式,它以原始海图数据为基础,经过一系列的编码和压缩处理,使其能够在电子导航系统中使用。ENC源代码是指用于生成和处理ENC数据的程序源代码。 ENC源代码通常由海图制作厂商开发和维护,其主要功能包括以下几个方面: 1. 解析和读取海图数据:ENC数据的格式复杂多样,源代码会实现相应的解析算法,能够将编码后的海图数据进行读取和解析,获取其中的地理信息和属性数据。 2. 数据库管理:ENC数据需要存储在数据库中进行管理,源代码可能包含对数据库的操作和管理功能,如插入、查询、更新和删除数据等。 3. 编码和解码:ENC源代码会实现海图数据的编码和解码算法,以便在数据传输和存储过程中进行压缩和恢复。编码算法用于将原始的地理数据转换为ENC格式,解码算法则用于将编码后的数据还原为可读的地图数据。 4. 渲染和显示:ENC源代码还会包含一些图形渲染和显示功能,能够将海图数据以图形的形式呈现在电子导航系统的显示屏上,使得用户能够直观地理解和使用海图信息。 5. 交互和搜索:ENC源代码可能还会实现一些用户交互和搜索的功能,如通过点击海图获取特定地理数据或搜索地点名称等。 ENC源代码的编写需要结合海图数据的特点和功能需求,使用合适的编程语言和工具进行开发。ENC数据的格式和标准由国际海事组织(IMO)制定和管理,源代码开发者需要对相关的规范和标准进行遵循,以确保生成的ENC数据符合国际标准,并能够与其他电子导航系统进行兼容。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值