ArcGIS Blog

Developers

ArcGIS Maps SDK for Qt

Introducing S-63 encrypted ENC support in ArcGIS Maps SDK for Qt

By Lucas Danzinger

Image of cargo ships

ArcGIS Maps SDK for Qt has supported the Electronic Navigational Chart (ENC) S-52 and S-57 standards since 2017. New with version 300.0, Qt Maps SDK now supports S-63, the standard that the International Hydrographic Organization (IHO) created to protect ENC data through encryption. By using S-63, you can ensure that no one has tampered with your data and that it comes from an authoritative source that the IHO recognizes, helping you make safer decisions on the water.

A brief history of maritime navigation

Humans have long been sailing the open seas using nothing more than a compass, paper map, and some mathematics. In fact, maritime navigation is largely what we have to thank for the omnipresent Mercator projection, which preserves angles and was great for 16th-century explorers but fails pretty much everywhere else. But I digress. These days, mariners have shifted to digital systems, primarily through the use of Electronic Chart Display and Information Systems (ECDIS) and ENC data. An ECDIS is a geographic information system that mariners use for navigation, and it serves as a legal replacement for paper nautical charts under regulations from the International Maritime Organization (IMO). ENC data is the digital nautical chart data in an ECDIS, typically using the S-57 standard to define the hydrographic data and the S-52 standard to define the portrayal of chart symbology and colors.

Organizations around the world use ENC data in a wide range of applications, including:
  • Planning, optimizing, and simulating nautical routes
  • Operating uncrewed autonomous vehicles remotely
  • Supporting maritime port command and control
  • Enhancing pilot situational awareness during port maneuvers
  • Analyzing incidents by combining ENC data with ship locations and weather data
  • Replacing in-house or legacy maritime charting systems

How to get started

To allow your app to work with S-63 encrypted data, you need the S-63 API, which allows you to decrypt the data. Esri delivers the S-63 API in a separate package from ArcGIS Maps SDK for Qt. To use this package, you need to request permission, download it, install it, and configure it.

To request access, send an email to ArcGISRuntimeS63@esri.com. Our product management team will request some information about your organization and project and which platforms you need to access (Qt supports S-63 on Android, iOS, Linux, macOS and Windows).

After you obtain the supplemental S-63 package, you will need to install it alongside ArcGIS Maps SDK for Qt. Here are the steps to follow:

  • If you have not done so already, install ArcGIS Maps SDK for Qt using the install guide.
  • Download the supplemental S-63 package for your desired platform. The package is a .zip file that contains the libraries, build files, readme, and sample.
  • Extract the .zip file to your desired location.
  • Configure the package to finish the installation process:

cd ArcGIS_S63_Qt_300.0.0/
./configure.sh

  • In your application’s project file, reference the path to the S-63 EsriS63.pri or EsriS63.cmake file

qmake:

include($$PWD/arcgisruntime.pri) # place below this line</code
include(/path/to/EsriS63.pri)

CMake:

find_package(ArcGISRuntime 300.1.0 COMPONENTS REQUIRED Cpp)
qt_add_executable(${PROJECT_NAME} ..) # place below this line
include(relative/path/to/EsriS63.cmake)

Your application is now set up to access the classes that are needed to decrypt the S-63 data.

Image of S-63 Sample using Qt Maps SDK.

Decrypting S-63 from within your app

The S-63 API is small and only used for decrypting the ENC dataset. The key steps are as follows.

  1. Include S63EnvironmentSettings in your app
    • e.g. #include “S63EnvironmentSettings.h”
  1. Set your hardware ID, as it pertains to the hardware ID agreed upon with IHO
    • e.g. S63EnvironmentSettings::setHardwareId("12345");
    • NOTE: this step requires a Standard license and is not accessible in developer mode.
  2. Set your certificate path with the certificate obtained from IHO
    • e.g. S63EnvironmentSettings::setCertificatePath(“s63/iho.crt”);
  3. Load your ENC Exchange Set
    • e.g. auto encExchangeSet = new EncExchangeSet(QStringList{“V01X01/ENC_ROOT/CATALOG.031”}, this);
  4. Handle any warnings or errors returned following the S-63 guide and OEM agreement.

The Access Encrypted ENCs section of the Display electronic navigational chart documentation describes these steps in further details.

At this point, the S-63 work is done, and you can visualize, interact with, and select data in your ENC dataset. See the Configure Electronic navigational charts sample for more code examples on working with hydrographic data in ArcGIS Maps SDK for Qt.

Conclusion

S-63 plays a critical role in ensuring the authenticity and integrity of ENC data, and ArcGIS Maps SDK 300.0 for Qt now supports this standard. If you’re interested in using it, start a conversation with us by emailing ArcGISRuntimeS63@esri.com.

Share this article

Leave a Reply