<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Hi,</p>
<p><br>
</p>
<p>I believe <a class="moz-txt-link-freetext" href="https://github.com/OSGeo/gdal/pull/3964">https://github.com/OSGeo/gdal/pull/3964</a> should improve
this</p>
<p><br>
</p>
<p>Even<br>
</p>
<p><br>
</p>
<div class="moz-cite-prefix">Le 11/06/2021 à 21:30, Brendan
Heberlein via gdal-dev a écrit :<br>
</div>
<blockquote type="cite"
cite="mid:DM6PR06MB43770F676C282625CB1CF150BA349@DM6PR06MB4377.namprd06.prod.outlook.com">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style type="text/css" style="display:none;">P {margin-top:0;margin-bottom:0;}</style>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif;
font-size: 12pt; color: rgb(0, 0, 0);">
<span style="color: rgb(0, 0, 0); font-family: Calibri, Arial,
Helvetica, sans-serif; font-size: 12pt; background:
var(--white);">Hello all,</span><br>
</div>
<div dir="ltr">
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;
font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;
font-size:12pt; color:rgb(0,0,0)">
I have been using <code>gdalwarp</code> to georeference
sensor data with geolocation arrays.</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;
font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;
font-size:12pt; color:rgb(0,0,0)">
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,
<a href="https://pasteboard.co/K69DUni.png"
title="https://pasteboard.co/K69DUni.png"
moz-do-not-send="true">
see the image here</a>.</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;
font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;
font-size:12pt; color:rgb(0,0,0)">
(Sensor data over Google satellite basemap; red dots are
geolocation points.)</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;
font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;
font-size:12pt; color:rgb(0,0,0)">
Notice how the data values are 'extruded' from the edges.</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;
font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;
font-size:12pt; color:rgb(0,0,0)">
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?</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;
font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;
font-size:12pt; color:rgb(0,0,0)">
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.</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;
font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;
font-size:12pt; color:rgb(0,0,0)">
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:</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;
font-size:12pt; color:rgb(0,0,0)">
<blockquote itemscope=""
itemtype="https://schemas.microsoft.com/QuotedText"
style="border-left-width:3px; border-left-style:solid;
border-color:rgb(200,200,200); padding-left:1ex;
margin-left:0.8ex; color:rgb(102,102,102)">
<span style="font-family:Consolas,Courier,monospace;
font-size:10pt"># Geolocation domain metadata</span>
<div><span style="font-family:Consolas,Courier,monospace;
font-size:10pt">geoloc_metadata = {</span></div>
<div><span style="font-family:Consolas,Courier,monospace;
font-size:10pt"> 'SRS': WGS84_UTM16N.ExportToWkt(),</span></div>
<div><span style="font-family:Consolas,Courier,monospace;
font-size:10pt"> 'X_BAND': '1',</span></div>
<div><span style="font-family:Consolas,Courier,monospace;
font-size:10pt"> 'X_DATASET': str(igm_img_file),</span></div>
<div><span style="font-family:Consolas,Courier,monospace;
font-size:10pt"> 'Y_BAND': '2',</span></div>
<div><span style="font-family:Consolas,Courier,monospace;
font-size:10pt"> 'Y_DATASET': str(igm_img_file),</span></div>
<div><span style="font-family:Consolas,Courier,monospace;
font-size:10pt"> 'PIXEL_OFFSET': '0',</span></div>
<div><span style="font-family:Consolas,Courier,monospace;
font-size:10pt"> 'LINE_OFFSET': '0',</span></div>
<div><span style="font-family:Consolas,Courier,monospace;
font-size:10pt"> 'PIXEL_STEP': '1',</span></div>
<div><span style="font-family:Consolas,Courier,monospace;
font-size:10pt"> 'LINE_STEP': '1',</span></div>
<div><span style="font-family:Consolas,Courier,monospace;
font-size:10pt">}</span></div>
<div><br>
</div>
<div><span style="font-family:Consolas,Courier,monospace;
font-size:10pt"># Set geolocation domain metadata on
dataset to be warped</span></div>
<div><span style="font-family:Consolas,Courier,monospace;
font-size:10pt">dn_img_ds.SetMetadata(geoloc_metadata,
'GEOLOCATION')</span></div>
<div><br>
</div>
<div><span style="font-family:Consolas,Courier,monospace;
font-size:10pt">x_min, y_min = igm[:2].min(axis=(1,2))</span></div>
<div><span style="font-family:Consolas,Courier,monospace;
font-size:10pt">x_max, y_max = igm[:2].max(axis=(1,2))</span></div>
<div><br>
</div>
<div><span style="font-family:Consolas,Courier,monospace;
font-size:10pt"># warp_options =
gdal.WarpOptions(warpMemoryLimit=)</span></div>
<div><span style="font-family:Consolas,Courier,monospace;
font-size:10pt">warped_ds = gdal.Warp(f'/warped.tif',
dn_img_ds,</span></div>
<div><span style="font-family:Consolas,Courier,monospace;
font-size:10pt"><span
style="background-color:rgb(255,255,255);
display:inline!important"> <span
class="x_Apple-converted-space">
</span></span>outputBounds=(x_min, y_min, x_max,
y_max),</span></div>
<div><span style="font-family:Consolas,Courier,monospace;
font-size:10pt"> xRes=1.0,</span></div>
<div><span style="font-family:Consolas,Courier,monospace;
font-size:10pt"> yRes=1.0,</span></div>
<div><span style="font-family:Consolas,Courier,monospace;
font-size:10pt">
resampleAlg='near',</span></div>
<div><span style="font-family:Consolas,Courier,monospace;
font-size:10pt">
dstSRS=WGS84_UTM16N,</span></div>
<div><span style="font-family:Consolas,Courier,monospace;
font-size:10pt"> srcNodata=None,</span></div>
<div><span style="font-family:Consolas,Courier,monospace;
font-size:10pt"> dstNodata=-9999,</span></div>
<div><span style="font-family:Consolas,Courier,monospace;
font-size:10pt"> multithread=True,</span></div>
<div><span style="font-family:Consolas,Courier,monospace;
font-size:10pt">
targetAlignedPixels=True,</span></div>
<div><span style="font-family:Consolas,Courier,monospace;
font-size:10pt">
outputType=get_gdal_dtype(np.int16),</span></div>
<div><span style="font-family:Consolas,Courier,monospace;
font-size:10pt"> geoloc=True)</span></div>
</blockquote>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;
font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
Any insight would be much appreciated. Cheers!</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;
font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;
font-size:12pt; color:rgb(0,0,0)">
— Brendan Heberlein</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;
font-size:12pt; color:rgb(0,0,0)">
<div style="margin:0px; font-size:15px; color:rgb(32,31,30)"><span
style="margin:0px; font-size:10pt"> Research
Intern, BS</span></div>
<div style="margin:0px; font-size:15px; color:rgb(32,31,30)"><span
style="margin:0px; font-size:10pt"> Townsend
Lab</span></div>
<span style="margin:0px; font-size:10pt; color:rgb(32,31,30);
background-color:white"> University of Wisconsin
- Madison</span></div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
gdal-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:gdal-dev@lists.osgeo.org">gdal-dev@lists.osgeo.org</a>
<a class="moz-txt-link-freetext" href="https://lists.osgeo.org/mailman/listinfo/gdal-dev">https://lists.osgeo.org/mailman/listinfo/gdal-dev</a>
</pre>
</blockquote>
<pre class="moz-signature" cols="72">--
<a class="moz-txt-link-freetext" href="http://www.spatialys.com">http://www.spatialys.com</a>
My software is free, but my time generally not.</pre>
</body>
</html>