Extract high-resolution land cover with GeoAI
Add the input data
To get started, you'll open ArcGIS Online Map Viewer and obtain the input data needed for the workflow.
- Sign in to your ArcGIS organizational account.
Note:
If you don't have an organizational account, see options for software access.
- In your ArcGIS Online organization, on the top ribbon, click the Map tab.

Map Viewer includes two vertical toolbars, the Contents (dark) toolbar and the Settings (light) toolbar. You use the Contents toolbar to manage and view the map contents and work with the map. You use the Settings toolbar to access options for configuring and interacting with map layers and other map components.
- On the Contents toolbar, click Save and open and choose Save as.

- For Title, type Alexandra_Land_Cover.
- For Summary, type Map for extracting land cover using GeoAI.
- Click Save.
The map displays the default basemap.
You'll add drone imagery representing a neighborhood of the township of Alexandra in South Africa. The imagery is high resolution, with each pixel representing a square of about 90 by 90 centimeters on the ground. It was captured by South Africa Flying Labs and resampled from 2.5 centimeters. The layer is stored in ArcGIS Online as an image tile service.
South Africa Flying Labs is a nonprofit organization that produces drone imagery in South Africa and seeks to empower local communities with the knowledge and skills necessary to solve social problems in that country.
- In the Layers pane, click the Add button.

- Click My content and choose ArcGIS Online.

- In the search box, type Alexandra Orthomosaic 90 cm Tiled and press Enter. In the list of results, for the Alexandra_OrthoMosaic_90cm tiled imagery layer owned by Esri Tutorials, click the Add button.

Note:
This True Ortho image layer was derived from multiple drone images. It was generated in the Site Scan for ArcGIS application and saved to ArcGIS Online directly from Site Scan.
To apply the workflow proposed in this tutorial to your own imagery, see the Apply this workflow to your own imagery section at the end of the tutorial for tips.
- Zoom in and pan around the map to inspect the imagery more closely.
- On the Contents toolbar, click Save and open and choose Save.
The map is saved with the imagery. Next, you'll open the tool to extract land cover.
Open the tool
You'll use the Classify Pixels Using Deep Learning tool for the analysis.
- On the Settings toolbar, click the Analysis button.

- Click Tools.

The Tools pane appears.
- In the search box, type Classify Pixels Using Deep Learning.
- In the list of results, click the Classify Pixels Using Deep Learning tool.

Note:
Using analysis tools in ArcGIS Online requires credits. Click Estimate Credits before running a tool to see the number of credits it will use. The full workflow for this tutorial takes 2 credits.
Choose a model
The Classify Pixels Using Deep Learning tool allows you to run a variety of deep learning models. You'll use a pretrained model from ArcGIS Living Atlas to classify this image. When using deep learning models to classify imagery, it is important that the model be trained on imagery that is a good match for the imagery you want to analyze. The number of bands, bit-depth, and resolution of the imagery used for training should match your imagery.
- In the Classify Pixels Using Deep Learning tool pane, for Input imagery layer, click the Layer button.

- Click the Alexandra_OrthoMosaic_90cm layer.

You'll accept the Process as a mosaicked image default option.
- In the Model settings section, for the Model for pixel classification setting, click Select model.

- In the Select item pane, click My content and choose Living Atlas.

- In the search bar, type land cover dlpk and press Enter.

The search results contain several deep learning package (dlpk) models for land cover classification. Each model is designed for a different type of imagery input, such as Sentinel-2, Landsat 8, high-resolution satellite imagery, or aerial imagery.
- Click High Resolution Land Cover Classification - USA and click Confirm.

This model is designed for high-resolution imagery, which matches the data you're working with.
After a few moments, the model arguments appear in the tool.
- Click the pop-out button to see the item description page for the model.

A new tab opens with the item description.
This model is trained to work on 8-bit, 3-band imagery. The model was trained on imagery that has an 80 to 100 centimeters (or 0.8 to 1 meter) resolution, which means that it will best perform with input of a similar resolution. That matches the 8-bit, 3-band, 90 cm imagery that you have for Alexandra.
- When you have finished examining the model description information, close the item description tab.
Configure and run the tool
Next, you'll set some input parameters for the Classify Pixels Using Deep Learning tool.
- In the Model arguments section, find the Batch Size argument.

