[gdal-dev] Edge Artifacts with GDAL Warp & Geolocation Arrays

Even Rouault even.rouault at spatialys.com
Fri Jun 11 12:49:43 PDT 2021


Hi,


I believe https://github.com/OSGeo/gdal/pull/3964 should improve this


Even


Le 11/06/2021 à 21:30, Brendan Heberlein via gdal-dev a écrit :
> Hello all,
>
> I have been using |gdalwarp|​ to georeference sensor data with 
> geolocation arrays.
>
> I have observed that GDAL assigns values to pixels that clearly fall 
> outside the geolocation footprint, producing some funny artifacts at 
> the image edges. For example, see the image here 
> <https://pasteboard.co/K69DUni.png>.
>
> (Sensor data over Google satellite basemap; red dots are geolocation 
> points.)
>
> Notice how the data values are 'extruded' from the edges.
>
> This occurs with various interpolation methods (all the ones I tried), 
> including nearest neighbor, average & bilinear. Why does this happen? 
> How can I go about fixing this?
>
> Ideally, any pixel in the output grid which lies more than 1 pixel 
> width from any of the geolocation points (red dots) would be assigned 
> to no-data.
>
> My code is very straightforward, basically I open the raw sensor image 
> & geolocation array (a.k.a. input geometry map or IGM) with GDAL & 
> then assign geolocation metadata to the sensor image before warping:
>
>     # Geolocation domain metadata
>     geoloc_metadata = {
>         'SRS': WGS84_UTM16N.ExportToWkt(),
>         'X_BAND': '1',
>         'X_DATASET': str(igm_img_file),
>         'Y_BAND': '2',
>         'Y_DATASET': str(igm_img_file),
>         'PIXEL_OFFSET': '0',
>         'LINE_OFFSET': '0',
>         'PIXEL_STEP': '1',
>         'LINE_STEP': '1',
>     }
>
>     # Set geolocation domain metadata on dataset to be warped
>     dn_img_ds.SetMetadata(geoloc_metadata, 'GEOLOCATION')
>
>     x_min, y_min = igm[:2].min(axis=(1,2))
>     x_max, y_max = igm[:2].max(axis=(1,2))
>
>     # warp_options = gdal.WarpOptions(warpMemoryLimit=)
>     warped_ds = gdal.Warp(f'/warped.tif', dn_img_ds,
>     outputBounds=(x_min, y_min, x_max, y_max),
>                           xRes=1.0,
>                           yRes=1.0,
>     resampleAlg='near',
>     dstSRS=WGS84_UTM16N,
>                           srcNodata=None,
>                           dstNodata=-9999,
>                           multithread=True,
>     targetAlignedPixels=True,
>     outputType=get_gdal_dtype(np.int16),
>                           geoloc=True)
>
>
> Any insight would be much appreciated. Cheers!
>
>      — Brendan Heberlein
>             Research Intern, BS
>             Townsend Lab
>             University of Wisconsin - Madison
>
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/gdal-dev

-- 
http://www.spatialys.com
My software is free, but my time generally not.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20210611/c6bdf7d2/attachment-0001.html>


More information about the gdal-dev mailing list