Select to view content in your preferred language

Cached SceneView image overlays don't upscale on zoom post 4.27 build

329
5
Jump to solution
09-10-2024 11:44 AM
cgarrity_USGS
Emerging Contributor

Post build 4.27, overlain cached imagery in SceneView doesn't seem to upscale as the user zooms in. It appears very low resolution. It's almost as if it's not calling the higher pyramids and simply getting stuck on the first level internal overlay. In MapView, all works as expected on the same cached services. See example SceneView screenshots from the same area in a 4.26 build vs a 4.30 build. 

 

4_26_cap.png4_30_cap.png

0 Kudos
1 Solution

Accepted Solutions
cgarrity_USGS
Emerging Contributor

Thanks Grete,

The image service in question is a standard ArcGIS Online / Google / Bing tiling scheme generated from COGs. Probably not ideal for SceneView as the LOD scale values are floating point but I can't imagine that would matter in rendering the LODs. In digging a bit more it looks like something very similar was addressed in the 4.28 build. Noted in Release notes for 4.28 | Overview | ArcGIS Maps SDK for JavaScript 4.30 | Esri Developer here: 

I imagine this is the inverse of what we're seeing and is likely related to how the service was generated in the 10.X Server environment. I'll ask the service provider to re-cache the service. In the meantime, manually setting tileInfo via JS does the job. Cheers! 

View solution in original post

5 Replies
GreteSoosalu
Esri Contributor

Hi @cgarrity_USGS 

Could you maybe share your scene (e.g. via a direct message) or explain what type of layers and settings you are using? 

0 Kudos
cgarrity_USGS
Emerging Contributor

Hi Grete,

Thanks for the reply. This was an odd one for sure! I was calling an ImageTileLayer derived from a cached image service. In MapView, everything works as expected at all zoom levels. However, when I switched to SceneView, the same ImageTileLayer rendered what appeared to be just the first LOD. The result was a blurry overlay when zoomed in, as the LODs didn’t seem to change. This issue only occurs in builds post v.4.27. For more recent builds, I had to call TileInfo to get around this (see below). I can only assume that something changed in the way LODs are rendered for ImageTileLayer after v.4.27 (I need to look at the changelog). It may be worth looking into if others have the same issue. Cheers!

// Force TileInfo to render ImageTileLayer properly for SceneView (post v.4.27)
 
const tileInfo = new TileInfo({
                dpi: 96,
                rows: 256,
                cols: 256,
                origin: {
                    x: -20037508.342787,
                    y: 20037508.342787
                },
                spatialReference: {
                    wkid: 3857
                },
                lods: [
                { level: 0, resolution: 156543.033928, scale: 591657527.591555 },
                { level: 1, resolution: 78271.5169639999, scale: 295828763.795777 },
                { level: 2, resolution: 39135.7584820001, scale: 147914381.897889 },
                { level: 3, resolution: 19567.8792409999, scale: 73957190.948944 },
                { level: 4, resolution: 9783.93962049996, scale: 36978595.474472 },
                { level: 5, resolution: 4891.96981024998, scale: 18489297.737236 },
                { level: 6, resolution: 2445.98490512499, scale: 9244648.868618 },
                { level: 7, resolution: 1222.99245256249, scale: 4622324.434309 },
                { level: 8, resolution: 611.49622628138, scale: 2311162.217155 },
                { level: 9, resolution: 305.748113140558, scale: 1155581.108577 },
                { level: 10, resolution: 152.874056570411, scale: 577790.554289 },
                    // Add more levels as needed (standard ArcGIS Online tiling scheme)
                ]
            });
 
// Create an ImageryTileLayer with defined TileInfo
            var imageryLayer = new ImageryTileLayer({
                url: "...",
                tileInfo: tileInfo
            });
0 Kudos
GreteSoosalu
Esri Contributor

Hi again,
Thanks for the details! We've looked into this but to troubleshoot further, we'd need to see how some of the properties on the service are set up. Could you share the image service root json with us? You can also send it to me via a direct message. 

0 Kudos
cgarrity_USGS
Emerging Contributor

Thanks Grete,

The image service in question is a standard ArcGIS Online / Google / Bing tiling scheme generated from COGs. Probably not ideal for SceneView as the LOD scale values are floating point but I can't imagine that would matter in rendering the LODs. In digging a bit more it looks like something very similar was addressed in the 4.28 build. Noted in Release notes for 4.28 | Overview | ArcGIS Maps SDK for JavaScript 4.30 | Esri Developer here: 

I imagine this is the inverse of what we're seeing and is likely related to how the service was generated in the 10.X Server environment. I'll ask the service provider to re-cache the service. In the meantime, manually setting tileInfo via JS does the job. Cheers! 

GreteSoosalu
Esri Contributor

Thanks @cgarrity_USGS  for the update and the thorough investigation! 

0 Kudos