Select to view content in your preferred language

Exporting slope values from a TIN / Slope model

508
8
Jump to solution
06-02-2025 04:17 AM
BenCobbing1
Occasional Contributor

Simple question really:   I create a TIN model from the set of contour polylines - I then use the TIN model to derive a slope model in degrees (using the Surface Slope tool).  This generates a slope layer - where the slope is classified (by degree value) to 2 decimal places in the Table of Contents.  BUT, this information is unavailable - either in the attribute table or when you query a cell / pixel, or when I convert the data from raster to vector - the only attribute information that exports is a "slope code" from 1-9.

I would like to retrieve the Slope Degree value (2 decimal places as shown in the ToC layer classification), or even better to have this value as a field.  But I cannot seem to do this.  I have tried exporting the data as a raster image, a vector shapefile, a feature class etc.  And all it ever does is export the SlopeCode group value (1-9). If you view the image below you can see the slope degree values in the Layer symbology, but those do not appear in the Attribute Table.

How can I get the slope degree value from a Slope model, to 2 decimal places.  I have done this multiple times in ArcView 3 (yes I am that old) - where it worked pretty seamlessly.  What am I doing wrong in ArcPro?

I have tried exporting the Slope model using all the available 8-bit (signed / unsigned) to 64 Bit / Integer options.  I have tried converting the TIN to a raster and then running the slope tool. But nothing seems gives me the slope degree value to 2 decimal places.

Please see the attached screenshot - which shows the slope degree value in the layer classification - but this information is unavailable in the attribute table.

Example slope values in TOC using a TIN.pngTIN to Slope degree values.png

0 Kudos
2 Solutions

Accepted Solutions
LizAbbey
Regular Contributor

Thanks for the clarification - I understand a bit better now. 

Arc doesn't allow raster to polygon conversion of decimal rasters (as you have discovered). To get the slope value to the hundredths place, you should multiply the raster by 100, then run the INT tool to convert the raster to an integer raster. From there you can run the raster to polygon tool, and finally divide the VALUE field in the output polygon by 100 to return the values back to their original slope (including the 2 decimal places).

View solution in original post

BenCobbing1
Occasional Contributor

Let me give that a bash - many thanks.  Much appreciated

Ben

View solution in original post

0 Kudos
8 Replies
LizAbbey
Regular Contributor

Hi Ben, 

I would recommend a workflow that skirts around the use of the tin to calculate the slope because it sounds like the process is binning values.

1. Use the Topo to Raster tool to convert your polyline contours into an elevation raster.

2. Use your new elevation raster as input into the Slope or Surface Parameters geoprocessing tool.

The output is a 32 bit floating point raster with a single slope value per pixel.

0 Kudos
BenCobbing1
Occasional Contributor

Hi Liz.  Thanks for the reply - yup, I have done that and been able to extract a single slope value with no decimal places / rounded up, for each cell - whether TIN created or DEM created.  But still doesn't make sense that ArcPro symbolizes slope values to 2 decimal places, yet it seems impossible to extract those values.   Although one could argue pedantry to wanting to get slope degree values to 2 decimal places 🙂

0 Kudos
LizAbbey
Regular Contributor

Hi Ben, thanks for those details. That's really unusual! Are you able to post the contour dataset that you're using, including the coordinate system and xyz units? I can't replicate the issue - I'm using 10 m contours from a feature class where the contour data is in a double field, outputting to .tif for both the surface and the slope, leaving all the parameters as default. My coordinate system is a projected CRS with all units in meters, and my slope is coming out with 6 decimal places (not to brag or anything, lol).

0 Kudos
BenCobbing1
Occasional Contributor

I guess I am curious as to how (or where) ArcPro generates the SlopeCode values from.  My contour dataset is a simple 2m polyline dataset with a Height field (no decimal places) - but that should not matter.  If ArcPro can generate a symbol set of SlopeCodes with 2 decimal places, then one should be able to export those values - surely ????  I have added the contours as a polyline shapefile dataset here.  I've included the projection file - which is Transverse Mercator, LO 27, WGS 84.

I'm just generally curious here.

 

 

0 Kudos
LizAbbey
Regular Contributor

Is it possible you're experiencing something unusual because you're viewing your rasters as classified rather than stretch? I'm getting a very normal experience in the outputs I've generated from your contours:

LizAbbey_0-1751014245323.png

Are you on a current version of Pro? I'm testing on v3.3.

 

0 Kudos
BenCobbing1
Occasional Contributor

I get multiple decimal places when I create a raster from the contours - whether I go TIN or Grid or other.

What I really want to do is convert the raster to a vector shapefile / feature class with the decimal places carried over.  If I create a 16-bit signed raster, I can export a slope degree value - but without decimal places.  With all other options (including: 32 bit / 64bit / intcomplex etc), ArcPro wont allow a raster to vector conversion (although QGIS will).

So the example below - the stretch pixel slope value is to 6 decimal places.  How can I export that level of detail as a vector?  I guess this is where I am stumped.  If I convert or create the raster as a 16bit signed, thenI can export a single slope value - which would be 41 degrees in the case below.

 

BenCobbing1_0-1751015399310.png

Much appreciate your input.

 

 

 

0 Kudos
LizAbbey
Regular Contributor

Thanks for the clarification - I understand a bit better now. 

Arc doesn't allow raster to polygon conversion of decimal rasters (as you have discovered). To get the slope value to the hundredths place, you should multiply the raster by 100, then run the INT tool to convert the raster to an integer raster. From there you can run the raster to polygon tool, and finally divide the VALUE field in the output polygon by 100 to return the values back to their original slope (including the 2 decimal places).

BenCobbing1
Occasional Contributor

Let me give that a bash - many thanks.  Much appreciated

Ben

0 Kudos