Hello -
The world elevation service does not provide enough topographic relief in my gently sloping project area. I am trying to test if it gets better using a USGS NED raster in a custom ElevationLayer. However, in the browser console log I receive "Error Decoding: undefined" for my custom DEM tiles.
The only thing different from this sample and the documentation is that I do not have the Image Server extension on our ArcGIS Server (10.5). I'm simply publishing an Image Service from Catalog to our regular Server. The REST URL however does state "Image Server". The raster is in Web Mercator and tiled with ArcGIS tile scheme.
Can I only do this with a literal Image Server license? Or am I missing something else? I cannot share my dem URL.
require(["esri/Map", "esri/views/SceneView", "esri/layers/BaseElevationLayer", "esri/layers/ElevationLayer", "esri/layers/FeatureLayer", "esri/renderers/SimpleRenderer", "esri/symbols/ObjectSymbol3DLayer",
"esri/symbols/PointSymbol3D", "dojo/domReady!"],
function(Map, SceneView, BaseElevationLayer, ElevationLayer, FeatureLayer, SimpleRenderer, ObjectSymbol3DLayer, PointSymbol3D) {
var mapObj = new Map({
basemap : "satellite",
ground : "world-elevation"
});
var viewObj = new SceneView({
container : "mapDiv",
camera: {
position: {
x: -10888242.6,
y: 6093694.16,
z: 1618269,
spatialReference: {
wkid: 102100
}
},
heading: 17,
tilt: 48
},
map : mapObj, // Reference to the map object created before the scene
scale : 50000,
center : [-97.81, 47.94]
});
// Create elevation layer and add to the map
var dem = new ElevationLayer({
url: "https://xxx/arcgis/rest/services/dem/ImageServer", //ArcGIS Server 10.5
visible: true
});
mapObj.ground.layers.add(dem);
});
Solved! Go to Solution.
Elevation data is expected to be encoded using lerc, which is an open source method for encoding (and compressing?) image data: GitHub - Esri/lerc: Limited Error Raster Compression
My feeling based on your description and the error message you're getting is that the image service you've set up isn't serving up lerc encoded data and therefore the JS API isn't equipped to handle it. Also, my understanding is that the JS API expects image services suitable for backing elevation layers to be cached, as elevation data is assumed to have various levels of detail.
I'm not sure whether an image server license is required for publishing elevation layers, but here's a list of steps to get an elevation layer published: Publish an elevation image service—Documentation | ArcGIS Enterprise
Another troubleshooting option would be to compare your image service's page with the world elevation page: WorldElevation3D/Terrain3D (ImageServer). You can see that service page has a TileInfo field that specifies the LODs, and that the format is LERC.
Elevation data is expected to be encoded using lerc, which is an open source method for encoding (and compressing?) image data: GitHub - Esri/lerc: Limited Error Raster Compression
My feeling based on your description and the error message you're getting is that the image service you've set up isn't serving up lerc encoded data and therefore the JS API isn't equipped to handle it. Also, my understanding is that the JS API expects image services suitable for backing elevation layers to be cached, as elevation data is assumed to have various levels of detail.
I'm not sure whether an image server license is required for publishing elevation layers, but here's a list of steps to get an elevation layer published: Publish an elevation image service—Documentation | ArcGIS Enterprise
Another troubleshooting option would be to compare your image service's page with the world elevation page: WorldElevation3D/Terrain3D (ImageServer). You can see that service page has a TileInfo field that specifies the LODs, and that the format is LERC.
Thanks - there in fact were 2 settings in Services Editor to specify LERC. The defaults allowed other formats