Create elevation layers

To create 3D buildings with detailed roof forms and accurate heights, you must first know what those forms and heights are. One of the best ways to determine the heights of a large number of surfaces is with lidar, a laser scanning technology that can cover large areas. You will use an ArcGIS Pro project downloaded from the solutions page that contains the 3D Basemaps solutions tools and workflows specific to local government municipal development. After downloading the project and data, you will convert raw lidar data of the Portland neighborhood into a 3D point cloud (LAS) dataset that shows where light from the scanner struck objects, including building rooftops. Then, you will convert the point cloud into raster datasets that show the elevation of the area. You can visit the ArcGIS Solutions page for more information. The links change frequently, so just search for ArcGIS Solutions in any web browser.

Download data

Before you begin, you must download data supplied by the City of Portland, and geoprocessing tools and rule packages that you will use throughout the workflow. You will also open an ArcGIS Pro task to take you through the workflow step-by-step.

  1. Download the compressed folder.
  2. Locate the downloaded file on your computer.

    Depending on your web browser, you may be prompted to choose where to download the file. Most browsers download to your computer's Downloads folder by default.

  3. In the Roof_Form_Extraction folder, double-click the 3DBasemaps ArcGIS Pro project package.

    If you do not have ArcGIS Pro or an ArcGIS account, you can sign up for an ArcGIS free trial.

    A blank project opens. Using this project that was downloaded for you from the solutions page, you can use pre-created tasks and tools that are included in the project and are common to local government workflows.

Create a LAS point cloud dataset

You will assemble the four lidar data files into a single LAS dataset, which can be displayed within ArcGIS Pro as a group of 3D points called a point cloud. A lidar scanner fires laser light at a target and determines the target's location in space based on how far the light travels before reflecting off the object. A point cloud shows the individual points where the laser struck an object, allowing you to visualize and analyze the location of surfaces in 3D. The individual lidar files can also be displayed in ArcGIS Pro, but you would have to repeat the same steps for each of the four files to display them all. Creating a LAS dataset that contains the data from all four files will save time.

  1. In the Catalog pane, right-click Folders and choose Add Folder Connection. In the Add Folder Connection window, browse to the Roof_Form_Extraction folder you unzipped earlier and click OK.

    The Roof_Form_Extraction folder contains several lidar files. Connecting your folder now will make finding this data easier to find later.

    For tools to work properly in later steps, the project package's default folder and geodatabase must be used. For example, when creating the buildings, the task looks for a layer rule package stored in the default folder. The default geodatabase for the project is called 3DBasemaps.gdb and tools will automatically default to that as the output location for all new data.

  2. In the Catalog pane, expand the Tasks folder. Double-click How to use a 3D basemap to open the task.

    How to use 3D basemaps task

    When you double-click the task, the Tasks pane opens with a selection of specific workflows for building 3D basemaps.

    List of available tasks for 3d basemaps
  3. In the Tasks pane, expand the Publish ground elevation surface task group.
    Publish ground elevation surface task group

    The task group contains multiple tasks, which are arranged sequentially but can be opened in any order. Each task group contains tasks specific to the heading. In this case, the two available tasks are for working with ground elevation surfaces.

  4. Double-click the Extract elevation surfaces from LAS dataset task.

    The task opens the Create LAS dataset geoprocessing tool in the Tasks pane. Tasks allow you to access tools and buttons as part of a pre-set, continuous workflow, without having to search for and run the tools independently. Tasks also contain descriptive information on the workflow and steps that you are performing.

  5. For Input Files, click the Browse button.

    Browse button

    The Input Files window appears, which allows you to browse files and folders both on your computer and on ArcGIS Online.

  6. In the Input Files window, click Folders. Expand the Roof_Form_Extraction folder and double-click the Lidar folder. Press Ctrl while clicking all four files to select them (alternatively, press Shift while clicking the first and last files). Then, click OK.

    Select lidar (.las) files

  7. For Output LAS Dataset, change the output name to Portland_LAS.lasd. Leave it in the p20 folder that was created when you opened the project package.

    Create LAS Dataset tool's output parameters

    You have the option to add surface constraints, or a layer with height attribute data that will limit the extent of the LAS dataset. In this scenario, the lidar data was captured on behalf of the Portland municipal government specifically for the study area, so no constraints are necessary.

    Next, you will set the coordinate system for the output, if the tool does not automatically set it. The coordinate system must correspond with the one used in the input files. The easiest way to learn the coordinate system of the input files is to ask the original compiler of the data. You are working closely with the Portland municipal government in this scenario, so you know that the lidar data uses the NAD 1983 (2011) StatePlane Oregon North FIPS 3601 (Intl Feet) coordinate system.


    If coordinate system information for your lidar dataset is unavailable, you can determine it using 3D Sample Tools available from ArcGIS Online.

  8. If necessary, in the Tasks pane, scroll down to see the remaining tool parameters. Verify that Coordinate System is NAD 1983 (2011) StatePlane Oregon North FIPS 3601 (Intnl Feet). This is the coordinate system of the LAS files.
  9. In the Tasks pane, for Create PRJ For LAS Files, choose Files with Missing Spatial References and click Run to create the LAS dataset.

    Coordinate system and other parameters

    When the tool finishes, the LAS point cloud dataset is added to the scene. The Tasks pane remains open. You will continue the workflow so leave the Tasks pane open.

  10. Navigate the scene to explore the dataset. Click and drag the mouse wheel to tilt and rotate the scene.

    LAS point cloud dataset in the scene view

    The point cloud contains millions of points, symbolized so that points with higher elevations are red, and points with lower elevations are blue. You will use this dataset to create multiple elevation rasters, but first you will check to make sure the dataset is free of outliers.

