Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ArcGIS TiledElevation Terrain Provider #7940

Merged
merged 4 commits into from
Jun 18, 2019
Merged

ArcGIS TiledElevation Terrain Provider #7940

merged 4 commits into from
Jun 18, 2019

Conversation

Tamrat-B
Copy link
Contributor

Added support for LERC encoded terrain from an ArcGIS ImageServer (Tiled Elevation services) as 'ArcGISTiledElevationTerrainProvider'

@cesium-concierge
Copy link

Thanks for the pull request @Tamrat-B!

  • ❌ Missing CLA.
  • ❔ Changes to third party files were made.
    • Looks like a file in one of our ThirdParty folders (ThirdParty/, Source/ThirdParty/) has been added or modified. Please verify that it has a section in LICENSE.md and that its license information is up to date with this new version.

Reviewers, don't forget to make sure that:

  • Cesium Viewer works.
  • Works in 2D/CV.
  • Works (or fails gracefully) in IE11.

@pjcozzi
Copy link
Contributor

pjcozzi commented Jun 13, 2019

Really fantastic, thanks @Tamrat-B and @chri7928!

I just added you to our automated CLA system.

@tfili
Copy link
Contributor

tfili commented Jun 18, 2019

Thanks a lot @Tamrat-B @chri7928. This looks great.

@tfili tfili merged commit 00a5ad8 into CesiumGS:master Jun 18, 2019
@tfili tfili deleted the Tam/ArcGISTiledElevationTerrainProvider branch June 18, 2019 13:51
@robbo1975
Copy link

@Tamrat-B @chri7928 Is this provider intended to be able to be used with part-world ESRI terrain services? I am not having much success getting it to work with a custom part-world ESRI AWS service. The service does not expose the 'Tilemap' capability, but when 'bypassed' the data returned is [0,1,0,0] (instead of [1,1,1,1] which is exposed by the public terrain service), this causes the provider to 'lock-up' when trying to execute 'findRange()'. I am unsure if this is a bug in the provider or if there is an issue with the way in which the service is set up. Any advice would be appreciated.

@OmarShehata
Copy link
Contributor

@robbo1975 I'm not sure what the answer is, but I'd recommend making a new topic on the community forum (https://community.cesium.com/) and add some instructions about how to reproduce (and any relevant links in the ESRI docs) to help us and others in the community investigate.

@Tamrat-B
Copy link
Contributor Author

@robbo1975 @OmarShehata
This use case is supported in the provider. During the development we verified with this use case and it did work. @tfili has confirmed nothing has changed in the provider; So most likely it might be how the service is set up; Can you pls provide an example of the service to @tfili for debugging if possible. thanks

@robbo1975
Copy link

robbo1975 commented Jul 27, 2020

@Tamrat-B @OmarShehata @tfili Thank you so much for responding to my query. Unfortunately I am not able to share the actual service as it is a private service set up by ESRI UK in an AWS environment. I am able to provide some details of the nature of the problem and snippets from the JSON etc. Would you prefer for me to open a thread on the community to provide the details or to paste them here? I have a whole range of diagnostic information ready to share as there appears to be several issues that cause the plugin to fail.

The service:
"currentVersion": 10.71
"capabilities": "Image,Tilemap,Metadata,Mensuration" (note, I previously reported that TileMap was not returned, but ESRI UK fixed this)

Summary of main issues found:

  1. The findRange() function in the provider gets stuck in an infinite loop very early on from the TileMap json data that is returned from /tilemap/1/0/0/2/2 [0,1,0,0]. The function is called with:
    findRange(origin = Cartesian2 {x: 1, y: 2}, width = 2, height = 2, data = (4) [0, 1, 0, 0])

  2. If I bypass the findRange() function no further tiles are attempted to be downloaded because the GlobeSurfaceTileProvider.prototype.computeTileVisibility returns visibility.NONE as a consequence of HeightmapTessellator.computeVertices setting the minimumHeight to -1x10^38. The reason that this happens is that it appears after LERC decoding the tile returns this extremely large negative number (presumably for areas where no data is provided). If I hack the code to return a mimiumHeight=0 when this happens then the globe will appear and the tiles are downloaded, but the terrain does not look correct and it is extremely slow whilst trying to get hold of tiles that do not exist (404 errors on console)

Any assistance you can provide would be appreciated as I am not a Cesium, ESRI or mapping expert!
Robbo

@OmarShehata
Copy link
Contributor

Would you prefer for me to open a thread on the community to provide the details or to paste them here? I have a whole range of diagnostic information ready to share as there appears to be several issues that cause the plugin to fail.

I think it would be helpful to move this discussion to the forum, that way anyone else running into it can contribute as well, and once we determine whether it's a CesiumJS bug, something that isn't supported, or an issue on the data side, we can open a new GitHub issue here that outlines what needs to be done.

I understand the service causing this issue is private, but if you can reproduce this with a terrain provider of the same type that's publicly available that'd help a lot (perhaps there's some sample data ESRI terrain data that can be used?)

@robbo1975
Copy link

@OmarShehata @Tamrat-B @tfili For completeness, I have raised the following topic on the community forums: https://community.cesium.com/t/does-esri-terrain-provider-support-part-world-terrain-data-services/10382

@Lauxb
Copy link

Lauxb commented Jun 20, 2024

@Tamrat-B @OmarShehata @tfili I encountered the same problem and couldn't find the answer after browsing through the forum. Therefore, I published a public test service to recreate the issue for testing. I hope to receive responses from everyone. I would be very grateful.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants