Hi Giuseppe,

gdal_calc is built on operations with matrices using the Python module 'numpy' http://numpy.scipy.org/

Instead of digging into it I would suggest to study numpy functionality a bit. The following simple script somewhat solves your problem:

import numpy as np

"""
you may data from GDAL dataset using e.g.:
ds = gdal.Open('filename_with_values_and_categories.tif')
valuesRaster = ds.GetRasterBand(1).b.ReadAsArray()
categoryRaster = ds.GetRasterBand(2).b.ReadAsArray()
but below I just suggest arrays with random values
"""
# array with FLOAT random values normally distributed
valuesRaster = np.random.randn(100, 300)
# array with INT random number uniformly distributed within [0, 9]
categoryRaster = np.uint8(np.random.random(valuesRaster.shape) * 10)
# list of all possible categories values
categories = np.unique(categoryRaster)
# loop over all categories
for category in categories:
    # take subsample from array with values based on array with categories
    subSample = valuesRaster[categoryRaster == category]
    # calculate statistics
    sumVal = np.sum(subSample)
    countVal = len(subSample)
    meanVal = np.mean(subSample)
    stdVal = np.std(subSample)
    # print to screen
print 'Stats for category %d : %f %d %f %f' % (category, sumVal, countVal, meanVal, stdVal)


Anton

On 04/17/2012 09:48 PM, Giuseppe Amatulli wrote:
Hi,
I'm new in python and i would like to start in the hard way by modify
an already existing script.

In particular, I'm searching for a python script that is computing
statistic of a raster base on another existing category raster.
Something similar to r.statistics in grass.
The out put has to be a raster with the statistical value of each
categorise and also the summarized text file.

Probably the most easy one is to modify is the gdal_calc.py but i'm
open to other suggestions.
Thanks in advance

_______________________________________________
gdal-dev mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to