Access photogrammetry data and the 3D Buildings solution

The City of Pleasanton's Appraisal Department has given you access to aerial imagery products from Nearmap and the building footprints for a subdivision at the base of Pleasanton Ridge. Once you have this data downloaded, you'll add it to an ArcGIS Pro project that is a part of the 3D Buildings solution. Together, they will lay the foundation for creating a 3D model of this community.

Acquire Nearmap data and project file

First, you'll download and unzip the Nearmap data for Pleasanton. Then, you'll download an ArcGIS Pro project with steps to help build 3D models.

  1. Download the Pleasanton.zip file and extract its contents to a suitable location on your computer.

    Next, you'll download the 3D Buildings solution ArcGIS Pro project from ArcGIS Online.

  2. Sign in to your ArcGIS Online organizational account.
    Note:

    If you don't have an organizational account, see options for software access.

  3. Click the Apps button and from the App Launcher, choose Solutions.

    Solutions app

  4. Choose the 3D Buildings solution.

    3D Buildings solution

  5. Click Deploy now.

    The solution will automatically deploy its associated items to your Contents tab in ArcGIS Online.

  6. Point to 3D Buildings and click Open.

    Open the solution.

    The 3D Buildings item page appears.

  7. Under Solution Contents, click 3D Buildings.

    Solution Contents

  8. Click the Download button.

    Download button

    A zipped folder named 3DBuildings automatically downloads to your computer's default download location.

  9. Unzip the 3DBuildings .zip file and extract its contents to a suitable location on your computer.
    Note:

    Make sure that the file path to your 3DBuildings folder does not contain any files with spaces. It will cause an error later in the workflow.

    You now have the city's Nearmap data and the necessary ArcGIS Pro project.

Add Nearmap data to the project

Now that you have the required data from the city and the solution's ArcGIS Pro project, you'll add the city's data to the 3D Buildings solution's scene, or 3D map.

  1. Open the folder that contains the unzipped files and open the 3DBuildings ArcGIS project file.

    Open the 3DBuildings ArcGIS project file.

    ArcGIS Pro opens and you are provided with a 3D scene of the world. You'll add the Pleasanton data to this scene.

  2. On the ribbon, click the Map tab. In the Layer group, click Add Data.

    Add Data button

    The Add Data window appears.

  3. Browse to where the Pleasanton folder was extracted. Open the Pleasanton folder and open the Pleasanton geodatabase.

    Files in the Pleasanton geodatabase

    You'll add the AI_Buildings, DSM, and DTM datasets to the map.

  4. Press the Ctrl key and select the AI_Buildings, DSM, and DTM datasets. Click OK.

    The layers are added to the scene.

    Datasets added to the map.

    The AI_Buildings polygon layer represents building footprints derived from Nearmap's artificial intelligence and machine learning algorithms.

    The DSM raster layer is a digital surface model. Each pixel in this raster represents the elevation of the terrain as well as above-ground features such as buildings, vegetation, towers, and other infrastructure.

    The DTM raster layer is a digital terrain model. Also known as a digital elevation model (DEM), each pixel represents the elevation of the bare earth. It does not include the elevation of features on the landscape, such as trees or buildings.

    The DSM and DTM rasters have a resolution of 12 inches. In other words, each pixel represents an area on the earth that is 12 inches by 12 inches. When working with rasters, it is typically a best practice to use rasters that have the same resolution.

    Note:

    If you are a Nearmap subscriber and want to use your own data, use the Map Browser's 3D Export tool to extract the DSM and DTM for your area of interest. Then, use the Export AI Content tool to extract the building footprints for your area of interest.

    Next, you'll rename the AI_Buildings layer.

  5. In the Contents pane, select the AI_Buildings layer.
  6. Press the F2 key. Type Building Footprints and press Enter.

    Contents pane with renamed layer

  7. On the Quick Access Toolbar, click Save.

    Save button

Now, that the data has been downloaded and added to the scene, you are ready to start processing the buildings.


Generate 3D buildings