Deep learning pixel classification cannot be performed on the entire image at one time. Instead, the tool will split the image into small tiles, based on the Tile Size value. A Batch Size of 4 means that the tool will process four image tiles at a time. For this tutorial, you'll keep the default value of 4, and you'll also accept the other argument default values.
- In the Result layer section, for the Output name parameter, type Land_Cover_Raster and add your name or initials (for example, Land_Cover_Raster_ABC).
Note:
You cannot create two layers in an ArcGIS organization with the same name. Adding your initials to a layer name ensures that other people in your organization can also complete this tutorial. Once a layer has been created, you can rename it in the map to remove your initials, which will not affect the name of the underlying data layer.

- Click Environment settings to expand the section.
You'll accept the default values for the coordinate system, transformation, and extent.

When you are testing a deep learning tool on your own imagery, you can set a processing extent to a subset of your image and run the tool. This reduces credit consumption and allows you to see a sample of the results.
- In the Cell size section, click Select cell size and choose As specified.
- In the Cell size value box, type 0.9 and press Enter.

As you learned earlier, the model is expecting input imagery with an 80-100 centimeter cell size (or 0.8-1 meters). The imagery for Alexandra has been resampled to that larger cell size before being used as input for deep learning classification. The resampled imagery will be much closer to the model's expectation. This will ensure a faster process and more accurate land cover classification results.
Note:
To get a better understanding of how the cell size setting can affect results, see the Imagery cell size section in the Multiresolution Object Detection with Text SAM article.
- Click Estimate credits.
This process should take about one credit.
- Optionally, accept all other default values and click Run.
Note:
This process may take 10-15 minutes. You can run the tool and use the results, or you can add the Land_Cover_Raster_Output layer owned by Esri Tutorials to the map and not run the tool.
After about 10-15 minutes, the result layer, Land_Cover_Raster, appears in the Layers pane and on the map.
Examine the land cover results
The new layer is a raster imagery layer in which each pixel value represents one of nine land cover categories. You'll take a closer look at it.
Note:
For more information about rasters, check out this documentation.
- If the Properties pane is not visible,
on the Settings toolbar, click the Properties button.

The Symbology section of the Properties pane shows the classes of the raster, with different colors representing the land cover categories.

The map shows the classified raster.

- Pan and zoom around the map to explore the results.
- In the Layers pane, for the Land_Cover_Raster layer, click the visibility button to turn the layer on and off as you explore the results.

Turning the layer off allows you to see the imagery below the new layer so you can compare the image to the classified result.
You may notice that the vegetation areas were extracted with good overall accuracy, but the results are of lower quality for the buildings, especially in the areas containing informal housing. Depending on the imagery resolution and the specific type of buildings present, the quality of results may vary, and it can be useful to use different methods to extract different feature types. A powerful desktop approach to extract buildings with high accuracy is described in the Multiresolution Object Detection with Text SAM article.
- On the Contents toolbar, click Save and open and click Save.
Generate a land cover feature layer
Now that you have a land cover raster, you can derive a polygon layer from it. This will allow you to conduct analyses using vector-based geoprocessing tools available in ArcGIS Online. You'll do that with the Convert Raster to Feature tool. The output will be a hosted feature layer in your ArcGIS Online content.
- On the Settings toolbar, click the Analysis button.

- In the Classify Pixels Using Deep Learning tool pane, click the back button.

- In the search box, type convert raster to feature. In the search results, click the Convert Raster to Feature tool.

- On the Convert Raster to Feature tool, for Input raster layer to convert, click Layer and choose Land_Cover_Raster.

- In the Conversion settings section, for Field to convert, choose Class.

- For Output type, click Polygon.

- Uncheck the Simplify lines or polygons option.