Extract elevation surfaces from LAS datasets

Next, you will create three digital elevation models that will be used as input layers for the Extract Roof Form tool later in the workflow. The elevation models will show the elevation data of the LAS dataset in a raster format. The digital terrain model (DTM) shows only the elevation of the ground, without buildings or other features; the digital surface model (DSM) shows the elevation of the ground and features on the ground; and the normalized DSM (nDSM) shows the height of features above ground (the normalized elevation). The task you started previously is already open and has the Extract Elevation From LAS Dataset tool open in it.

  1. In the Tasks pane, for Input LAS Dataset, click the arrow and choose Portland_LAS.lasd.

    The cell size of the raster is automatically detected.

  2. For Output raster, type Portland.

    As the tool calculates the three elevation layers, it appends the name of the raster. You will end up with three layers named Portland_dtm_surface, Portland_dsm_surface, and Portland_ndsm_surface for the digital elevation model, digital surface model, and normalized digital surface model, respectively.

  3. Check the Classify Noise box. Click Run.

    In lidar data, birds, planes, or other aerial objects may be registered by the scanner and added to the dataset as part of the point cloud, even though these objects are far above the surveyed terrain. Outliers like these may skew analysis results, so you will check for them and remove them if they exist. To classify noise, such as birds and planes, you must set the expected minimum and maximum of buildings. Points below the minimum or above the maximum will be considered outliers. You will investigate the data to determine appropriate values to use.

  4. Click the Contents tab to open the Contents pane. In the 3D Layers group, expand Portland_LAS.lasd.

    Contents pane

    The symbology for the layer shows the highest and lowest values in the dataset: 236.91 and -69.52. Because your coordinate system uses feet, these values are also in feet. Do these values represent outliers, or are they close enough to the rest of the data? You will click a few high and low points on the scene to get an idea. From a rough visual estimate, the highest values seem to be the bright red buildings west of the river, while the lowest values seem to be the dark blue points in the river itself.

  5. Navigate to the tall buildings west of the river. Tilt and rotate the scene (click and drag the mouse wheel) to compare the building heights.

    Tall condominium buildings

    Many of these buildings represent condominium housing. The tallest seems to be the one in the middle, closest to the river.

  6. Click a bright red point at the top of the tallest building's rooftop.

    Pop-up window for point

    A pop-up appears with information about the point you clicked, including its elevation. The point you clicked probably has an elevation of approximately 200 feet, nearly 50 feet lower than the maximum value in the dataset (it may vary slightly from the value in the above image).

  7. Close the pop-up. Click any of the dark points in the river.

    The point's elevation will likely be close to 10 feet, while the minimum value in the data is -69 feet. While discrepancies exist for both the maximum and minimum points in the data, the difference is less than 100 feet in both directions. These points probably are not significant outliers that will skew your data—to skew your data, the points would typically need to be hundreds or even thousands of feet above or below the rest of the data.

  8. In the Tasks pane, expand Height Detection. For Minimum Height, type 0. For Maximum Height, type 215.

    Minimum and maximum elevations

    These values give about a 10-foot buffer from the values you saw in the data.

  9. Click Run.

    Three more rasters are added to the Contents pane and the 3DBasemaps geodatabase in the Catalog pane.

    New surfaces added to 3DBasemaps geodatabase
  10. In the Contents pane, turn off the Portland_LAS layer.

    nDSM layer in the map

    The nDSM shows the relative height of the structures. Most of the ground area has a value of 0 or close to 0 (the black cells). You have now created the three elevation layers you will use when you run the Extract Roof Forms tool. The DSM shows the elevations of buildings and other features. Darker areas have lower elevations, and lighter areas have higher elevations. The DTM shows only the ground elevation. The locations of buildings still show up faintly because the tool estimates the location of the ground based on surrounding points.

    Unlike the DTM and DSM elevation layers, which were made from the LAS dataset, the nDSM is made by subtracting the values in the DTM from the values in the DSM. Because the DTM shows the ground elevation and the DSM shows the elevation of the features on top of the ground (the absolute elevation), an nDSM shows the height of features above ground (the normalized elevation) to accurately process areas where roofs are expected to be.

  11. Turn off all layers except the Portland_dtm_surface and the basemap.

