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

G. Allegri giohappy at gmail.com
Tue Dec 11 07:19:23 PST 2012


Ok, perfect, now it's clear.

giovanni

2012/12/11 Radim Blazek <radim.blazek at gmail.com>

> On Tue, Dec 11, 2012 at 2:23 PM, G. Allegri <giohappy at gmail.com> wrote:
> >>
> >> 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?
>
> QgsRasterInterface.setInput(QgsRasterInterface ) is used to set input,
> but you dont  have to call it if you are using QgsRasterPipe because
> it is called by QgsRasterPipe.insert(idx,QgsRasterInterface).
>
> > If I set a QgsRasterInterface, which will have its own input, as the
> input
> > for another QgsRasterInterface, I'm creating a chain of
> > QgsRasterInterfaces...
>
> Yes, QgsRasterPipe just helps you to manage such chain. It will
> automatically connect the interfaces. QgsRasterPipe represents a chain
> of interfaces.
>
> Radim
>
> > 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 <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/990ecb6f/attachment-0001.html>


More information about the Qgis-developer mailing list