<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Offline 3D Elevation Data/Scene in .NET Maps SDK Questions</title>
    <link>https://community.esri.com/t5/net-maps-sdk-questions/offline-3d-elevation-data-scene/m-p/1659380#M13745</link>
    <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I'm looking for some help getting offline 3D elevation data working properly in a WPF/.NET 9 application (Windows 11) that uses ArcGIS Runtime SDK for .NET to power a 3D scene. The goal is to render 3D terrain with elevation and a custom imagery basemap, fully offline.&lt;/P&gt;&lt;P&gt;When I use this elevation service:&lt;/P&gt;&lt;P&gt;&lt;A href="https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer" target="_new" rel="noopener"&gt;https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer&lt;/A&gt;&lt;/P&gt;&lt;P&gt;…and pair it with a .tpkx basemap I created, everything works perfectly. The 3D terrain renders, and the ground texture + color shows up as intended.&lt;/P&gt;&lt;P&gt;I need this system to function offline.&lt;/P&gt;&lt;P&gt;To prepare for this, I downloaded 1/3 arc-second (10m) DEM tiles from the National Map:&lt;/P&gt;&lt;P&gt;&lt;A href="https://apps.nationalmap.gov/downloader/" target="_new" rel="noopener"&gt;https://apps.nationalmap.gov/downloader/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;For testing, I chose a tile covering the Tucson, AZ area. I followed this workflow in ArcGIS Pro:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;P&gt;Used "Manage Tile Cache" with the WGS84 V2 tiling scheme and “Elevation” format.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Then ran "Export Tile Cache" to output a .tpkx from the tile cache.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;For the basemap, I also used Manage Tile Cache → Create Tile Cache → Export Tile Cache, using imagery data (configured to match Tucson area).&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Both elevation and basemap caches use the tiling scheme.&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;Here are my current results,&lt;/P&gt;&lt;P&gt;Case 1: Load elevation .tpkx (no basemap)&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;3D terrain shows up (elevation working)&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Ground is white/grid/dotted (no imagery)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Case 2: Load basemap .tpkx (no elevation)&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;Ground texture and color load&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Terrain is flat (elevation not applied)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Case 3: Load both elevation + basemap .tpkx&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;Terrain becomes flat again&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Imagery shows up properly&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;So far, I have not been able to get both the imagery basemap and 3D terrain working together in offline mode — it’s always one or the other.&lt;/P&gt;&lt;P&gt;Here's the code currently used to load the basemap and elevation.&amp;nbsp; This version of the code loads the 3D terrain but not the colored basemap over it:&lt;/P&gt;&lt;P&gt;public async static Task&amp;lt;SceneView&amp;gt; 3DScene_Initialize (SceneView sceneView)&lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;{&lt;BR /&gt;sceneView.SetFieldOfView(85);&lt;/P&gt;&lt;P&gt;// Basemap (imagery)&lt;BR /&gt;string basemapPath = @"MYPATH";&lt;BR /&gt;TileCache basemapCache = new TileCache(basemapPath);&lt;BR /&gt;ArcGISTiledLayer basemapLayer = new ArcGISTiledLayer(basemapCache);&lt;BR /&gt;Scene scene = new Scene(new Basemap(basemapLayer));&lt;BR /&gt;sceneView.Scene = scene;&lt;/P&gt;&lt;P&gt;// Elevation&lt;BR /&gt;string elevationPath = @"MYPATH";&lt;BR /&gt;TileCache elevationCache = new TileCache(elevationPath);&lt;BR /&gt;ArcGISTiledElevationSource elevationSource = new ArcGISTiledElevationSource(elevationCache);&lt;/P&gt;&lt;P&gt;Surface elevationSurface = new Surface();&lt;BR /&gt;elevationSurface.ElevationSources.Add(elevationSource);&lt;BR /&gt;elevationSurface.ElevationExaggeration = 1.5;scene.BaseSurface = elevationSurface;&lt;/P&gt;&lt;P&gt;// Clean up&lt;BR /&gt;sceneView.Unloaded += (s, e) =&amp;gt;&lt;BR /&gt;{&lt;BR /&gt;if (sceneView.Scene != null)&lt;BR /&gt;{&lt;BR /&gt;sceneView.Scene.OperationalLayers.Clear();&lt;BR /&gt;sceneView.GraphicsOverlays.Clear();&lt;BR /&gt;}&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;return sceneView;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;From my troubleshooting so far, I suspect:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;A projection mismatch or tiling scheme issue between the basemap and elevation .tpkx&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Possibly something about the draw order or layer conflicts between the elevation surface and the imagery&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;The .tpkx basemap might not be rendering correctly over the custom elevation surface when loaded together&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;Does the level of detail on each map have to match?&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Questions/Thoughts?&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;P&gt;Is there a required projection or tiling scheme for basemaps to overlay correctly on an elevation .tpkx?&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Is there a known conflict when using custom ArcGISTiledLayer + ArcGISTiledElevationSource in the same scene?&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Are there any tools in ArcGIS Pro that can help verify or align these two caches?&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Is there a preferred export format or method (e.g., LERC, JPEG, etc.) for this use case&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;Any help on this would be very much appreciated and I would be very grateful for.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank You!&lt;/P&gt;</description>
    <pubDate>Tue, 21 Oct 2025 18:04:07 GMT</pubDate>
    <dc:creator>Polemics</dc:creator>
    <dc:date>2025-10-21T18:04:07Z</dc:date>
    <item>
      <title>Offline 3D Elevation Data/Scene</title>
      <link>https://community.esri.com/t5/net-maps-sdk-questions/offline-3d-elevation-data-scene/m-p/1659380#M13745</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I'm looking for some help getting offline 3D elevation data working properly in a WPF/.NET 9 application (Windows 11) that uses ArcGIS Runtime SDK for .NET to power a 3D scene. The goal is to render 3D terrain with elevation and a custom imagery basemap, fully offline.&lt;/P&gt;&lt;P&gt;When I use this elevation service:&lt;/P&gt;&lt;P&gt;&lt;A href="https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer" target="_new" rel="noopener"&gt;https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer&lt;/A&gt;&lt;/P&gt;&lt;P&gt;…and pair it with a .tpkx basemap I created, everything works perfectly. The 3D terrain renders, and the ground texture + color shows up as intended.&lt;/P&gt;&lt;P&gt;I need this system to function offline.&lt;/P&gt;&lt;P&gt;To prepare for this, I downloaded 1/3 arc-second (10m) DEM tiles from the National Map:&lt;/P&gt;&lt;P&gt;&lt;A href="https://apps.nationalmap.gov/downloader/" target="_new" rel="noopener"&gt;https://apps.nationalmap.gov/downloader/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;For testing, I chose a tile covering the Tucson, AZ area. I followed this workflow in ArcGIS Pro:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;P&gt;Used "Manage Tile Cache" with the WGS84 V2 tiling scheme and “Elevation” format.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Then ran "Export Tile Cache" to output a .tpkx from the tile cache.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;For the basemap, I also used Manage Tile Cache → Create Tile Cache → Export Tile Cache, using imagery data (configured to match Tucson area).&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Both elevation and basemap caches use the tiling scheme.&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;Here are my current results,&lt;/P&gt;&lt;P&gt;Case 1: Load elevation .tpkx (no basemap)&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;3D terrain shows up (elevation working)&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Ground is white/grid/dotted (no imagery)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Case 2: Load basemap .tpkx (no elevation)&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;Ground texture and color load&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Terrain is flat (elevation not applied)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Case 3: Load both elevation + basemap .tpkx&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;Terrain becomes flat again&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Imagery shows up properly&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;So far, I have not been able to get both the imagery basemap and 3D terrain working together in offline mode — it’s always one or the other.&lt;/P&gt;&lt;P&gt;Here's the code currently used to load the basemap and elevation.&amp;nbsp; This version of the code loads the 3D terrain but not the colored basemap over it:&lt;/P&gt;&lt;P&gt;public async static Task&amp;lt;SceneView&amp;gt; 3DScene_Initialize (SceneView sceneView)&lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;{&lt;BR /&gt;sceneView.SetFieldOfView(85);&lt;/P&gt;&lt;P&gt;// Basemap (imagery)&lt;BR /&gt;string basemapPath = @"MYPATH";&lt;BR /&gt;TileCache basemapCache = new TileCache(basemapPath);&lt;BR /&gt;ArcGISTiledLayer basemapLayer = new ArcGISTiledLayer(basemapCache);&lt;BR /&gt;Scene scene = new Scene(new Basemap(basemapLayer));&lt;BR /&gt;sceneView.Scene = scene;&lt;/P&gt;&lt;P&gt;// Elevation&lt;BR /&gt;string elevationPath = @"MYPATH";&lt;BR /&gt;TileCache elevationCache = new TileCache(elevationPath);&lt;BR /&gt;ArcGISTiledElevationSource elevationSource = new ArcGISTiledElevationSource(elevationCache);&lt;/P&gt;&lt;P&gt;Surface elevationSurface = new Surface();&lt;BR /&gt;elevationSurface.ElevationSources.Add(elevationSource);&lt;BR /&gt;elevationSurface.ElevationExaggeration = 1.5;scene.BaseSurface = elevationSurface;&lt;/P&gt;&lt;P&gt;// Clean up&lt;BR /&gt;sceneView.Unloaded += (s, e) =&amp;gt;&lt;BR /&gt;{&lt;BR /&gt;if (sceneView.Scene != null)&lt;BR /&gt;{&lt;BR /&gt;sceneView.Scene.OperationalLayers.Clear();&lt;BR /&gt;sceneView.GraphicsOverlays.Clear();&lt;BR /&gt;}&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;return sceneView;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;From my troubleshooting so far, I suspect:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;A projection mismatch or tiling scheme issue between the basemap and elevation .tpkx&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Possibly something about the draw order or layer conflicts between the elevation surface and the imagery&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;The .tpkx basemap might not be rendering correctly over the custom elevation surface when loaded together&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;Does the level of detail on each map have to match?&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Questions/Thoughts?&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;P&gt;Is there a required projection or tiling scheme for basemaps to overlay correctly on an elevation .tpkx?&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Is there a known conflict when using custom ArcGISTiledLayer + ArcGISTiledElevationSource in the same scene?&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Are there any tools in ArcGIS Pro that can help verify or align these two caches?&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Is there a preferred export format or method (e.g., LERC, JPEG, etc.) for this use case&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;Any help on this would be very much appreciated and I would be very grateful for.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank You!&lt;/P&gt;</description>
      <pubDate>Tue, 21 Oct 2025 18:04:07 GMT</pubDate>
      <guid>https://community.esri.com/t5/net-maps-sdk-questions/offline-3d-elevation-data-scene/m-p/1659380#M13745</guid>
      <dc:creator>Polemics</dc:creator>
      <dc:date>2025-10-21T18:04:07Z</dc:date>
    </item>
  </channel>
</rss>

