[Qgis-developer] Displaying map with QgsUniqueValueRenderer

Marco Hugentobler marco.hugentobler at karto.baug.ethz.ch
Wed Mar 7 10:22:55 EST 2007


Hi Satya,

Just use the Method QgsUniqueValueRenderer::insertValue(QString name, 
QgsSymbol* symbol). The first parameter is the attribute value for which the 
symbol is valid, the second a pointer to your symbol (ok, 'name' is a 
misleading name for the parameter...)

In the code below, there is the outcommented line
//mypRenderer->insertValue("point",symbol);
I suppose "point" is not the attribute value for which you want the symbol to 
be applied? Try to replace it with the attribute value and see if it works.

If you want the symbol to be valid for all features, then you can use 
QgsSingleSymbolRenderer, method 
QgsSingleSymbolRenderer::addSymbol(QgsSymbol*)

Best regards,
Marco

Am Mittwoch, 7. März 2007 15:38 schrieb satya satya:
> Hi tim,
> Here is the code
>
> // QGIS Includes
> // Qt Includes
> // Std Includes
>
> int main(int argc, char ** argv)
> {
>   // Start the Application
>   QgsApplication app(argc, argv, true);
>
>   QString myPluginsDir        = "...../lib/qgis";
>   QString myLayerPath1         = ".............................
> .......shp"; QString myLayerBaseName1     = "....................shp";
>   QString myProviderName      = "ogr";
>   QgsSymbol* symbol;
>   QColor* color;
>
>
>     color = new QColor(255,0,0,255);
>
>         symbol = new QgsSymbol(color->rgb());
>
>   // Instantiate Provider Registry
>   QgsProviderRegistry::instance(myPluginsDir);
>   QgsVectorLayer * mypLayer = new QgsVectorLayer(myLayerPath1,
> myLayerBaseName1, myProviderName);
>
>    //get the field list associated with the layer
> std::vector<QgsField> myFields=mypLayer->fields();
>   QgsUniqueValueRenderer *mypRenderer=new
> QgsUniqueValueRenderer(mypLayer->vectorType());
>
>   mypRenderer->setClassificationField(5);
>
> symbol->setColor(Qt::red);
>   symbol->setFillColor(QColor(255,0,0));
>   symbol->setLabel("HELLO");
>   symbol->setPointSize (5);
>
>
>   std::deque<QString> myLayerSet;
>   mypLayer->setRenderer(mypRenderer);
> //mypRenderer->insertValue("point",symbol);
> if (mypLayer->isValid())
>   {
>     qDebug("Layer is valid");
>   }
>   else
>   {
>     qDebug("Layer is NOT valid");
>   }
>
>   // Add the Vector Layer to the Layer Registry
>
>   QgsMapLayerRegistry::instance()->addMapLayer(mypLayer, TRUE);
>     // Add the Layer to the Layer Set
>
>
>
>   myLayerSet.push_back(mypLayer->getLayerID());
>   mypLayer->setVisible(TRUE);
>
>
>
>   // Create the Map Canvas
>   QgsMapCanvas * mypMapCanvas = new QgsMapCanvas(0, 0);
>   mypMapCanvas->setExtent(mypLayer->extent());
>   // cbit qDebug(mypMapCanvas->extent().stringRep(2));
>
>   mypMapCanvas->enableAntiAliasing(true);
>   mypMapCanvas->setCanvasColor(QColor(255, 255, 255));
>   mypMapCanvas->freeze(false);
>   // Set the Map Canvas Layer Set
>   mypMapCanvas->setLayerSet(myLayerSet);
>   mypMapCanvas->setVisible(true);
>   mypMapCanvas->refresh();
>  // Start the Application Event Loop
> //cout<<marker_symbol->picture().toStdString()<<endl;
> app.exec();
>  //QgsMapCanvas myMapCanvas(0, 0);
>  QgsMapLayerRegistry::instance()->removeAllMapLayers();
> return 0;
> }
>
> I created symbol, but don't know how to add that to the unique value
> renderer.
>
> Thanking you
> cheers
> satya
>
> > On 3/5/07, Tim Sutton <tim at linfiniti.com> wrote:
> > > Hi
> > >
> > > How about posting code examples of what you have tried and we can try
> > > to help you from there....
> > >
> > > Regards
> > >
> > > Tim
> > >
> > > 2007/3/5, satya satya <satya341 at gmail.com >:
> > > > Hello all,
> > > >               I am trying to develop a simple application using QGis
> > >
> > > API.
> > >
> > > >  I have read all tutorials on QGis blog. I would like to use
> > > > "QgsUniqueValueRenderer" in my application to display features in
> > > > diff
> > > >
> > > > colors. I tried that  "QgsUniqueValueRenderer" , but no luck.
> > > >  could some body help me .
> > > >  cheers
> > > >  satya
> > > >
> > > > _______________________________________________
> > > > Qgis-developer mailing list
> > > > Qgis-developer at lists.qgis.org
> > > > http://lists.qgis.org/cgi-bin/mailman/listinfo/qgis-developer
> > >
> > > --
> > > --
> > > Tim Sutton
> > >
> > > Visit http://qgis.org for a great Open Source GIS
> > > Home Page: http://linfiniti.com
> > > Skype: timlinux
> > > MSN: tim_bdworld at msn.com
> > > Yahoo: tim_bdworld at yahoo.com
> > > Jabber: timlinux
> > > Irc: timlinux on #qgis at freenode.net



More information about the Qgis-developer mailing list