Skip to content

Add elevation source from tile package

View on GitHub

Set the terrain surface with elevation described by a local tile package.

Screenshot of Add elevation source from tile package sample

Use case

In a scene view, the terrain surface is what the basemap, operational layers, and graphics are draped onto. For example, when viewing a scene in a mountainous region, applying a terrain surface to the scene will help in recognizing the slopes, valleys, and elevated areas.

How to use the sample

When loaded, the sample will show a scene with a terrain surface applied. Pan and zoom to explore the scene and observe how the terrain surface allows visualizing elevation differences.

How it works

  1. Create a Scene and add it to a SceneView.
  2. Create an ArcGISTiledElevationSource with the path to the local tile package.
  3. Add the source to the scene's base surface.

Relevant API

  • ArcGISTiledElevationSource
  • Surface

Offline data

This sample uses the Monterey Elevation tile package, using CompactV2 storage format (.tpkx). It is downloaded from ArcGIS Online automatically.

Additional information

The tile package must be a LERC (limited error raster compression) encoded TPK/TPKX. Details on the topic can be found in Share a tile package in the ArcGIS Pro documentation.

Tags

3D, elevation, LERC, surface, terrain, tile cache

Sample Code

AddElevationSourceFromTilePackageView.swift
Use dark colors for code blocksCopy
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 // 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 // // https://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.  import ArcGIS import SwiftUI  struct AddElevationSourceFromTilePackageView: View {  /// A scene with elevation for Monterey, California.  @State private var scene: ArcGIS.Scene = {  let scene = Scene(basemapStyle: .arcGISImagery)   // Creates the tiled elevation source using a URL.  let rasterElevationSource = ArcGISTiledElevationSource(url: .montereyElevationTilePackage)   // Creates a surface to add the elevation source to the scene.  let surface = Surface()  surface.addElevationSource(rasterElevationSource)  scene.baseSurface = surface   // Sets the scene's initial camera to showcase the elevation.  let camera = Camera(  latitude: 36.525,  longitude: -121.8,  altitude: 300,  heading: 180,  pitch: 80,  roll: 0  )  let viewpoint = Viewpoint(latitude: .nan, longitude: .nan, scale: .nan, camera: camera)  scene.initialViewpoint = viewpoint   return scene  }()   var body: some View {  // Displays the scene in a scene view.  SceneView(scene: scene)  } }  private extension URL {  /// The URL to the local tile package file with elevation data for Monterey, California.  static var montereyElevationTilePackage: URL {  Bundle.main.url(forResource: "MontereyElevation", withExtension: "tpkx")!  } }

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.