Create elevation layers

To create 3D buildings with detailed roof forms and accurate heights, you'll first need to 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'll use the 3D Basemaps solution tools to achieve this. After downloading the project data, you'll 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'll convert the point cloud into raster datasets that show the elevation of the area. If you've never used ArcGIS Solutions before, you'll need to download the Add-In first.

Deploy the Local Government 3D Basemaps solution

Before you begin, you'll download data supplied by the City of Portland, as well as geoprocessing tools and rule packages that you'll use throughout the workflow. You'll 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. Right-click the file and extract it to a location where you can easily find it, such as your Documents folder.
  4. Open ArcGIS Pro. For New, choose Start without a template.

    If you don't have ArcGIS Pro or an ArcGIS account, you can sign up for an ArcGIS free trial.

    A blank project opens. Using this project, you can deploy the solution.

    If you've never used ArcGIS Solutions before, you'll need to download the Add-In first.

  5. On the ribbon, click the Share tab. In the Deploy group, click ArcGIS Solutions.

    Deploy ArcGIS Solutions

    The Tasks pane appears with a list of preconfigured steps that guide you through a workflow. The first task is to sign in to your organization.

  6. In the Tasks pane, double-click Sign into an ArcGIS Organization.

    Solutions require access to an ArcGIS Online or ArcGIS Enterprise organization and content creation privileges. If you signed in when you started ArcGIS Pro, you don't need to sign in again.

  7. If necessary, open a web browser and sign in to your organizational account. In the Tasks pane, click Finish.
  8. Double-click Deploy an ArcGIS Solution. Search for and select Local Government 3D Basemaps in the Local Government category.

    Local Government 3D Basemaps solution

  9. Next to the search box, click the options button and ensure that Use Existing Items in the Organization is unchecked. Click Deploy.

    When the solution is finished deploying to your organization, a green check mark appears.

  10. Click the green check mark to view the solution in your organization.

    This particular solution deploys a project package named Local Government 3D Basemaps to your portal. The item details page opens in a web browser. From this point on, you'll use the new project that you deployed. You no longer need the blank project you used to deploy the solution.

  11. In the Tasks pane, click Finish. Close the blank project without saving.
  12. In your browser, on the Local Government 3D Basemaps item details page, click Open in ArcGIS Pro.

    Open the project package in ArcGIS Pro.

    Depending on the browser you're using, the project package may open directly in ArcGIS Pro, or download a .pitemx file. Double-click the .pitemx file to open the project in ArcGIS Pro. When it's finished downloading and unpacking content, the LocalGovernment3Dbasemaps project opens. This project contains several sets of tasks meant to create several levels of detailed 3D features.

  13. If necessary, in the Catalog pane, expand Tasks and double-click Publish Schematic Local Government Scene to open the Tasks pane.

    Tasks in the 3D Basemaps solution

    This set of tasks will create a Level of Detail (LOD) 2 scene. At LOD2, buildings that have standard roof forms can be generated semiautomatically. At LOD1, the buildings would be extruded as simple block model polygons, and at LOD3, you can create detailed architectural models.

Create a LAS point cloud dataset

You'll 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.

  2. In the Tasks pane, expand the Publish Elevation Surface task group.

    The task group contains multiple tasks, which are arranged sequentially but can be opened in any order.

  3. Double-click the Create a 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 continuous workflow, without having to search the Geoprocessing pane or the ribbon to find them.

  4. 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.

  5. 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

  6. For Output LAS Dataset, change the output name to Portland_LAS.lasd. Leave it in the p20 folder that was deployed with the solution.

    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, if the coordinate system isn't detected, you'll 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're working closely with the Portland municipal government in this scenario, so you know that the lidar data uses the NAD 1983 (2011) HARN 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.

  7. Make sure the Coordinate System parameter is set to NAD 1983 (2011) HARN StatePlane Oregon North FIPS 3601 (Intnl Feet).
  8. In the Tasks pane, for Create PRJ For LAS Files, choose Files with Missing Spatial References and click Finish to run the tool.

    Select coordinate system button

    When the tool finishes, the LAS point cloud dataset is added to the scene. The Tasks pane returns to the list of tasks.

  9. 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'll use this dataset to create multiple elevation rasters, but first you'll check to make sure the dataset is free of outliers.

Extract elevation surfaces from LAS datasets

