<div dir="ltr">Hi,<div><br></div><div>I am having a bit of trouble with warping a dataset (an ECW file) with multiple overviews. The base file is huge, so I am selecting the overview that matches closest to my output resolution and makes an in-memory VRT of this, consisting of the overview bands of the original image. </div><div><br></div><div>This seems to only work for some overview levels, and not for others. I get results that appear to be made from the correct sets of colors basically, but way out of scale and postion. Some times it seems to work nicely though, so I suspect that there is some memory overwriting issue or something here.</div><div><br></div><div>This is the part of the code that builds the overview VRT. The input dataset is _ds, an</div><div><br></div><div><div><span class="" style="white-space:pre"> </span>// Create a VRT of the closest matching overlay</div><div><span class="" style="white-space:pre"> </span>GDALDriver *vrtDriver = (GDALDriver *) GDALGetDriverByName( "VRT" );</div><div><br></div><div><span class="" style="white-space:pre"> </span>vrtDS = vrtDriver->Create("", ovrW, ovrH, _numBands, _dataType, NULL);</div><div><span class="" style="white-space:pre"> </span>GDALSetProjection(vrtDS, _srcProjectionWKT.c_str());</div><div><br></div> <span style="white-space:pre">ouble geoTransform[6];
_ds->GetGeoTransform(geoTransform);
double basePixelSizeX = geoTransform[XFM_PIXEL_SIZE_EW];
double basePixelSizeY = geoTransform[XFM_PIXEL_SIZE_NS];</span> </div><div><br><div><span class="" style="white-space:pre"> </span>geoTransform[XFM_PIXEL_SIZE_EW] = scaleX*basePixelSizeX;</div><div><span class="" style="white-space:pre"> </span>geoTransform[XFM_PIXEL_SIZE_NS] = scaleY*basePixelSizeY;</div><div><span class="" style="white-space:pre"> </span>vrtDS->SetGeoTransform(geoTransform);</div><div><br></div><div><span class="" style="white-space:pre"> </span>for(int i = 1; i <= _numBands; i++)</div><div><span class="" style="white-space:pre"> </span>{</div><div><span class="" style="white-space:pre"> </span>GDALRasterBand* srcRootBand = _ds->GetRasterBand(i);</div><div><span class="" style="white-space:pre"> </span>GDALRasterBand* srcBand = srcRootBand->GetOverview(overviewId);</div><div><span class="" style="white-space:pre"> </span>VRTSourcedRasterBand* vrtBand = (VRTSourcedRasterBand*)vrtDS->GetRasterBand(i);</div><div><span class="" style="white-space:pre"> </span>vrtBand->AddSimpleSource(srcBand);</div><div><span class="" style="white-space:pre"> </span>}</div></div><div><br></div></div>