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

G. Allegri giohappy at gmail.com
Tue Dec 11 04:29:29 PST 2012


>
>
> 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.
>

Ok, but I wonder what is QgsRasterInterface.setInput [1] meant for? Is the
input supposed to be only a QgsRasterDataProvider? If I see that it
requires a QgsRasterInterface I think it can be whatever
else QgsRasterInterface...

[1]
https://github.com/qgis/Quantum-GIS/blob/master/src/core/raster/qgsrasterinterface.h#L108


>
> Radim
>
>
> > giovanni
> >
> >
> > 2012/12/11 Radim Blazek <radim.blazek at gmail.com>
> >>
> >> 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
> >> >
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20121211/9688081d/attachment.html>


More information about the Qgis-developer mailing list