Hi Adriana,

Here are a few ideas:

import numpy as np

ima = gdal.Open(filea, 0)
banda = ima.GetRasterBand(1)
dataa = banda.ReadAsArray()

print type(dataa), dataa.shape, isinstance(dataa, np.ma.MaskedArray)

imb = gdal.Open(fileb, 0)
bandb = imb.GetRasterBand(1)
datab = bandb.ReadAsArray()

print type(datab), datab.shape, isinstance(datab, np.ma.MaskedArray)

So if you have masked arrays, where the fill_value=255, ie: your nodata value

The mask is True for nodata so

weights = dataa.mask | datab.mask
np.average([dataa, datab], axis=0, weights=weights)

You might need to invert the weights in which case try weights=~weights instead.

You might need to do this in three operations using appropriate masks
1) copy dataa values that are not masked but are in datab
2) copy datab values that are not masked but are in dataa
3) to copy the average of dataa and datab where they are both not masked.

Another option might be to use numpy.vectorize() to apply a function to each cell in an array:
https://docs.scipy.org/doc/numpy/reference/generated/numpy.vectorize.html

-Steve

On 6/24/2019 10:38 PM, Adriana Parra wrote:
Hello,

I have been trying to mosaic two images that partially overlap using band pixel functions in Python. My images contain unsigned integers (uint8) and the no data value is 255. I considered using the nanmean function so that I would get average values in overlapping areas of the two images and maintain the original value of the non-overlapping areas, but for some reason the NAN values are being interpreted as zero, resulting in half of the original value in non-overlapping areas.  I would really appreciate any feedback. I am using GDAL 3.1.0 and python 3.6. Bellow is the code I used and I am sending attached the input files. gdalbuildvrt  mosaic1.vrt -input_file_list  input_files.txt -srcnodata "255"

 import numpy as np
def average(in_ar, out_ar, xoff, yoff, xsize, ysize, raster_xsize,raster_ysize, buf_radius, gt, **kwargs):
    np.round_(np.clip(np.nanmean(in_ar, axis = 0, dtype = 'uint8'),0,255),
              out = out_ar)

gdal_translate --config GDAL_VRT_ENABLE_PYTHON YES mosaic1.vrt mosaic1.tif

Mosaic1.jpeg <https://drive.google.com/a/nevada.unr.edu/file/d/1YgugcVnU6d5BmPYkYcotqBi3fFQcPpY8/view?usp=drive_web> raw_files.jpeg <https://drive.google.com/a/nevada.unr.edu/file/d/1SQoH58V3MGtP-oXYnPYsf66snFOsWagC/view?usp=drive_web> test_files.7z <https://drive.google.com/a/nevada.unr.edu/file/d/14No5nblxhNKeOU8k86Gfan7utYIUSqRU/view?usp=drive_web>



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


---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus

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

Reply via email to