Next, you'll 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).

  1. In the Tasks pane, double-click the Extract Elevation Surfaces from LAS Dataset task.

    This task has three steps that create elevation surfaces while filtering for noise.

  2. For Input LAS Dataset, click the arrow and choose Portland_LAS.lasd.

    The cell size of the raster is automatically detected.

  3. For Output raster, type Portland.

    As the tool calculates the three elevation layers, it appends the name of the raster. You'll end up with three layers named Portland_DTM, Portland_DSM, and Portland_NDSM for the digital elevation model, digital surface model, and normalized digital surface model, respectively.

  4. Check the Classify Noise box.

    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'll check for them and remove them if they exist. To classify noise, such as birds and planes, you'll need to set the expected minimum and maximum of buildings. Points below the minimum or above the maximum will be considered outliers. You'll investigate the data to determine appropriate values to use.

  5. 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'll 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.

  6. 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.

  7. 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).

  8. 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 aren't 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.

  9. 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.

  10. Click Run.

    Three rasters are added to the Roof_Form_Extraction folder in the Catalog pane.

  11. 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've now created the three elevation layers you'll use to 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.

  12. 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'll 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. Step 2, Modify Ground Elevation Surface, is optional. To check if you need it, you'll 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'll use later, but it doesn't have a ground elevation field. If the layer had a field with ground elevation, you'd want to modify the surface model to match, but because it doesn't you can skip this step.

  4. In the Tasks pane, click Skip.

    In the final step in this task, you'll 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's 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 LocalGovernmentScenes.gdb. Click portland_dtm and click OK.
  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'll 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, double-click Publish Elevation Surface.

    Because your elevation units are in feet, you'll need to 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 "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 Web Mercator. 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'll use a geographic transformation.

  14. For Geographic Transformation, click the arrow and choose WGS_1984_(ITRF08)_To_NAD_1983_2011. Click Add.

    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'll need to 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, 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'll publish the elevation surface to your portal.

  20. In the Contents pane, right-click DTM_project and 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, choose Portland_DTM_WebMercator.
    • For Summary, type Projected elevation surface for Portland.
    • For Tags, type ground surface.

  22. Click the Configuration tab and enter the following parameters:

    • For Tiling Scheme, choose Same as basemap.
    • For Levels of Detail, choose 0-20.
    • For Temp cache location, choose Roof_Form_Extraction.
    • For LERC compression, choose 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.

In this lesson, you downloaded and opened the project data. You converted raw lidar data into a LAS dataset and used the LAS dataset to create three elevation layers showing different facets of the topography. In the next lesson, you'll 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'll use these elevation layers and the building footprints to calculate attribute data for roof forms and heights. You'll then use those attributes to symbolize the building footprints as 3D features. Finally, you'll check the features for potential errors.

Extract building roof forms

To extract roof forms, you'll 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. You can download this custom script as part of the Local Government 3D Basemaps solution on ArcGIS for Local Government. 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.

  1. If necessary, open your LocalGovernment3DBasemaps 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'll have to do by hand to add these features after the building blocks have been extruded, you'll 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'll use the DSM to estimate where building footprints should be split to allow for more detail.

  2. In the Tasks pane, expand Preprocess Buildings and then double-click the second task, Segment Buildings using Elevation.
  3. For Input Features, choose the Portland Buildings building footprint layer.
  4. For Elevation Surface (DSM), choose Portland_dsm_surface.

    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.

  5. For Output Segmented Buildings, save Portland_Segmented in LocalGovernmentScenes.gdb and click Run, and then click Finish.

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

  6. In the Tasks pane, expand 3. Publish Schematic Buildings and double-click Create Buildings.
  7. For Buildings, choose Portland_Segmented. For DSM, choose the Portland_dsm_surface layer. For DTM, choose the Portland_dtm_surface layer. For nDSM, choose the Portland_ndsm_surface layer.

    Parameters for input data

  8. For Output Building Polygons, type Portland and make sure the output location is set to the LocalGovernmentScenes geodatabase.

    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'll need to 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.

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

    You'll also set the Simplify Tolerance value, 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'll use a small value of 0.1.

  10. For Simplify Tolerance, type 0.1.

    Simplify Buildings and Simplify Tolerance parameters


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

  11. Click Run.

    The tool may take several minutes to run. When it finishes, the new layer is added to the scene in the 2D layers group.

  12. 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.

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

    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 seven 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

    • BuildingFID—The building's internal ID number.
    • 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.


    For more documentation on the Extract Roof Form tool and its output, see the ArcGIS for Local Government page Roof-Form Extraction process.

  14. Close the attribute table.
  15. In the Tasks pane, click Finish.

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