The ArcGIS Pro project that you downloaded includes a series of tasks to help guide you through the process of taking your datasets and generating 3D models from them. You'll use your three layers and these tasks to create Pleasanton's 3D buildings. First, you'll create an nDSM, which will be necessary when you want to give your buildings height and a properly shaped roof.

Create an nDSM

First, you'll create a nDSM, or normalized digital surface model, using raster functions. An nDSM is created when a DTM is subtracted from a DSM. The result is an elevation raster that represents the ground-level elevations of features, as well as their height.

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

    You'll use raster functions to subtract the DTM from the DSM.

  2. On the ribbon, click the Imagery tab. In the Analysis group, click Raster Functions.

    Raster Functions button

    The Raster Functions pane appears.

  3. In the Raster Functions pane, expand Math, and click Minus.

    Raster Functions pane

    The Minus tool subtracts one raster dataset from another.

  4. Set Raster to DSM. Set Raster2 to DTM.

    Raster and Raster2 parameters

    Before running this function, you'll ensure that it processes with the correct pixel output type. This parameter determines the range of values that a particular raster file can store. You'll use 32 Bit Float to ensure that decimal places in your output raster are not lost.

  5. Click the General tab. Set Output Pixel Type to 32 Bit Float.

    General tab with Output Pixel Type parameter

  6. Click Create new layer.

    A raster is added to the map.

    A raster is added to the map.

    The default name needs to be updated; you'll do this next.

  7. Rename the Minus_DSM_DTM layer to nDSM.

    Next, you'll change the layer's symbology to better observe the data.

  8. In the Contents pane, under nDSM, right-click the symbol. From the drop-down menu, check the box next to Show names.

    Show names option

  9. Choose the Elevation 1 symbology.

    Elevation 1 symbology

    To help make this symbology clearer, you'll change the Stretch Type. This changes the histogram used when drawing a raster's colors on the map. Using the Histogram Equalize stretch type will better show elevation data in the scene.

  10. On the ribbon, click the Raster Layer tab. In the Rendering group, click the Stretch Type drop-down menu, and choose Histogram Equalize.

    Histogram Equalize stretch type

    The nDSM layer re-renders with the new stretch type; more detail is visible in the raster.

    The nDSM layer rendered with the Histogram Equalize stretch type.

    With the nDSM created, you are ready to start working with the building footprints. You will not see the nDSM in the next section, but it will be important when you make the building footprints three dimensional.

Process building footprints

To begin working with the building footprints, you'll use the provided task steps to clip the DSM raster to each building footprint. Then, the elevation will be used to segment the roof. This means that each building footprint will be subdivided based on which way the different parts of the roof are facing.

  1. In the Catalog pane, expand Tasks and double-click 3D Buildings.

    3D Buildings task

    The Tasks pane appears.

    3D Buildings task in Tasks pane

    The 3D Buildings solution includes many tasks, but for the city's project, you'll focus on the Publish buildings task group.

  2. Expand Publish buildings and double-click Preprocess building footprints.

    Preprocess building footprints task

    The first task step that opens is Split building footprints using features. You will not use this step, so you'll skip it.

  3. Click Skip.

    Skip button

    You'll use the Segment building footprints using elevation task step. Again, this will take your building footprints and give them height and break them up based on their different roof sections.

  4. For Building Footprints, choose Building Footprints.

    Building Footprints parameter

  5. For Elevation Surface (DSM), choose DSM.

    Elevation Surface parameter

    Next, you'll set the Spectral Detail for the tool. This is the level of importance given to height differences in your DSM. For example, in a downtown area with tall buildings that contain many roof facets at various heights, using a lower spectral detail will result in segments created only where there are large changes in elevation. Conversely, row housing with smaller height differences between buildings may require a higher spectral detail to fully segment. Valid values range from 1.0 to 20.0. The default value is 13.

  6. For Spectral Detail, ensure that the value is 13.

    Spectral Detail parameter

    Note:

    For this parameter, and those that follow, the default value is a good starting point. Depending on your own datasets, you may want to consider trying different values until you get your desired results.

    Next, you'll set the Spatial Detail. This is the level of importance given to the proximity of features in your DSM. For example, to segment architecturally complex buildings with many smaller facets, you would want to use a higher spatial detail. To smooth over variations that do not need representation, such as air conditioning units or cars in a parking garage, you would use a lower spatial detail. Valid values range from 1.0 to 20.0. The default value is 13.

  7. For Spatial Detail, ensure that the value is 13.

    Spatial Detail parameter

    Next, you'll set the Minimum Segment Size. This parameter controls the minimum size of a potential segment in pixels. If a potential segment is less than the threshold set, the segment will be merged with a surrounding segment.

  8. For Minimum Segment Size, ensure that the value is 555.

    Minimum Segment Size parameter

    Next, you'll set the Regularization Tolerance. This is the maximum distance that segment polygons can be adjusted in the effort to regularize geometry to right angles and diagonals. With high-resolution surface rasters, it's a best practice to set a regularization tolerance that is 5 to 10 times the size of the pixels to smooth out any rigidness of the pixels while maintaining the detail of the high-resolution pixels.

  9. For Regularization Tolerance, in the first parameter, type 2, and ensure that the second parameter is set to Meters.

    Regularization Tolerance parameters

  10. For Output Segmented Buildings, type Footprints.

    Output Segmented Buildings parameter

    Note:

    When the tool is run, _segmented will automatically be added to the end of the new dataset's name.

  11. Click Run.
    Note:

    The tool may make take several minutes to run depending on your computer's hardware.

    Now that the footprints have been processed, you can use them to create 3D structures.

  12. Click Finish.

    Finish button

    When the task completes, a message will appear at the bottom of the Tasks pane.