This preserves the original detail of the land cover in the output features for more accurate results.
- For Output features name, type Land_Cover_Features and add your name or initials.

Adding your initials helps ensure that the output feature class has a unique name in your organization.
- Click Estimate credits.
The process should use about one credit.
- Click Run.
The process may take 3-10 minutes. When it finishes, the Land_Cover_Features layer is created and added to the map.
Style the land cover classes
In the new layer, the different land cover patches have been converted into polygon features. Each polygon has a land cover type assigned to it. You'll style the layer by the land cover classes.
- In the Layers list, confirm that the Land_Cover_Features layer is selected.
- On the Settings toolbar, click the Styles button.

- In the Styles pane, in the Choose attributes section, click the Field button.
- Check Class and click Add.

The features are drawn with different colors for each land cover class.

The default symbols for the land cover features use red and green hues that may be difficult for some people to see. You'll adjust them to make a layer that is friendlier for people with color vision deficiency.
- In the Styles pane, for Types (unique symbols), click the Style options button.

- Click the red symbol for Impervious Surfaces.

- In the Symbol style pane, click Fill color.

- In the Select color pane, in the hex color code box (#), type 888888 and click Done.

This hexadecimal code is a medium shade of gray.
- Set the colors of the following classes using the hex code values from the following table:
Land cover class Hex code Structures
DDDDDD
Tree canopy
01662B
Impervious roads
000000
- Click Done and click Done again.
- On the Settings toolbar, click Properties.

- Scroll down to the Appearance section. Drag the Transparency slider to 0%.

The feature layer is no longer partly transparent.

- On the Contents toolbar, click Save and open and choose Save.
Add a field to store areas
The land cover feature layer does not have a field to store the area of the features. Because you would like to know the total area of the two green space land cover classes (Low Vegetation and Tree Canopy), you'll add a field to the table to store the area for each feature. You'll use this later to calculate the green space land cover area. To add a field, you'll open the item in your ArcGIS Online organization.
- In the upper left corner of Map Viewer, click the Menu button and click Content.

- On the Content tab, click the Land_Cover_Features item.

The item page for the layer appears.
- Click the Data tab.

- In the upper right corner of the table, click Add field.

- Click Numbers and click Double.

These options will add a field that contains numbers with decimal places.
- Click Next.
- For Field name, type area_sqm. For Display name, type Area Sqm.

- Accept the default values for the other parameters and click Add field.
The new field is added to the Land_Cover_Features attribute table.
Calculate polygon areas
Next, you'll use an Arcade field calculation to get the area of each polygon and store it in the new column that you added to the attribute table.
- On the Data tab, in the table header section, find the column header for the new field, Area Sqm.
- In the Area Sqm column header, click the options button and choose Calculate.

- Click Arcade.

There is an option to define a filter, but you won't add a filter for this calculation.
- Click Next.

- In the Arcade expression pane, on line 1, type Area($feature, 'square-meters').

- Click Run calculation.
The calculation will process for about one minute and notify you once it has completed.
- After the calculation has finished, click the Content tab. On the Content page, click the Alexandra_Land_Cover map.
- Click Open in Map Viewer.
- In the Layers pane, for the Land Cover Features layer, click the options button and choose Show table.

The attribute table for the layer opens. The Area Sqm column has had values added to it.

Each of the polygons has an area in square meters.
Filter the layer
Next, you'll identify the vegetation-covered areas in this neighborhood of Alexandra. Two land cover types correspond to vegetation-covered areas: Low Vegetation and Tree Canopy. You'll create a filter with a query to show only these two classes.
- On the Settings toolbar, click Filter.

- Click Add new.
- In the Condition group, set the following parameters:
- For Field, choose Class.
- For the operator, choose is.
- For the value, choose Low Vegetation.

- Click Add new.
- In the Condition group, set the following parameters:
- For Field, choose Class.
- For the operator, choose is.
- For the value, choose Tree Canopy.

The filter is almost ready, but since a given polygon cannot simultaneously have two different values for the Class field, the AND operator joining the conditions needs to be changed.
- In the Show features where section, click All of the following are true and choose Any of the following are true.
The AND between the condition boxes changes to an OR.
- Click Save.
All the polygon features corresponding to vegetation are now displayed on the map.
- In the Layers pane, turn off the other layers so only the basemap is visible under the filtered layer.

Find the total area of green space
Now that you've filtered the layer, you can find the total green space area by examining the statistics of the Area Sqm field.
- In the Land Cover Features table, on the Area Sqm column header, click the options button and choose Information.

- Scroll down to the Statistics group.

The green space occupies about 426,022.74 square meters, or about 0.426 square kilometers.
You'll save this layer for use in analysis and mapping.
- In the Layers pane, for the filtered Land Cover Features layer, click the options button and choose Save as.

- For Title, type Alexandra Vegetation and add your name or initials.

- Click Save.
The new layer includes the filter, so when it is added to a map, only the vegetation features will be drawn.
- In the Layers pane, click Add.
- Find the Alexandra Vegetation layer in your My content section and click Add.

- In the Add layer pane, click the Back button.
The Alexandra Vegetation layer is added to the map.
- On the Contents toolbar, click Save and open and choose Save.
You can use the Alexandra Vegetation layer in other maps or projects. You can also conduct further analysis by opening the feature layer in ArcGIS Pro from the ArcGIS Online item page.
Apply this workflow to your own imagery
To apply this workflow to your own imagery, keep the following in mind:
- Where to store your imagery—In this tutorial, you used an image layer that was generated in Site Scan for ArcGIS out of raw drone imagery, resampled in ArcGIS Pro, and saved to ArcGIS Online. When working with your own data, you can upload it directly to ArcGIS Online or copy it to your local computer and upload it to ArcGIS Online as a tiled imagery layer. To learn more about uploading your data to ArcGIS Online, try this tutorial.
- Understanding the model's data requirements—As you can read on the High Resolution Land Cover Classification – USA description page, the model expects as input 8-bit, 3-band high-resolution (80 - 100 cm) imagery.
- Preparing your imagery—The three bands expected are red, green, and blue (or RGB). If your imagery has more than three bands, you should extract the relevant bands before proceeding with the deep learning process. The model also expects the imagery to have an 8-bit pixel depth. If your imagery has a different pixel depth, such as 16 bit, you should convert it to 8 bit. See the Select relevant imagery bands section in the Improve a deep learning model with transfer learning tutorial for step-by-step instructions on how to implement these changes.
- Finding information about your imagery—If you are not sure what your imagery's properties are (such as number of bands, pixel depth, or cell size), click your imagery layer, and click Properties. In the Information section of the Properties pane, click the pop-out button to see the ArcGIS Online item description page, and under Image properties, find the number of bands and cell size values.
- Experimenting with the cell size—As you are using the Classify Pixels Using Deep Learning geoprocessing tool, you can try several cell size values to see which one gives you the best result for your imagery. However, 0.9 should be a good fit for this model, since it is expecting an 80-100 centimeter cell size (or 0.8-1 meter). It is best not to use imagery that has a coarser cell size than what the model expects.
- Experimenting on a small extent—While experimenting, you can limit the processing to a small extent for faster results. In the Environments section of the tool, under Processing Extent, you can choose Full extent, Coordinates, Display extent, or Layer. It can be useful to zoom to a subset of the image and process only the display extent.
In this tutorial, you used a pretrained deep learning model to classify high-resolution drone imagery into land cover types at the pixel level for a neighborhood of the township of Alexandra, South Africa. You then converted the detailed land cover raster layer into a vector layer and symbolized it. You filtered the layer to the polygons representing vegetation and computed the total surface area they cover. Finally, you saved a vector layer showing the green space in the neighborhood.
To learn about other options to extract land cover with GeoAI, see the article Unlocking Landscapes: Landcover Mapping using Pretrained Deep Learning Models.
You can find more tutorials like these in the Use imagery in ArcGIS Online and Try GeoAI in ArcGIS series.
You can find more tutorials in the tutorial gallery.
