2 votos

GDAL Raster: ¿Cómo obtener la celda ( y también la posición) donde se produce el máximo?

Puedo obtener el valor máximo/mínimo de una trama a través del ComputeRasterMinMax código:

  using (var ds = Gdal.Open(tiffFile, Access.GA_ReadOnly))
  {
    var nCol = ds.RasterXSize;
    var nRow = ds.RasterYSize;
    var allValues = new int[nCol * nRow];
    Band band = ds.GetRasterBand(1);
    band.ReadRaster(0, 0, nCol, nRow, allValues, nCol, nRow, 0, 0);   
    double[] minMax = new double[2];
    band.ComputeRasterMinMax(minMax, 0);

  }

Según la documentación, minMax[0] es el valor mínimo, y minMax[1] es el valor máximo de la banda.

Pero cómo conseguir la célula que estos máximos y mínimos se produzcan, además de recorrer realmente el array y comparar el elemento uno por uno?

1voto

Peter Kahn Puntos 1860

Puede devolver el píxel máximo de una trama simplemente utilizando gdal_calc de la siguiente manera:

gdal_calc.py -A  input_raster.tif --calc="(A==max(A.flatten()))*1" --outfile=max_pixel.tif --overwrite

0voto

azoundria Puntos 31

Podrías obtener el valor de la celda "max", reclasificar todo lo que no sea ese valor a NA, convertir el raster a polígono, y luego encontrar el centroide del polígono. Es el enfoque del gorila.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X