Create 3D buildings

Now that you have an nDSM and segmented building footprints, you're ready to make 3D models of the buildings. You'll use another task to aid this process.

Based on your input data, you'll create buildings with a level of detail 2 (LOD2). Level of detail refers to the geometric intricacy of your 3D models. There are four level of detail classifications that range from LOD0, which is less detailed, to LOD3, which is the most detailed:

  • LOD0 is a flat polygon without height or segmentation characteristics.
  • LOD1 is a 3D polygon containing height characteristics.
  • LOD2 is a 3D polygon with roof shapes.
  • LOD3 is a 3D polygon with roof shapes and details pertaining to the facade of the structure such as windows, doors, and so on.

Level of detail comparison

One level of detail is not necessarily better than another, but you should always try to work with a level of detail that is appropriate for a project's need. For example, someone making a realistic street-level view of a city may want LOD3. For the City of Pleasanton's needs, LOD2 buildings are the appropriate amount of detail for assessing building height and classifying roof characteristics.

  1. In the Tasks pane, double-click Create buildings.

    Create buildings task

    This task only has one step, which will pull on the datasets you created or obtained previously.

  2. Input the following parameters into the tool:
    • For Buildings, choose Footprints_segmented.
    • For Elevation Surface, choose DSM.
    • For Ground Elevation Surface, choose DTM.
    • For Normalized Elevation Surface, choose nDSM.
    • For Output Building Polygons, type BuildingsLOD2.

    Extract Roof Form tool parameters

    Note:

    When the tool is run, _roofform will automatically be added to the end of the new dataset's name.

  3. Expand RoofForm.

    These tool parameters control when a roof is considered sloped or flat when each building is processed. You will use the defaults.

    RoofForm parameters

    To learn more about how these parameters can be modified to adjust your output buildings, click the Help button to see the Extract Roof Form documentation.

    Help button

  4. Click Run.
    Note:

    The tool may take several minutes to run depending on your computer's hardware.

  5. In the Tasks pane, click Next Step.

    The next step in the task appears.

    Apply building symbology using procedural rule step

    The next step of the task is to apply 3D symbology to the output buildings layer you just created. Some task steps involve running tools and others contain steps for you to follow on your own. In this case, you will perform the actions listed in the task to assign 3D symbology to the buildings layer.

  6. In the Contents pane, right-click the BuildingsLOD2_roofform layer and choose Symbology.
  7. In the Symbology pane, click the existing symbol.

    Current symbol

  8. Click the Properties tab and click the Layers button.

    Layers button

  9. In the drop-down menu next to the current polygon fill, choose Procedural fill.

    Procedural fill option

  10. Click the Rule button.

    Rule button

  11. In the Contents pane, rename BuildingsLOD2_roofform to 3D Buildings.
  12. Click the Browse button and browse to the folder for this project and double-click the rule_packages folder. Click the LOD2BuildingShells_Meters.rpk file and click OK.

    Choose the rule package.

    Note:

    You chose the rule package for meters because your map units are meters.

    The symbology properties now reflect the rule that you assigned.

    Symbology properties of the rule package

    To better observe the buildings, you'll change the roof and facade colors.

  13. Under Display Options, change the FacadeColor to a light brown color. Change the RoofColor to a light gray color.

    Display Options

  14. At the bottom of the Symbology pane, click Apply.
  15. In the Contents pane, rename the Buildings_LOD2 layer to 3D Buildings. Drag the 3D Buildings layer into the 3D layers section.

    Move layer to 3D layers section.

  16. Under 2D Layers, turn off every layer.

    Turn off every layer under 2D Layers.

  17. On the ribbon, click the Map tab. In the Layer group, click Basemaps. Choose Imagery.
  18. Using the Explore tool, tilt the view to see the buildings in 3D.

    Symbolized buildings

    Now that you have the 3D buildings, you'll explore their attributes. Information about each building, not just its shape, is needed by the city.

  19. In the Contents pane, right-click 3D Buildings, and choose Attribute Table.

    The Attribute Table appears. The first several attributes are from the original Building Footprints layer provided by Nearmap.

    Attribute table for the 3D buildings

  20. Scroll to the end of the attribute table.

    Building information attributes

    Several fields were added when the LOD2 buildings were created. These contain all of the data that the city needs.

    • The BLDGHEIGHT (Building Height) is the maximum height of the building.
    • The EAVEHEIGHT (Eave Height) is the minimum height of the building. Buildings with no eave height have flat roofs.
    • The ROOFFORM (Roof Form) is the shape of the roof. The roof form can be Flat, Gable, or Hip.

    Roof forms

    • The BASEELEV (Base Elevation) is the base height of the building, usually equal to the ground elevation where the building is located.
    • The ROOFDIR (Roof Direction) is the compass direction (in degrees) that the roof faces. Only Gable roof forms have values for this field.
    • The RoofDirAdjust (Roof Direction Adjusted) is the field that allows the 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.

  21. Close the attribute table.
  22. In the Tasks pane, click Finish.

    You successfully created and symbolized a 3D representation of the buildings in Pleasanton.

