View on GitHub Sample viewer app

Display nautical charts per the ENC specification.

Image showing the add ENC exchange set app

Use case

The ENC specification describes how hydrographic data should be displayed digitally.

An ENC exchange set is a catalog of data files which can be loaded as cells. The cells contain information on how symbols should be displayed in relation to one another, so as to represent information such as depth and obstacles accurately.

How to use the sample

Run the sample and view the ENC data. Pan and zoom around the map. Take note of the high level of detail in the data and the smooth rendering of the layer.

How it works

  1. Specify the path to a local CATALOG.031 file to create an EncExchangeSet.
  2. After loading the exchange set, get the EncDataset objects in the exchange set with EncExchangeSet.datasets.
  3. Create an EncCell for each dataset. Then create an EncLayer for each cell.
  4. Add the ENC layer to a map’s operational layers collection to display it.

Relevant API

  • EncCell
  • EncDataset
  • EncExchangeSet
  • EncLayer

Offline data

This sample downloads the ENC Exchange Set without updates and Hydrography dataset resources from ArcGIS Online.

Additional information

This sample uses the GeoView-Compose Toolkit module to be able to implement a composable SceneView.

Tags

data, ENC, geoview-compose, hydrographic, layers, maritime, nautical chart

Sample Code

DownloadActivity.kt DownloadActivity.kt MainActivity.kt MapViewModel.kt MainScreen.kt
/* Copyright 2024 Esri
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package com.esri.arcgismaps.sample.addencexchangeset
import android.content.Intent
import android.os.Bundle
import com.esri.arcgismaps.sample.sampleslib.DownloaderActivity
class DownloadActivity : DownloaderActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
downloadAndStartSample(
Intent(this, MainActivity::class.java),
// get the app name of the sample
getString(R.string.add_enc_exchange_set_app_name),
listOf(
// ArcGIS Portal item containing ENC hydrography resources
"https://www.arcgis.com/home/item.html?id=5028bf3513ff4c38b28822d010a4937c",
// ArcGIS Portal item containing the ENC dataset
"https://www.arcgis.com/home/item.html?id=9d2987a825c646468b3ce7512fb76e2d"
)
)
}
}