Ground elevation surface

In scenes, the data sits on top of an elevation surface that shows the terrain. In most cases, a global elevation surface is good enough for visualization purposes, but when you want to create a scene where retaining accuracy of distance, direction, scale, and area is critical, you need a custom elevation surface. In the next task item, you will publish your own elevation surface based on the elevation rasters.

  1. Click the Tasks tab and, if necessary, click Next Step.

    When you finished running the previous task, the pane progressed to the next task, Modify Ground Elevation Surface, which is optional. To check if you need to run this process, you will inspect the attribute table and elevation settings of the Portland_Buildings layer.

  2. In the Catalog pane, expand the Roof_Form_Extraction folder and double-click City_Data.gdb. Drag Portland_Buildings onto the map.

    Notice that some of the building footprints are partially covered by the ground surface, especially near the river.

  3. In the Contents pane, right-click Portland_Buildings and choose Attribute Table.

    The attribute table for the buildings contains the data associated with the feature class. Each building has a unique ID, as well as a name determined by the address. It has height and roof form data, which you will use later, but it does not have a ground elevation field. If the layer had a field with ground elevation, you would modify the surface model to match, but because this is not the case, you can skip this step.

  4. In the Tasks pane, click Skip.

    In the final step in this task, you will modify the elevation surface to match the one you just calculated. The default elevation surface used in scenes is the WorldElevation3D/Terrain3D. For this project, the DTM you calculated is more accurate in the small, localized downtown area of Portland than the global surface. It is also projected in the same StatePlane grid that the building footprint data is, rather than the default Web Mercator that the world elevation surface uses.

  5. In the Contents pane, expand Elevation Surfaces and click Ground to select it. In the Tasks pane, click Run.

    The Add Elevation Source window appears.

  6. In the Add Elevation Source window, double-click the Databases folder and browse to 3DBasemaps.gdb. Click Portland_dtm and click OK.

    If you do not see the raster datasets you created, click the Refresh button next to the address bar.

  7. In the Contents pane, expand Ground and confirm that Portland_dtm was added to the list of elevation surfaces. Uncheck WorldElevation3D/Terrain3D.

    Set the new elevation surface.

    The basemap is clipped roughly to the extent of the DTM.

  8. In the Tasks pane, click Finish.

    In the final task in this group, you will publish the elevation surface you created. This is useful if you want to publish the building data to ArcGIS Online later; because web maps use Web Mercator, to display any projected 3D data, you first need to publish a custom elevation surface.

  9. In the Tasks pane, and in the Publish ground elevation surface group, double-click Publish ground elevation surface.

    Because your elevation units are in feet, you will must complete the first step, converting the DTM to meters.

  10. In the Rasters box, double-click Portland_dtm_surface.

    The DTM layer is added to the expression box as "Portland_dtm_surface".

  11. In the Expression box, delete the placeholder text "Your DTM". The expression should read "Portland_dtm_surface" * 0.3048.

    Convert the elevation surface to meters.

  12. Leave Output raster set to DTM_meters and click Run.
  13. In the Reproject DTM step, for Input Raster, click the arrow and choose DTM_meters. Name the Output Raster Dataset DTM_project.

    Output Coordinate System is set to WGS_1984_Web_Mercator_Auxillary_Sphere. This is the default projection for ArcGIS Online and will make publishing your roof forms much easier. To reproject your data from the State Plane coordinate system to Web Mercator, you will use a geographic transformation.

  14. For Geographic Transformation, click in the cell and then click the arrow and choose WGS_1984_(ITRF08)_To_NAD_1983_2011.

    Specify the geographic transformation to reproject the layer.

  15. Leave the rest of the default settings and click Run.

    The DTM_project layer is added to the Contents pane. To create the buildings in the Web Mercator projection, you will switch the elevation surface to DTM_project.

  16. In the Contents pane, click Ground to select it. In the Tasks pane, click Run.
  17. In the Add Elevation Source window, first click the Refresh button at the top and then choose DTM_project and click OK.
  18. In the Contents pane, expand Ground and confirm that DTM_project was added to the list of elevation surfaces. Uncheck Portland_dtm.
  19. In the Tasks pane, click Next Step.

    Finally, you will publish the elevation surface to your portal.

  20. In the Contents pane, right-click DTM_project, choose Share As Web Layer.

    Share the elevation surface as a web layer.

    The Share As Web Layer pane appears.

  21. On the General tab, enter the following parameters:

    • For Name, type Portland_DTM_WebMercator.
    • For Summary, type Projected elevation surface for Portland.
    • For Tags, type ground surface.

  22. Click the Configuration tab, expand Tiling Scheme and Options, and enter the following parameters:

    • For Tiling Scheme, choose Same as basemap.
    • For Levels of Detail, set 0-20 by adjusting the sliders.
    • For Temp cache location, choose or verify Roof_Form_Extraction.
    • For LERC compression, choose or verify 0.05.

  23. Click Analyze. Make sure there are no errors and click Publish.

    The elevation surface is published to your portal and can now be used in web scenes.

  24. When the web layer is finished publishing, close the Share As Web Layer pane and save the project.

