Scene View add multiple transparent surfaces from ElevationService

1593
7
06-04-2018 06:16 AM
RichardReinicke
Occasional Contributor II

Hi,

actually I have a local scene view with a custom elevation service as ground layer. Now I would like to show other ImageServices from DEM MosaicDatasets/Caches as additional 3d surfaces (transparent) in the view. It seems I can always only render 1 ground layer at a time but I don`t want to have another ground layer. I want to have a second surface above the ground.

Is this possible? And how can I set the raster rendering to let`s say a simple single color like red?

Any help would be very appreciated!

7 Replies
RichardReinicke
Occasional Contributor II

Is this really impossible? 

Imagine a bunch of use cases like showing sub surface geological boundaries like faults or lithological boundaries. Or above the ground if you want to show a surface of maximum flood level, which is not always a plane surface.

If this isn't possible, is there a workaround?

I know I can have more then one GroundLayer while only one is the actual visible one. And I know I can show FeatureLayers relative to ground but that means always relative to the visible ground layer.  

Does noone have an idea?

RalucaNicola1
Esri Contributor

Hi Richard,

sorry, but this is currently not possible out of the box with the JavaScript API. It is planed, but not for this year.

You would need to do some sort of workaround. In  some web scenes of geological surfaces, they convert the data to a scene service. For example in this scene: Scene Viewer. Is this what you are after? I've never done it myself, but I've asked around and the following workflow would lead you to something like that:

- Use Raster to TIN to covert your DEM to a polygon based representation: http://pro.arcgis.com/en/pro-app/tool-reference/3d-analyst/raster-to-tin.htm

- Use Interpolate Polygon to Multipatch: http://pro.arcgis.com/en/pro-app/tool-reference/3d-analyst/interpolate-polygon-to-multipatch.htm - for large areas, you can experiment with having a grid of polygons (rather than one big one) to create multiple multipatch features per surface for improved performance.

RichardReinicke
Occasional Contributor II

Hi Raluca Nicola‌,

I assumed this wouldn't be possible at the moment and I was also thinking about a TIN solution. This would of course mean an information lost. We will discuss internally to determine our goals more specifically and maybe one of these approached will do for us.

Is the SceneLayer also supported in the API or only in AGOL SceneViewer? I also did some research on this item and it seems to be a high effort to publish such a Scene Layer. In fact we don't want to upload or host the data twice in AGOL and as far as I know we don't have data stores in use right now.

I'll keep this issue open. Maybe anyone else have an incredible good idea. But you get a big LIKE for your research and effort.

Thank you!

RalucaNicola1
Esri Contributor

Yes, scene layers are also supported in the API, you can see some examples here: SceneLayer Samples. They are mostly used for displaying building data, but some users also display geological surfaces with it.

I just had another idea, but this depends a lot on how big the area that you want to visualize is and what data you want to visualize: we also have a Mesh API, that can be used to display 3D geometry (this is not used in the SceneViewer). Have a look at this sample: Low poly terrain using mesh geometry | ArcGIS API for JavaScript 4.7 

The surface is generated based on an elevation layer. This surface is created on the client side and can not be persisted in AGOL. It's just for visualization purposes. It also probably doesn't perform very well when you have a big area...

Sure, keep it open, we don't really have a clean solution for it right now.

0 Kudos
RichardReinicke
Occasional Contributor II

Thank you once again for your ideas. From my current perspective the Scene Layer / Scene Service seems to be the best approach because we have some bigger data covering a whole state in Germany. Therefore we`re going to setup a Portal instance and the required data stores in the next days. 

In the Scene Layer are there performance differences due to the source of our data? I guess not because it gets cached anyway?

Is there a list of supported data sources Layers in a SceneLayer / SceneService?

0 Kudos
RalucaNicola1
Esri Contributor

In the end the data will be a multipatch, which is the standard for most 3D object scene layers. Performance depends on how detailed the area is, a whole state sounds like a pretty big surface, so the coarser, the better...but I can't give you any clear numbers.

A bit of explanation with regards to scene layers: at the platform level (so in Pro and ArcGIS Online) scene layers can have multiple data sources: points, multipatch, integrated mesh, lidar data. In the API we distinguish between them even further: SceneLayer can use points or multipatch, IntegratedMeshLayer uses only drone mesh data and PointCloudLayer uses lidar data. In your case you have multipatch data which is more or less standard for 3D Object SceneLayer. Here is an article with this overview: A guide to SceneLayers | ArcGIS API for JavaScript 4.7  

0 Kudos
nnolasco
New Contributor II

Hello RaculaNicola1, 

I was seeing if any progress has been made on this?  I am working on a scenario with a layer that has predicted flood depth based on storm events.  I have a local scene in with my roads and buildings, I would now like to set this water depth as another surface to show where the water is impacting the structures in 3D.  I have it correct in Pro, but I cannot find a way to make this work online.

0 Kudos