Extract Aspect Values to Points

Topographic Analysis · Aspect Tools · geoprocessing tool · by Jeff Jenness
Works at every ArcGIS Pro license level

Summary

Copies a point feature class and adds a field holding the aspect at each point, read from an aspect raster. It does what Esri's Extract Values to Points does, but built for aspect: the optional interpolation is a weighted mean direction, a circular calculation that never averages 359° and 1° into 180°; flat cells, stored as −1, are handled as cells with no direction rather than as a value; D-infinity flow-direction rasters are accepted; and no Spatial Analyst extension is needed.

Learn more About Aspect explains why aspect matters to plants and animals, why it needs circular arithmetic, and how the four Aspect Tools fit together. Aspect Focal Statistics applies the same circular arithmetic across a neighborhood of cells rather than at a point.

Why a special tool for aspect

Aspect is the compass direction a slope faces, from 0° at north clockwise through 90° east, 180° south and 270° west back to north at 360°. It is a circle, not a number line: 359° and 1° are two degrees apart, not 358. Esri's Extract Values to Points is a fine tool for elevation, slope, or any other ordinary raster, but with interpolation switched on it averages the neighboring cell values as plain numbers. A point lying between a cell facing 359° and a cell facing 1° comes out at about 180°, due south, when both cells face almost due north. Jenness (2012) gives that example as the commonest mistake made with directional data.

This tool interpolates the way circular statistics do. Each of the four cell centers around the point is treated as an arrow of length one pointing in its aspect direction, with an east-west component sin θ and a north-south component cos θ. The four arrows are weighted by the standard bilinear weights, which depend on how close the point lies to each cell center, and added. The direction of the summed arrow is the interpolated aspect:

θ¯ = atan2 ( ∑i=14 wi⁢sinθi , ∑i=14 wi⁢cosθi )

where θi is the aspect of each of the four surrounding cell centers, wi its bilinear weight, and atan2 the two-argument arctangent that returns the full 0° to 360° circle. For the point between 359° and 1°, the two arrows both point nearly north, their sum points north, and the answer is about 0°. A cell facing due north and one facing due east, weighted equally, give northeast, 45°, which is what a person standing between the two slopes would expect.

Flat cells have no direction, so a flat neighbor contributes no arrow: it is left out and the weights of the remaining directional neighbors are renormalized to sum to one. A NoData neighbor is left out the same way. If every neighbor of a point is flat, the point gets −1, the flat value; if every neighbor is NoData, the point gets no value. A point also gets −1 when its neighbors' arrows cancel exactly, two facing north and two facing south with equal weights, say: the summed arrow then has no length and no bearing, so the point has no defined direction, and the run report counts it with the flat points. Directions that come out at exactly 360° are written as 0°, so the field never holds both names for north.

Two ways to extract

The Interpolate checkbox chooses between two readings of the raster, and the default matches Esri's default:

What the output holds

The output is a new point feature class: a copy of the input points, with all their attributes, plus one new DOUBLE field. If the input layer has an active selection, only the selected points are copied. The field is named Aspect unless you choose another name; a name that is not valid for the output workspace, or is already taken, is adjusted, and the run messages report the name actually used. Its values are compass degrees, 0 to 360, in every case, with −1 for a flat cell. A point that falls on NoData or outside the raster gets NULL in a geodatabase output; a shapefile cannot store NULL in a number field, so it gets −9999 there.

The field's own metadata records the units, the −1 and NULL or −9999 conventions, whether the value was interpolated, and the source raster, so the meaning of the numbers travels with the data. Esri's option to append all of the raster's attributes is deliberately not offered: an aspect raster has no attribute table worth appending, and the one field says everything.

The tool warns if the raster's values fall outside the range −1 to 360, which nearly always means the raster is not aspect at all, such as a slope or elevation raster picked by mistake. The run still completes.

Coordinate systems

The points are read in the raster's coordinate system. Point coordinates can be reprojected exactly, while projecting a raster resamples every cell and damages the values, so the raster is never projected, and the points and raster may be in different coordinate systems without harm. When the two are on different datums, such as NAD27 points on a NAD83 raster, the points are moved with a datum transformation as well, and the run messages name the transformation used; without one, points can land 100 m or more from their true cells. The raster is read only over the extent of the points, with a margin of cells around it, so a regional raster with a small cluster of points is handled quickly. Projected and geographic rasters both work, since a point's containing cell and its four neighboring cell centers are found the same way in either. See Projecting Rasters for why the raster is left alone.

Direction conventions and flow-direction rasters

The Input aspect convention drop-down says how the raster measures direction. Compass (0 = north, clockwise), the default, is ordinary aspect. Mathematical (0 = east, counter-clockwise; e.g. D-infinity) is the convention of D-infinity flow-direction rasters, whose values are the direction of steepest descent and so are essentially aspect measured the other way round. With the mathematical convention chosen, each extracted direction is converted to compass degrees before it is written, so the field reads the same as one extracted from an ordinary aspect raster.

The tool sets the drop-down for you when it can, by reading the geoprocessing history stored in the raster's metadata: a raster made by Esri's Flow Direction tool with the D-infinity option is recognized and the drop-down is set to Mathematical; when the history says nothing, it stays at Compass. A raster from Flow Direction's D8 option is a different matter. Its values, 1, 2, 4, 8, 16, 32, 64 and 128, are codes for eight categories, not angles, and the tool warns that they are not valid input.

A tour of the dialog

