# Is there any tool in ArcMap to extract pixel values from layer stacked satellite images?

5087
5
06-16-2016 09:15 AM
New Contributor

While analyzing multiple (more than 3) satellite images from the same location, it is sometimes necessary to extract pixel values from specific areas of the image to see the changing trends whether it be for phenological studies, change detection, ecological studies etc. I know there is a tool called 'ROI' in ENVI but I was wondering if there is a similar tool in ArcMap Toolbox?

5 Replies
MVP Regular Contributor

You might want to look at the Extract Multi Values to Points tool: Extract Values to Points—Help | ArcGIS for Desktop

Regular Contributor II
MVP Esteemed Contributor

Really?  The true method?

3 image with 3 bands stacked... what are the values for the middle pixel for all images and all bands

``>>> import numpy as np>>> np.set_printoptions(edgeitems=2,linewidth=80,precision=2,suppress=True,threshold=10)>>> a = np.arange(81).reshape(9,3,3)>>> >>> aarray([[[ 0,  1,  2],        [ 3,  4,  5],        [ 6,  7,  8]],       [[ 9, 10, 11],        [12, 13, 14],        [15, 16, 17]],       ...,        [[63, 64, 65],        [66, 67, 68],        [69, 70, 71]],       [[72, 73, 74],        [75, 76, 77],        [78, 79, 80]]])>>> a[...,1,1]  # center cell over 9 bandsarray([ 4, 13, 22, 31, 40, 49, 58, 67, 76])>>> # extract by points>>> b # point maskarray([[1, 0, 1],       [0, 1, 0],       [1, 0, 1]])>>> a[np.where(b==1)]array([[ 0,  1,  2],       [ 6,  7,  8],       [12, 13, 14],       [18, 19, 20],       [24, 25, 26]])>>> # or where the mask is nonzero>>> r,c = np.nonzero(b)>>> rarray([0, 0, 1, 2, 2], dtype=int64)>>> carray([0, 2, 1, 0, 2], dtype=int64)>>> sub = a[:,r,c]>>> subarray([[ 0,  2,  4,  6,  8],       [ 9, 11, 13, 15, 17],       [18, 20, 22, 24, 26],       ...,        [54, 56, 58, 60, 62],       [63, 65, 67, 69, 71],       [72, 74, 76, 78, 80]])>>> sub.shape(9, 5)‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍``
New Contributor

Thanks FC, Abdullah and Dan for your valuable answers and comments. I see that the Spatial Analyst tools 'Extract Values to Points' and 'Extract Multi Values to Points' only work with point feature. There is another tool under the Geostatistical Analyst called the 'Extract Values to Table' which seems to work with both points and polygon. I was looking for the polygon option. Nevertheless, I don't find these tools as intuitive and interactive as the 'ROI' tool. Surely Dan, open source solutions work, I just need to get familiar with the coding part. Python is cool.

MVP Esteemed Contributor

It is builtin to arcmap

to array

then back

And that doesn't even cover SciPy if you have access to Pro

esri has embraced the open source tools