You have downloaded and opened the project containing the 3DBasemaps solutions tools and the project data. You also converted raw lidar data into a LAS dataset and used the LAS dataset to create three elevation layers showing different facets of the topography. Next, you will extract the realistic roof forms and check the resulting dataset for errors.

Create 3D buildings

In the previous lesson, you converted lidar data into three elevation layers: one showing elevation of the ground (DTM), one showing elevation of features and buildings on top of the ground (DSM), and one showing height of features above ground (nDSM). In this lesson, you will use these elevation layers and the building footprints to calculate attribute data for roof forms and heights. You will then use those attributes to symbolize the building footprints as 3D features. Finally, you will check the features for potential errors.

Extract building roof forms

To extract roof forms, you will use the Extract Roof Form tool, which is one of the two script tools included in the Roof_Form_Extraction toolbox that you downloaded with the project data. The Extract Roof Form tool will not automatically create 3D buildings, but it will add attribute data to 2D building footprints that describe roof form and other roof attributes. These attributes will then be used to procedurally create these features in 3D. First, you

  1. If necessary, open your 3DBasemaps project in ArcGIS Pro.

    Many buildings are not uniformly rectangular, but have various levels, different roofs, and other architectural features. To minimize the editing you will have to do by hand to add these features after the building blocks have been extruded, you will preprocess the data. There are two options for doing this, using either building footprints or elevation. Your building footprints are simple rectangles without segmentation, so you will use the DSM to estimate where building footprints should be split to allow for more detail. You will use a script tool that is included in the 3DBasemaps solution.

  2. In the Catalog pane, expand Toolboxes and then expand CreateBuildings.tbx.

    The 3D Basemaps project comes with tasks, as you have seen, and many tools that you can use to create and mange buildings, floors, powerlines, and other features in your 3D basemaps.

    Create Buildings toolbox expanded
  3. In the CreateBuildings toolbox, double-click Segment Roof Parts. For Building Footprints, choose Portland_Buildings. For Elevation Surface (DSM), choose Portland_dsm_surface.

    Segment Roof Parts tool parameters

    The spatial and spectral detail fields populate. The values range from 1 to 20, with higher numbers corresponding to more detailed outputs. In a city, where buildings and skyscrapers may have many roof facets with large differences in height, lower values can be used because the elevation changes are very easy to detect. In a suburb or row housing example, values would need to be higher to detect more subtle differences in elevation. Because you're dealing with both skyscrapers (along the river) and row housing (to the east), you'll use the default values, which fall relatively in the middle of the range.

  4. For Output Segmented Buildings, type Portland. Click Run.

    The tool will take several minutes to run.

    Now that the building footprints have been segmented, you will use the Create Buildings task to make a 3D feature class of buildings.

  5. In the Tasks pane, expand Publish Buildings to view the available tasks for working with buildings.

    Available tasks in Publish Buildings group

    There are two optional tasks in the Publish Buildings group that allow you to extract building footprints and preprocess building footprints. The first task, Extract building footprints, is only necessary if you do not have building footprints and will extract the building footprints from a lidar dataset. The next task, Preprocess building footprints, allows you to segment buildings based on another feature class prior to roof form creation. You do not have another feature class to segment with and you just segmented using an elevation surface, so you will proceed to the Create buildings task.

  6. In the Tasks pane, double-click Create buildings. For Buildings, choose Portland_segmented. For Elevation Surface (DSM), choose Portland_dsm_surface. For Ground Elevation Surface (DTM), choose Portland_dtm_surface. For Normalized Elevation Surface (nDSM), choose Portland_ndsm_surface.

    Parameters for input data

  7. For Output Building Polygons, type Portland. Do not run the tool yet.

    The RoofForm parameters define what is considered a roof surface. By default, a roof should be 250 square feet (flat) or 75 square feet (sloped), and 8 feet above ground. These minimum parameters prevent smaller objects, such as cars or street posts, from being counted as roof surfaces. Lidar data that includes larger or smaller buildings will need a different range of parameters. This area is zoned as residential and commercial, so the default values are neither too lenient to count nonbuilding objects nor too strict to exclude smaller homes. When creating detailed buildings, you should also consider simplifying the features by removing redundant or excess vertices in the building footprints. Simplified models look smoother and reduce rendering time, which is ideal for sharing your output with the Portland municipal government.


    If your data is in meters or another unit of measurement, you will must adjust these parameters. The unit of measurement in these parameters will be the same as that in your elevation layers.

    Finally, you can choose to simplify the buildings. Simplifying the buildings will remove redundant or excess vertices in the building footprints. The result will make the 3D building models look smoother and reduce the time it takes to render them. You eventually want to share your 3D buildings with the Portland municipal government, so a better-looking output is desirable.

  8. Expand the Roof Form group and make sure the Simplify Buildings box is checked.

    You will also verify that the Simplify Tolerance is set to 0.1, the maximum distance variation between the vertices of the simplified polygon and the original polygon. A lower value will maintain accuracy, while a larger value will simplify more. You want to keep your building footprints accurate, because they are going to be used for analysis by the Portland municipal government, so you will use a small value of 0.1.

  9. For Simplify Tolerance, type 0.1 or verify it is already set to 0.1.

    Simplify Buildings and Simplify Tolerance parameters


    The value uses the same unit of measurement as your elevation layers.

  10. Click Run.

    The tool may take several minutes to run. When it finishes, the new layer is added to the scene.

  11. In the Contents pane, turn off all layers except the Portland_roofform layer, the basemap, and the ground layer.

    Portland_roofform layer in the map

    The new roof forms feature class contains 3D models of the Portland building footprints layer, and new information was added to its attribute table.

  12. Right-click the Portland_roofform layer and choose Attribute Table.

    The attribute table appears. Alongside standard feature class attributes such as OBJECTID, Shape, Shape_Length, and Shape_Area, there are several fields related to roof height, form, and direction.

    Fields in the attribute table

    These fields were created by the Extract Roof Form tool based on the elevation layers and building footprints used as the tool's input. The fields and their meanings are explained in the following list:

    • BLDGHEIGHT (Building Height)—The maximum height of the building.
    • EAVEHEIGHT (Eave Height)—The minimum height of the building. Buildings with no eave height have flat roofs.
    • ROOFFORM (Roof Form)—The shape of the roof. The roof form can be Flat, Gable, or Hip. The following image shows what each roof form looks like:

      Roof form examples

    • BASEELEV (Base Elevation)—The base height of the building, usually equal to the ground elevation where the building is located.
    • ROOFDIR (Roof Direction)—The compass direction (in degrees) that the roof faces. Only Gable roof forms have values for this field.
    • RoofDirAdjust (Roof Direction Adjusted)—This field allows adjustment of the roof direction. The default value is 0. A value of 1 will rotate the roof counterclockwise 90 degrees, while a value of 2 will rotate it 180 degrees. This field is used for manually editing roof forms that were incorrectly extracted. For now, you don't need to worry about it.

  13. Close the attribute table. In the Tasks pane, click Finish.

    Now that you have the buildings created, you will check how closely they match the lidar data.