Forty numbered survey points scattered across a mountain range outlined in dark red, over a shaded elevation map, with the Extract Aspect Values to Points pane open: input point features Pinalenos_Survey_Point_Order, input aspect raster All_US_Aspect, output point features Pinalenos_Survey_Point_Aspect, Interpolate checked, output field name Aspect, input aspect convention Compass (0 = north, clockwise)
Forty survey points in the Pinaleño Mountains of southeastern Arizona, with the aspect read from an aspect raster that covers the entire conterminous United States. The tool reads only the small window of the raster around the points, so the size of the raster hardly matters.

The dialog asks for the points, the aspect raster, and an output name, which is suggested from the input. Below those are the Interpolate checkbox, the output field name, and the convention drop-down, which fills itself in from the raster's history when it can. The checkbox and field name are remembered from run to run.

The Topographic Analysis Tools gallery open on the ribbon, with the Extract Aspect Values to Points button, in the Aspect Tools row, outlined in blue
Where to find it: Extract Aspect Values to Points is in the Aspect Tools row of the Topographic Analysis Tools gallery, in the Topographic Analysis group of the Wildlife and Forestry tab.
The same forty survey points, each labeled with its number in dark red and its extracted aspect in blue, such as 1: 193 degrees, 33: 25 degrees and 40: 99 degrees
The output points labeled with their new Aspect field (blue), in compass degrees: point 33 faces north-northeast (25°), point 1 faces south (193°), and point 40 faces east (99°).
The Extract Aspect Values to Points run report, Messages tab: the ImportToolbox scripting hint; Sampled 40 points: 40 with a direction, 0 flat (-1), 0 on NoData or outside the raster (NULL); values are bilinear weighted-mean-direction aspect in compass degrees (0 = north, clockwise), -1 = flat; Extract Aspect Values to Points complete; elapsed time 3.81 seconds
The run report: how many points received a direction, how many fell on flat cells or on NoData, which method produced the values, and the elapsed time, here under 4 seconds for 40 points read from a raster of more than 21 billion cells.

ModelBuilder

A ModelBuilder diagram: Pinalenos_Survey_Point_Order and All_US_Aspect feed Extract Aspect Values to Points, which produces Pinalenos_Survey_Point_Aspect
Extract Aspect Values to Points in a model.

Parameters

LabelExplanationData type
Input point featuresRequired · in_points The points to extract aspect for. An active selection is honored. Single-point features only; multipoint feature classes are not accepted. Feature Layer
Input aspect raster (single band)Required · in_raster A single-band aspect raster in degrees, 0 to 360 clockwise from north, with −1 for flat cells. A D-infinity flow-direction raster is also valid with the convention set to Mathematical. The tool warns if the values fall outside −1 to 360. Raster Layer
Output point featuresRequired · out_points The new point feature class: a copy of the input points with all their attributes plus the new aspect field. A name is suggested from the input. Feature Class
Interpolate values at the point locations (weighted mean direction)Optional · interpolate Unchecked (default): each point gets the value of the cell it falls in, as stored, including −1 for flat. Checked: each point gets the bilinear weighted mean direction of the four surrounding cell centers, with flat and NoData neighbors left out and the weights renormalized; all-flat neighbors give −1. Boolean
Output field nameOptional · field_name The name of the new DOUBLE field. Default Aspect; adjusted if the name is not valid for the output workspace or is already in use. String
Input aspect conventionRequired · input_convention Compass (0 = north, clockwise) for ordinary aspect, or Mathematical (0 = east, counter-clockwise; e.g. D-infinity) for a D-infinity flow-direction raster, whose values are then converted to compass degrees. Set automatically when the raster's history identifies a D-infinity raster. String

Python

interpolate is True or False. The input_convention strings are exactly "Compass (0 = north, clockwise)" and "Mathematical (0 = east, counter-clockwise; e.g. D-infinity)". The new field is DOUBLE, in compass degrees; −1 is flat; NULL (geodatabase) or −9999 (shapefile) is NoData or outside the raster.

import arcpy
arcpy.ImportToolbox(r"C:\path\to\JennessEnterprisesTools.pyt")  # your installed path is shown in this tool's run messages

# Value of the cell each point falls in (no interpolation)
arcpy.jenness.ExtractAspectValuesToPoints(
    in_points=r"C:\Project\Wildlife.gdb\telemetry_points",
    in_raster=r"C:\Project\Terrain.gdb\aspect",
    out_points=r"C:\Project\Wildlife.gdb\telemetry_points_Aspect",
    interpolate=False,
    field_name="Aspect",
    input_convention="Compass (0 = north, clockwise)")

# Circular (weighted mean direction) interpolation from the 4 nearest cells
arcpy.jenness.ExtractAspectValuesToPoints(
    in_points=r"C:\Project\Wildlife.gdb\telemetry_points",
    in_raster=r"C:\Project\Terrain.gdb\aspect",
    out_points=r"C:\Project\Wildlife.gdb\telemetry_points_AspInterp",
    interpolate=True,
    field_name="Aspect")

Recommended citation

Jenness, J. 2026. Extract Aspect Values to Points. Wildlife and Forestry Tools add-in for ArcGIS Pro, v. 1.99 (September 2026). Jenness Enterprises. Available at: https://github.com/JeffJenness/Wildlife_Tools.

Credits and references

By Jeff Jenness, Jenness Enterprises (www.jennessent.com). The tool is modeled on Esri's Extract Values to Points; the weighted mean direction follows the circular statistics of Batschelet (1981), Fisher (1993), Mardia and Jupp (2000) and Zar (1999), as set out for wildlife work in Jenness (2012).

Licensing information

Works at every ArcGIS Pro license level (Basic, Standard, Advanced). No extension licenses are required; the extraction and the circular interpolation are computed internally, without Spatial Analyst.