> > > Yes, you are right. Any class inheriting from QgsRasterInterface may > be plugged into the QgsRasterPipe but all interfaces will be in a > single line, no forks. >
Ok, Radim, I'm sorry if I insist on this, it's just to understand it correctly. To add a QgsRasterInterface in a QgsRasterPipe I would use QgsRasterPipe.insert(idx,QgsRasterInterface), but what is the QgsRasterInterface.setInput(QgsRasterInterface ) for? If I set a QgsRasterInterface, which will have its own input, as the input for another QgsRasterInterface, I'm creating a chain of QgsRasterInterfaces... Help me to understand it... giovanni > > BTW, you should always test if QgsRasterPipe::insert() was successful, > because if connection of interfaces fails, the interface is not > inserted. Only compatible interfaces may be connected. For example, it > is not possible to connect QgsSingleBandGrayRenderer to an interface > of ARGB32 type, because it needs numerical data as input. > QgsRasterResampleFilter only works with ARGB32 as input etc. > > Radim > > > > [1] > > > https://github.com/qgis/Quantum-GIS/blob/master/src/core/raster/qgsrasterinterface.h#L108 > > > >> > >> > >> 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
