Select to view content in your preferred language

What is the significance of the Signed or Unsigned Char Pixel Type for Raster images?

750
4
Jump to solution
06-26-2025 10:03 AM
Craig_Eissler_Iceman
Frequent Contributor

Hello,

I've worked with quite a few Raster datasets in the past, but not so much of the Imagery kind.

I see that these Raster Images have Integer numerical values that are either "signed" and can store negative values, or they are "unsigned" and cannot -- meaning they only store positive values. I also see that the range of values depends on the number of Bits.

But "What is the significance of the Signed/Unsigned Char Pixel Type for Raster images?"
In other words, what does it mean? Why should I care? 

Thanks,

0 Kudos
1 Solution

Accepted Solutions
DuncanHornby
MVP Notable Contributor

One of the bits in the 8-bits is used to indicate if the number is negative or positive. All numbers are codified using nothing more that 1's and 0's. So if you only have 1 and 0 (bits) to create a number how do you say its negative? You use a bit as a Sign. But if you are using a bit to indicate negative/positive then you have lost the use of a bit to store the number. So an 8-bit unsigned has a greater range of numbers it can store (0-255). In a land cover raster that might be all you need to store the land categories values. Things get even more complex if you want to store numbers with decimal points and thus a float raster usually takes up a lot more disk space.

You should care because you want to be efficiently storing your data. Imagine you had a raster that only ever had the values 0,1,2,3 in them. If used stored that as a float 32 raster then a load of disk space/memory is used because it would need to accommodate the decimal point. Now if you saved that same data as a 2-bit raster that would crush your dataset size down significantly. You would also get a performance boost as the compute needs only to allocate a smaller amount of memory when processing the raster.

So bottom line, never accept the default bit-depth, think about what it is you are storing and a simple change can have real performance boosts in processing and displaying your data.

View solution in original post

0 Kudos
4 Replies
GlenterpriseUK
Esri Contributor

@Craig_Eissler_Iceman 

I believe that the difference in Signed/Unsigned pixel type defines the bit depth and value range of each pixel in a raster image.

Unsigned character can be used for things like satellite imagery or aerial photos

Signed character can be used for things like mapping temperature or elevation differences

Bit depth capacity for raster dataset pixels—ArcGIS Pro | Documentation

Why is relevant to ArcGIS Pro is because the pixel type is used to determine how the raster values are stretched and displayed. If for a specific theme you use incorrect pixel type the result can be a poor visualization.

 

Regards,

Glen

0 Kudos
Craig_Eissler_Iceman
Frequent Contributor

Ok, thanks.

But why have the differntiation at all? In other words, why not let Values be whatever they are, positive or negative? 

...Or is restricting Imagery (Photos, Infrared, etc.) to positive numbers (Unsigned) just what you have to do for those Pixels to make sense?

...Also, why would Elevation or Temperature pixels need this Type? In other words, why wouldn't Floating Points or Integers be suitable? 

0 Kudos
DuncanHornby
MVP Notable Contributor

One of the bits in the 8-bits is used to indicate if the number is negative or positive. All numbers are codified using nothing more that 1's and 0's. So if you only have 1 and 0 (bits) to create a number how do you say its negative? You use a bit as a Sign. But if you are using a bit to indicate negative/positive then you have lost the use of a bit to store the number. So an 8-bit unsigned has a greater range of numbers it can store (0-255). In a land cover raster that might be all you need to store the land categories values. Things get even more complex if you want to store numbers with decimal points and thus a float raster usually takes up a lot more disk space.

You should care because you want to be efficiently storing your data. Imagine you had a raster that only ever had the values 0,1,2,3 in them. If used stored that as a float 32 raster then a load of disk space/memory is used because it would need to accommodate the decimal point. Now if you saved that same data as a 2-bit raster that would crush your dataset size down significantly. You would also get a performance boost as the compute needs only to allocate a smaller amount of memory when processing the raster.

So bottom line, never accept the default bit-depth, think about what it is you are storing and a simple change can have real performance boosts in processing and displaying your data.

0 Kudos
Craig_Eissler_Iceman
Frequent Contributor

OK thanks for all that!

0 Kudos