[Qgis-developer] Creating a new raster qith QgsRasterLayer?

Radim Blazek radim.blazek at gmail.com
Tue Dec 11 02:46:16 PST 2012


On Tue, Dec 11, 2012 at 10:52 AM, G. Allegri <giohappy at gmail.com> wrote:
> Until now I've mostly created vector layers on QGIS, delegating raster
> creation to custom GDAL utilities.
> Recently I looked into QgsGdalProvider and I saw that it exposes the
> QgsRasterDataProvider::Create capability.
> I wonder if it's possible to create a brand new raster (geotiff or what
> else) using this provider and, in case, what is the right workflow to do
> that. I haven't found examples of doing it...

Yes it is possible. You can use a provider directly

QgsRasterDataProvider * provider = ( QgsRasterDataProvider*
)QgsProviderRegistry::instance()->provider( "gdal", dataSource );
provider->write( data, band, width, height, xOffset, yOffset )

if you your algorithm implemented as QgsRasterInterface you can use
higher level QgsRasterFileWriter which will do the work splitting
raster into parts

QgsRasterPipe* pipe = new QgsRasterPipe();
pipe->set( inputProvider->clone() );
pipe->insert( 1, yourInterface );
QgsRasterFileWriter fileWriter( fileName );
fileWriter.writeRaster( pipe, width, height, extent, crs );

Radim


> giovanni
>
> _______________________________________________
> Qgis-developer mailing list
> Qgis-developer at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/qgis-developer
>


More information about the Qgis-developer mailing list