**Supported with:**

- Engine with Spatial Analyst
- ArcGIS for Desktop Basic with Spatial Analyst
- ArcGIS for Desktop Standard with Spatial Analyst
- ArcGIS for Desktop Advanced with Spatial Analyst
- Server with Spatial Analyst

**Library dependencies:**Version, System, SystemUI, Geometry, GraphicsCore, Display, Server, Output, Geodatabase, GISClient, DataSourcesFile, DataSourcesGDB, DataSourcesOleDB, DataSourcesRaster, DataSourcesNetCDF, GeoDatabaseDistributed, GeoDatabaseExtensions, Carto, NetworkAnalysis, Location, GeoAnalyst, Animation, Maplex, Geoprocessing, NetworkAnalyst, Schematic

**Additional library information:**Contents, Object Model Diagram

The ArcObjects components for the ArcGIS Spatial Analyst extension provide an easy-to-customize environment with a set of developer tools that allow for model development. Objects in the SpatialAnalyst library work closely with the Raster Data Objects (RDO). The RDO model is used to access, analyze, manage, convert, and visualize raster data. RDO provides features that complement the SpatialAnalyst object model such as unified data access and interaction-independent format, a high-level nonproprietary language, and an environment that is easy to extend, upgrade, and customize.

Developers most commonly consume the objects within this library and do not extend it.

See the following sections for more information about this namespace:

### Running concurrent spatial operations

SpatialAnalyst and GeoAnalyst objects are not thread safe at ArcGIS 9. Running concurrent spatial operations using the same workspace can crash the application. The workaround is to use separate output workspaces for each process or application. However, the SpatialAnalyst and GeoAnalyst objects are thread safe at 9.2 and higher.

### Spatial objects

The following are the spatial objects:

**RasterConditionalOp**—The RasterConditionalOp object includes methods that can be used to perform conditional operations on rasters.**RasterDensityOp**—With the RasterDensityOp object, the magnitude at each sample location (line or point) is distributed throughout a landscape, and a density value is calculated for each cell in the output raster.**RasterDistanceOp**—With the RasterDistanceOp object, the Euclidean distance functions measure the straight-line distance from each cell to the closest source. The Cost Distance function (or cost weighted distance) modifies Euclidean distance by equating distance as a cost factor, which is the cost to travel through any given cell.**RasterExtractionOp**—The methods in the RasterExtractionOp object are used to extract data from a raster based on shapes, attributes, and other spatial data.**RasterGeneralizeOp**—The methods in RasterGeneralizeOp either generalize on zones or smooth zone edges of a raster.**RasterGroundwaterOp**—The RasterGroundwaterOp object includes methods to perform the following: Darcy Flow (Darcy Flow and Darcy Velocity), Particle Track, and Gaussian dispersion (Porous Puff). These methods can be used to perform rudimentary advection-dispersion modeling of constituents in groundwater.**RasterHydrologyOp**—The RasterHydrologyOp methods assist in modeling the flow of water and answering questions such as "Where did the water come from and Where is it going?" These hydrologic analysis functions help model the movement of water across a surface and aid in building your understanding of key concepts and terms related to drainage systems and surface processes. In addition, these tools can be used to extract hydrologic information from a digital elevation model (DEM).**RasterLocalOp**—In the RasterLocalOp methods, the value at each location (cell) on the output raster is the result of a function of the input values at the location. One of the methods, for example, evaluates the number of times a set of rasters is greater than another raster on a cell-by-cell basis.**RasterMapAlgebraOp**—Map Algebra is the analysis language for ArcGIS Spatial Analyst. It has a simple syntax that is similar to any algebra. In RasterMapAlgebraOp, an output raster dataset results from some manipulation of the input. The input can be as simple as a single raster dataset, raster layer, feature dataset, feature layer, or shapefile, and the manipulation can be calculating the sine of each of the location's values, or there can be a series of input raster datasets or layers to which the manipulation is applied, such as when adding three raster datasets or raster layers together.**RasterMathOps**—The RasterMathOps methods provide access to a full suite of mathematical operators and functions. These operators and functions enable the values in multiple rasters to be combined arithmetically—addition, subtraction, multiplication, and division, for example. In addition, the mathematical manipulation of the values in a single input raster (sine, exponent, power, and so on), the evaluation of multiple input rasters (Boolean And, Greater Than, combinations, and so forth), and the evaluation and manipulation of the values in the binary format (Bitwise And and Bitwise Left Shift, for example) are also supported by these methods.**RasterMultivariateOp**—The RasterMultivariateOp methods allow for the exploration of relationships between many different types of attributes. There are two main types of multivariate analysis available: supervised and unsupervised classification, and principal component analysis (PCA).**RasterNeighborhoodOp**—The RasterNeighborhoodOp functions create output values for each cell location based on the value for the location and the values identified in a specified neighborhood. The neighborhood can be either moving or a search radius.**RasterZonalOp**—The RasterZonalOp functions take a value raster as input and calculate for each cell some function or statistic using the value for each cell and all cells belonging to the same zone. The zonal functions are grouped by how the zones are specified: by a single input value raster or by a second zone raster.**PathDistanceHorizontalFactor**—The PathDistanceHorizontalFactor object defines the relationship between the horizontal cost factor and the horizontal relative moving angle (HRMA). There are several factors from which to select, with modifiers, that identify a defined horizontal factor graph. Additionally, a table can be used to create a custom graph. The graphs are used to identify the horizontal factor that is used to calculate the total cost of moving into a neighboring cell.**PathDistanceVerticalFactor**—The PathDistanceverticalFactor object defines the relationship between the vertical cost factor and the vertical relative moving angle (VRMA). There are several factors from which to select, with modifiers, that identify a defined vertical factor graph. Additionally, a table can be used to create a custom graph. The graphs are used to identify the vertical factor that is used to calculate the total cost of moving into a neighboring cell.