Check accuracy of the buildings

You have created a 3D building footprints layer with roof form information in the attributes. Next, you will check how accurate they are.

  1. In the Tasks pane, double-click Review buildings. For Buildings, choose the Portland_roofform layer and for Elevation Surface (DSM) choose Portland_dsm_surface. Click Run.

    The Confidence Measurement tool calculates root mean square error (RMSE), which is the difference between the values in the roof forms layer and the values in the DSM. A higher RMSE indicates higher error for the generated building footprints. The statistic is added to the attribute table.

  2. In the Contents pane, right-click Portland_roofform and click Attribute Table.
  3. In the attribute table, scroll until you find the RMSE column. Right-click the attribute name and choose Sort Descending.

    Sort descending RMSE values.

    Generally, you will aim for an RMSE value of about 3 feet (1 meter), though this level of accuracy depends on the use case. While these values are useful, the Portland_roofform layer has 1,083 features, so looking at the errors for all of them would take a long time. To quickly visualize which buildings have high error, you will symbolize the layer by RMSE.

  4. Close the attribute table.
  5. In the Tasks pane, click Next Step. A linked 2D map opens. In the Contents pane of the 2D map, select the Portland_roofform layer and in the Tasks pane, click Run
    Symbology pane for Portland_roofform layer

    Once you click Run, the Symbology pane for the Portland_roofform layer opens.

  6. In the Symbology pane, click Options and choose Import Symbology.

    Import Symbology option
  7. For Input Layer,Portland_roofform should be chosen as it was selected when you ran the task step. For Symbology Layer, click Browse and navigate to the layer_files folder in the p20 project folder. Double-click LOD2RMSEclassification.lyrx.

    Add the .lyrx file.

  8. Click Run.

    The .lyrx style is applied to the Portland_roofform layer. The symbology shows buildings with a low RMSE in green and buildings with a high RMSE in orange and red.

  9. In the Contents pane of the 2D map, click Portland_dsm to select the layer.
  10. On the ribbon, click the Appearance tab. In the Effects group, drag the Layer Transparency slider to 50.0%.

    Layer Transparency slider set to 50.0%

  11. In the Tasks pane, click Next Step.
  12. Make sure the maps are docked side by side so you can see both the map and scene. Click the Map tab to make the 2D map active.
  13. On the Map tab, click Basemap and choose Imagery.

    Visual comparison reveals that most of the buildings with high RMSE seem to have multiple parts with different heights. For the square building shown in the previous image, a portion appears to be a parking structure, while the building itself is only about half the size of the entire footprint. The RMSE may have been caused by the building footprint not reflecting the actual extent of the building. Additionally, the footprint appears to be misaligned with the imagery. You will fix these errors later.

  14. Zoom to the buildings with high RMSE west of the river. Compare the building features to the DSM and imagery layers.

    Buildings with high RMSE

  15. In the Tasks pane, click Next Step.

    In the fourth step, you are directed to look at the building forms with the lidar points on to see where the errors are higher RMSE buildings.

  16. Click the 3DBasemap scene to activate it. In the Contents pane, turn on the Portland_LAS layer.

    Portland_LAS layer in Scene view

    There are two main reasons the footprints could be wrong: either the roof form was incorrectly entered or the lidar was misinterpreted. Looking at the building footprints, there appear to be more vertices and segmented parts than shown in the lidar data—the tool most likely picked up details from roof features like HVAC units. You will inspect the attributes to see if any features need to be manually changed before editing the features.

  17. On the ribbon, on the Map tab, click Select and click one of the red or yellow building footprints on the Map view. With one of the features selected, click Attributes.

    Feature attributes

    By viewing the attributes, you can see the type of roof. Many of the roof types are flat, which is correct. In the next task, you will fix the vertices that are incorrect.

  18. In the Tasks pane, click Finish.
  19. Save the project.

