Creating Raster Information Product using Raster Analytics¶
ArcGIS Enterprise at 10.5 provides you with the ability to perform large raster analysis using distributed computing. This capability is provided in the
arcgis.raster.analytics module and includes functionality to summarize data, analyze patterns, images, terrain and manage data. This sample show the capabilities of imagery layers and raster analytics.
import arcgis from arcgis.gis import GIS from IPython.display import display gis = GIS()
Here we're searching for multispectral landsat imagery layer:
items = gis.content.search("Landsat 8 Views", "Imagery Layer", max_items=8)
for item in items: display(item)
NOTE: The index position in the
itemslist for Landsat 8 Views may be different than the value below:
landsat_item = items
imglyr = landsat_item.layers
The code below cycles through and lists the Raster Functions published with the
for fn in imglyr.properties['rasterFunctionInfos']: print (fn['name'])
Agriculture with DRA Bathymetric with DRA Color Infrared with DRA Natural Color with DRA Short-wave Infrared with DRA Geology with DRA Agriculture Bathymetric Color Infrared Geology Natural Color Short-wave Infrared NDVI Colorized Normalized Difference Moisture Index Colorized NDVI Raw NBR Raw None
Let us create a map widget and load this layer
marthasbasin = arcgis.geocoding.geocode("Marthas Basin, Montana")
map1 = gis.map(marthasbasin, zoomlevel=12)
The utility of raster functions is better seen when we interactively cycle through these raster functions and apply them to the map. The code below cycles through the first 6 raster functions stored with the Imagery Layer and a small time delay to illustrate. The image processing occurs on-the-fly at display resolution to show how the layer can be visualized using these different raster functions published with the layer.
import time from arcgis.raster.functions import apply for fn in imglyr.properties['rasterFunctionInfos'][:6]: print(fn['name']) map1.remove_layers() map1.add_layer(apply(imglyr, fn['name'])) time.sleep(4)
Agriculture with DRA Bathymetric with DRA Color Infrared with DRA Natural Color with DRA Short-wave Infrared with DRA Geology with DRA
Developers can create their own raster functions, by chaining different raster functions. For instance, the code below is doing an Extract Band and extracting out the [4,5,3] band combination, and applying a Stretch to get the land-water boundary visualization that makes it easy to see where land is and where water is. Its worth noting that the raster function is applied at display resolution and only for the visible extent using on the fly image processing.
from arcgis.raster.functions import stretch, extract_band def process_bands(layer, bands): return stretch(extract_band(layer, bands), stretch_type='percentclip', min_percent=0.1, max_percent=0.1, gamma=[1, 1, 1], dra=True)
Let us apply this raster function to the image layer to visualize the results.
map2 = gis.map(marthasbasin, zoomlevel=12) map2