Fuse buildings

Although you have 3D buildings, they're technically only a 2D polygon feature class with a 3D symbology. In the final part of this lesson, you'll make a 3D feature class. This process of converting data from 2D to 3D is known as fusing.

  1. In the Tasks pane, double-click Fuse Buildings.

    Fuse buildings task

    This tool will take your 2D polygons with a 3D symbology and turn it into a multipatch feature class that is able to store your building data in 3D.

  2. Set the following parameters:

    • For Building Layer, choose 3D Buildings.
    • For Unique ObjectID, choose BuildingFID.
    • For Output Building Multipatch, type PleasantonBuildings.

    Fuse Building Parts parameters

  3. Click Finish.

    The tool runs.

  4. In the Contents pane, turn off the 3D Buildings layer.

    The PleasontonBuildings layer appears in the Contents pane. There seems to be no change to the scene, but the new PleasantonBuildings layer is a multipatch layer in the project's geodatabase.

  5. In the Catalog pane, expand Databases. Expand the first 3DBuildings geodatabase.

    All of the datasets you created are here.

    Note:

    If any datasets are missing from the geodatabase, right-click the 3DBuildings geodatabase and choose Refresh.

    Databases folder

    Notice the icons next to your BuildingsLOD2_roofform and PleasantonBuildings feature classes. The symbol for BuildingsLOD2_roofform represents a 2D polygon feature class, while the symbol next to PleasantonBuildings represents a 3D multipatch.

  6. Save your project.

In this tutorial, you took a DSM, a DTM, and building footprints from Nearmap and converted them into a 3D model for the city to use for its planning and safety purposes.

You can find more tutorials in the tutorial gallery.