On Tue, Dec 11, 2012 at 12:23 PM, G. Allegri <[email protected]> wrote: > Thanks Radim, I wasn't aware of all these news in trunk! > The QgsRasterPipe is really powerful. > > Is there some doc about it? > I've run through the code to understand the logic behind QgsRasterPipe (QRP) > and QgsRasterInterface (QRI). > I see that for a QRI must be set a an input QRI (setInput method). If I > understand it correctly a QRP can have various "branches" made by sequences > of QRI?
Do you mean QgsRasterInterface with multiple inputs? This is not currently supported. In theory you can write an interface with multiple inputs, but for example QgsRasterFileWriter is using some info from srcInput, i.e. the first interface (provider) in the pipe, there is no support for multiple srcInput. Most probably it would work, but there some problems may appear. You could also overwrite srcInput in your QgsRasterInterface subclass in which multiple branches are connected. Radim > giovanni > > > 2012/12/11 Radim Blazek <[email protected]> >> >> On Tue, Dec 11, 2012 at 10:52 AM, G. Allegri <[email protected]> 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 >> > [email protected] >> > http://lists.osgeo.org/mailman/listinfo/qgis-developer >> > > > _______________________________________________ Qgis-developer mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/qgis-developer