Check accuracy of the buildings

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

  1. Double-click the second step, Review Building Roof Forms. For Buildings, choose the Portland_roofform layer and for Elevation Surface (DSM) choose your DSM layer. 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'll 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'll symbolize the layer by RMSE.

  4. In the Tasks pane, click Next Step. On the Apply Symbology from Layer step, for Input Layer, choose Portland_roofform. 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.

    A linked map is added to the map pane. When views are linked, navigating in one view will simultaneously update the extent of the other view. The Symbology fields are populated based on the .lyrx file.

  5. Click Run.

    The .lyrx style is applied to the 2D rendering of the Portland_roofform layer, showing buildings with a low RMSE in green and buildings with a high RMSE in red. Buildings in red are the ones you'll focus on.

  6. 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.
  7. In the Contents pane, click Portland_dsm to select the layer.
  8. 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%

  9. If necessary, 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'll fix these errors later.

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

    Three buildings with high RMSE

  11. In the Tasks pane, click Next Step.

    In the fourth step, you're directed to look at the building forms with the lidar points on to see where the errors are in the red flagged buildings.

  12. Click the Local Government Scene view. 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'll inspect the attributes to see if any features need to be manually changed before editing the features.

  13. 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

    All the roof features are listed with a type of Flat, which is correct. In the next task, you'll fix the vertices that are incorrect.

  14. In the Tasks pane, click Finish.
  15. Save the project.

In this lesson, you 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'll fix some of the errors. In the next lesson, you'll 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

In the previous lesson, you created 3D buildings with LOD2 roof forms and identified errors. In this lesson, you'll fix the errors for the building that you reviewed. Then, you'll export the buildings to a 3D multipatch feature class to make the data easier to share. For the sake of time, you'll only edit a single building, even though multiple buildings were flagged as having high 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'll modify the vertices for better alignment.

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

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

  3. On the map, if necessary, center the map on the large, square building footprint with high RMSE west of the river.

    The building is made up of several structures. There is a tower in the center surrounded by a square parking structure. From a visual inspection, the tower portion of the building appears to be fairly accurate, though there is a raised roof feature in the middle of the tower that was digitized incorrectly. The parking structure also shows several extra features.

    Square building 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'll 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. Click the feature in the center of the tower 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 Roof Tools pane, click Modify Building Footprint Vertices.

    Modify Building Footprint Vertices

    When you select the building, 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. 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

    Because of the complexity of the feature you edited, there may be extra vertices that are unnecessary for the true, simpler shape.

  10. On the Editor Toolbar, click the Delete tool and click vertices to delete them.
  11. When you're satisfied with the new location of the vertices, in the Modify Roof Tools pane, click Finish.

    Off-center feature

  12. In the Scene view, turn off the lidar data.

    Feature editing errors

    Because you edited the roof feature on top of the tower, the surface of the roof below it now has a gap where the feature used to be. You'll delete the extra vertices to remove this error.

  13. In the Modify Roof Tools pane, click Change Selection and choose the larger roof form of the tower. On the Editor Toolbar, use the Delete tool to delete the vertices for the center feature.

    Simplified roof features

    Next, you'll save your edits and convert your features to share them with the Portland municipal government. Saving your edits permanently alters the dataset that you edited, so you always want to confirm that your edits are accurate before saving. Then, you'll 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'll convert the dataset to a 3D multipatch feature class that maintains the 3D shape of features. Then, you'll publish the buildings to ArcGIS Online so they can be added and visualized in web scenes.

  1. In the Modify Roof Form pane, click the Save Roof Form edits tab.

    Save the edits task.

  2. At the bottom of the Tasks pane, click Finish.

    The Save Edits window appears.

  3. Click Yes to save your edits.
  4. If necessary, on the ribbon, on the Map tab, in the Selection group, click Clear to clear your selection.
  5. In the Tasks pane, expand the Publish Schematic Buildings task group, and double-click the Publish Buildings task.

    Create a multipatch feature class 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'll convert the building polygons into multipatch features.

  6. Make sure the Local Government Scene pane is active.
  7. In the Convert to Multipatch Feature Class step, for Building Layer, choose Portland_roofform.
  8. For Unique ObjectID, choose BuildingFID, and name the Output Building Multipatch Portland_Building_Roof_Forms. Click Run.

    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.

    The Portland_Building_Roof_Forms layer is added to the Contents pane.

  9. If necessary, click Next to open the third task, Publish Buildings.
  10. 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.

  11. 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.

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

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

  15. At the bottom of the Share As Web Layer pane, click Manage the web layer.

The 3D buildings are now published as a multipatch feature class that you can share with the Portland municipal government. You created these buildings 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. This ArcGIS Pro task is designed to quickly replicate the workflow described by these lessons.

For more lessons, see the Learn ArcGIS Lesson Gallery.