Creating 3D content for ArcGIS Online
In this blog I am going to take the data provided in this ArcGIS Pro tutorial focused on creating 3D content in ArcGIS Enterprise and show you how you can create 3D content for ArcGIS Online. We are going to go over how to create scene layers, elevation layers, style scene layers and feature layers in Scene Viewer and finally create a web app from the web scene we author.
What am I using in this blog to create 3D Layers and Scene?
In this blog I am using:
- Provided data you can download here.
- ArcGIS Pro 2.0 (You can use 1.4 as well)
- ArcGIS Online Organization with a level 2 account with a publisher role
- Hosted Scene Layers, Hosted Elevation Layers, Hosted Feature Layers
- Scene Viewer
- Web AppBuilder
Creating Hosted Elevation Layer
For our local scene we will be creating in Pro we will want to use a hosted elevation layer so when you share this local scene to ArcGIS Online to create a web scene it will be using the same hosted elevation layer and correct extent. When creating a hosted elevation layer you will want to make sure you make sure your using a coordinate system and tiling scheme that will later match the same as basemap layer. In the provided data there is a tiling scheme file so we will not have to generate one for the elevation layer. In Pro we are going to use the Manage Tile Cache tool. Here you will use the Portland_DTM3ft data as the Data Source which is in the downloaded file geodatabase and on the Input Tiling Scheme, pick the option to Import scheme and select the Portland_DTM3ft xml file and run the tool.
Next we will use the Export Tile Cache tool to generate a tile package with the output from the Manage Tile Cache tool. Make sure you set the export cache as tile package.
After this generates a tile package you can go to your ArcGIS Online organization and go to My Content in a click on Add Item and select the generated tile package. This will begin publishing a hosted elevation layer. Once the hosted elevation layer has completed publishing we will add it as the elevation layer in Pro. On packages that are bigger than 1 gig you can use the Share Package tool in Pro.
Creating a Local Scene Clipped to a Specific Extent
Open up ArcGIS Pro and start a new local scene project. Once your new project has loaded we will want to add that file geodatabase to this project. To do this in the Catalog pane, right-click Databases and click Add Database . Browse to and select the downloaded file which will need to be unzipped and add the geodatabase 3D_Portland.gdb.
Now to add the data to the local scene, go to the Map tabthe Map tab, in the Layer group, click Add Data . Browse to the 3D_Portland file geodatabase and add the following layers:
The scene automatically switches to the projected coordinate system of the data: NAD 1983 HARN StatePlane Oregon North FIPS 3601 Feet International. Right-click the Topographic basemap layer and click Remove. We will have the Portland_Topo layer will replace it.
Now remove the Terrain3D elevation layer because we will be using a custom elevation layer in this scene. You can remove this by right clicking on In the Contents pane, right-click Scene and click Properties and going to the Elevation Tab where you will remove the Terrain3D under Elevation sources. To bring in the Portland elevation data that was published as a hosted elevation layer click Add Elevation Source. Browse to the Portland elevation layer under My Content which is showing the content under your ArcGIS Online Organization account.
Next we will want to clip this scene to the extent of the basemap because we will want to use this exact extent in the local scene we are going to publish to ArcGIS Online from Pro. On the Extent tab, click Custom extent. Click the Calculate from drop-down menu and click Clip.
Now you can remove the Clip layer from the scene and we are going to share this local scene to ArcGIS Online to use later on. Go to the Share tab and click on Web Scene. In the Share as a Web Scene dialog click on Content and then right click on the tile layer and click on the option to configure the web layer. We are now going to use Portland_Aerial tiling scheme file that is included in the downloaded zip file.
Under the configure web layer panel, click on configuration and choose the tiling scheme file option in the drop down menu and select Portland_Aerial file. After setting this go back to the Share panel and begin the publishing process. This will publish just the topo layer and a clipped extent local scene while using the hosted elevation layer. You can see the web scene in the link provided at the bottom of the Share panel in Pro.
Creating 3D Buildings – Publishing Hosted 3D Object Scene Layers
The base layers for our scene have been completed let’s begin creating operational layers for this web scene. Add the building footprints to the scene in Pro using On the Map tab, in the Layer group, click Add Data . In the table of contents, drag the Buildings layer from the 2D Layers group into the 3D Layers group so you can define the buildings extrusion. Right-click the Buildings layer and click Properties . On the Elevation tab, click the Features are drop-down menu and click On the Ground.
The buildings are now at a height of zero, drawing below the terrain surface. Starting the buildings at a height of zero will ensure the buildings are extruded to the correct height and will not be affected by the slope of the terrain. Click OK to close the Properties dialog box. Click the Buildings layer in the Contents pane and click the Appearance contextual tab. Click Feature extrusion type and click Base Height . Click the Extrusion Expression button . Subtract the Adjusted Surface Elevation from the Roof Elevation, [ROOF_ELEV]-[SURF_ADJ]. Click the Unit drop-down menu and click Feet to match the projection of the data. The buildings are now extruded to the correct height but are not yet aligned with the surface.
After you extrude the building footprints run the Layer 3D to Feature Class to create a multipatch feature class from the extruded polygons. For the Grouping Field, click Building ID, and accept all other defaults. Click Run. When you pick the grouping field for the Input features will merge multiple input features into the same output feature. The resulting remaining attributes will be inherited from one of the input records. This will limit the attributes in the output multipatch with only the grouping attribute. I did a join with the polygon layer to the multipatch dataset and did an export on the multipatch feature class to create a new feature class that will include a set of attributes to use for popups or smart mapping in Scene Viewer.
To share this multipatch feature class to ArcGIS Online to create a hosted feature layer drag the layer down to the 2D section of the Contents pane and right click on it and choose to Share as Web Layer. After you give the layer a title and tags click Publish.
After the layer has completed publishing go to the feature layer item in ArcGIS Online. On the feature layer item you are going to publish a scene layer from the feature layer. To do this go to the Publish button on the right hand side of the Item and choose the Scene Layer option.
On the publish dialog fill out the tags and summary and on the option for Global or Local choose the Local option. We choose this option because it is going to create a scene layer for the local projection because the elevation and tile layer are all in that same local coordinate system.
After the scene layer finishes publishing it is ready to be added to the web scene. Open up the local web scene we authored from Pro and click on Add Layers and add the scene layer to the web scene.
We can change the colors of the buildings by clicking on the layer in the contents pane. For this layer I am using the attribute Maintaining Agency to style the buildings scene layer using the Types smart mapping renderer which will uniquely color the buildings based on that attribute value. I am going to use the default colors for this layer but you can click on the Options button to change the colors used, transparency and elevation offset. You can also set to hide the legend or disable popups.
Using Web Styles to Style Points
The next thing we want to do is publish the trees layer that is in the provided geodatabase. If you open up the attribute table for this feature class you will see that there are less than 2000 features in the feature class. This means we do not have to publish this as a point scene layer. A point scene layer can be used to publish a point layer that has more than 2000 features and is the recommend layer to use when streaming in massive amounts of points. In a previous blog posted I used a point scene layer to stream in half a million points into a web scene.
Add this point feature class in Pro to the 2D section of the contents pane. Just like with the multipatch feature class, right click on the layer and click Share as Web Layer. This will create a hosted point feature layer. After the layer has finished publishing, add it into your web scene with the configured buildings. Once the layer is added, click on the layer in the Contents Pane to bring up the Configure Layer panel and you will see the option to display the trees using 2D or 3D styles. You can also use attributes in the drop down menu to bring up 2D and 3D options for Counts and Amounts or Types(Unique Renderer) smart mapping styles. Click on 3D Object and click options.
On this panel we can choose from the Esri provided web styles and configure similar options like show popups, legend and offset. Click on the Symbol and select Thematic Vegetation and pick a tree you want to style the layer with.
Next we want to use the attribute TREE_HEIGHT to drive the height of the trees in the scene. The tree height is recorded in ft so choose that unit of measurement on the drop down menu next to the attribute you selected.
Here is what the web scene will look like after the tree layer has been fully configured.
Using Slides and Daylight
The layers in the web scene are now fully configured we can go ahead and create slides and configure the daylight settings which is also stored in the slides. To change the Daylight click on the sun symbol on the right hand side of Scene Viewer and move the slider to change the suns position. This will move the suns location and with that you will see the shadows for the buildings and trees move.
Now open up the Slides option and click on Create Slide to capture this configuration of the web scene in the slide. You can pick different locations and different times of day as you create more slides. Once you have created the slides you want click Save to apply these changes to the web scene.