You have extracted roof forms for the Portland buildings and symbolized the roof form features in 3D. Although you created the 3D features, you noticed a few errors in some of them. Before you deliver your data to the Portland municipal government, you will fix some of the errors. In the next section, you will edit the roof form features to better reflect the data before exporting the roof forms layer to a 3D multipatch feature class that you can share with the Portland municipal government.

Edit buildings and export features

Previously, you created 3D buildings with LOD2 roof forms and identified errors. Now you will fix a feature that had a higher RMSE. Then, you will export the buildings to a 3D multipatch feature class to make the data easier to share. For the sake of time, you will only edit a single building, even though multiple buildings were flagged as having higher RMSE.

Modify building footprint vertices

One of the problems with the building you looked at was that the building footprint was misaligned with the imagery and elevation data. Before you make any other changes, you will modify the vertices for better alignment.

  1. If necessary, open your 3DBasemaps project in ArcGIS Pro and open the Tasks pane.
  2. In the Tasks pane, under task group Publish buildings, double-click Modify Buildings.

    The task opens and activates the Select tool for the 2D map only, not the 3D scene. You will select the building footprint you want to edit.

  3. On the map, if necessary, center the map on the building west of the river that is orange, seen in the image.

    The building is made up of several structures. From a visual inspection, the lower portion of the building appears to be fairly accurate, though there is a raised roof feature that was digitized incorrectly.

    Bbuilding footprint on the map

    If you need to pan or zoom the map, use the following shortcut keys: press C to pan, X to zoom out, and Z to zoom in.

    The imagery also appears to be quite oblique, or captured at an angle rather than from directly above. This can cause your changes to vary from the 3D building forms, so before you start editing, you will change the basemap to a better image.

  4. In the Catalog pane, click the Portal tab and choose Living Atlas.

    Add data from Living Atlas.

  5. Right-click the World Imagery (Clarity) item and choose Add to Current Map.

    The World Imagery (Clarity) layer is added to the Map view. The resolution is higher, so it shows the building more clearly.

  6. With the Select tool active, click the orange feature in the center of the building to select it.

    If you select the wrong feature by mistake, click Change the selection in the Tasks pane.

  7. At the top of the Modify Buildings pane, click Modify Building Footprint vertices.

    Modify Building Footprint Vertices

    The Edit Vertices editing tool opens in the Tasks pane, and the vertices of the building appear on the map. However, the transparent DSM makes it somewhat difficult to see exactly where the vertices should go.

  8. In the Contents pane, turn off the Portland_DSM layer.
  9. Drag each of the vertices to trace the rooftop feature on the tower structure based on the Imagery basemap.

    When you drag the vertices, they may snap to existing features. You can temporarily disable this snapping behavior by pressing Spacebar while editing.

    Vertices aligned with the Imagery basemap

    Editing this feature is straight forward as there are only four vertices. Some features may be more complicated. If there were many unnecessary vertices, you could select and delete vertices to simplify your building. You do not need the original orange feature so you will delete it by deleting its vertices.

  10. In the Modify Roof Tools pane, click Change Selection and select the previous shape of the roofform (the orange rectangle) to access its vertices. This may also select the vertices of the larger building and that is fine. Right-click each individual vertex from the original orange roof only (there are four of them) and choose Delete Vertex.
  11. When you are satisfied with the new location of the vertices, in the Modify Roof Tools pane, click Next Step. Click Yes to save the edits. On the Map tab and in the Selection group, click Clear to clear any selected features.

    Saving your edits permanently alters the dataset that you edited, so you always want to confirm that your edits are accurate before saving. The original roof feature with a higher RMSE is deleted and the one you edited is now yellow, indicating a low RMSE.

  12. At the bottom of the Tasks pane, click Skip two times to return to the main task list.

    Next, you will convert your features to share them with the Portland municipal government. Then, you will publish your dataset.

Publish edited buildings

The Portland_Roof_Forms dataset is a 2D feature class symbolized to look 3D. If you shared this feature class with the Portland municipal government, it would have to be symbolized again to appear in 3D. Additionally, it could only maintain its 3D form with the exact symbology specifications of the layer file that you used. Therefore, you will convert the dataset to a 3D multipatch feature class that maintains the 3D shape of features. Then, you will publish the buildings to ArcGIS Online so they can be added and visualized in web scenes.

  1. In the Tasks pane, return to the How to use 3D Basemaps expand the Publish Buildings task group, and double-click the Publish Buildings task.

    Publish buildings task.

    The task opens the Publish Buildings task. Because you already published your scene in Web Mercator earlier, you can skip the first step. Now, you will convert the building polygons into multipatch features.

  2. In the Tasks pane, click Skip.
  3. Make sure the 3D Basemap Scene pane is active. In the Contents pane, select the 3D Basemap scene.
    3D Basemap scene selected
  4. In the Tasks pane and in the Convert to Multipatch Feature Class step, for Building Layer, choose Portland_roofform. For Unique ObjectID, choose BuildingFID, and name the Output Building Multipatch Portland_Building_Roof_Forms.

    The unique object ID is a field that identifies individual buildings as unique features. When you created the Portland_roofform layer, the unique OBJECTID field from the Portland_Buildings layer was re-created as BuildingFID.

    Convert buildings to multipatch features.
  5. Click Run.

    The Portland_Building_Roof_Forms layer is added to the Contents pane.

  6. In the Tasks pane, click Skip to skip the Mask Features in Layer tool.
  7. In the Contents pane, click the Portland_Building_Roof_Forms layer to select it. In the Tasks pane, click Run.

    The Share As Web Layer pane appears.

  8. In the Item Details section, make sure Name is Portland_Building_Roof_Forms and add your initials.

    Each layer in your organization must have a unique name, and appending your initials helps ensure that your layer publishes even if another member of your organization has published a similar layer.

  9. For Summary, type or paste Building roof forms extracted from LiDAR, and for Tags, type 3D, municipal development, and Green initiative and press Enter.
  10. For Share with, choose Everyone and click Analyze.
  11. Click Publish. Save the project.

    When the publishing process is complete, a notification appears at the bottom of the pane.

  12. At the bottom of the Share As Web Layer pane, click Manage the web layer to view the shared item online.

The 3D buildings are now published as a multipatch feature class that you can share with the Portland municipal government. You created these buildings using the 3DBasemaps solution project package by deriving elevation layers from lidar data and using those elevation layers to extract LOD2 roof forms from building footprints. You symbolized the footprints in 3D and edited features with high error. In addition to zoning, development, and city planning, these more realistic roof forms can be used in 3D solar and shade analysis.

You can use the tasks, tools, and layer files in this project with your own data. As long as you have building footprints and lidar data of a location, you can create LOD2 roof forms. The ArcGIS Pro task for 3DBasemaps is available on the ArcGIS Solutions page and is designed to quickly replicate the workflow described by these lessons. You could use the project package that you downloaded with the lesson data on your own data or download the project package from the ArcGIS Solutions page.

For more lessons, see the Learn ArcGIS Lesson Gallery.