Suite

Comment rendre le niveau de profondeur de la mer en différentes couleurs ?

Comment rendre le niveau de profondeur de la mer en différentes couleurs ?


J'aimerais adapter un ancien code en c++ en utilisant l'api qgis 1.6 :

const QgsRenderer* lrenderer = pLayer->renderer(); if( lrenderer == NULL ) lrenderer = new QgsSingleSymbolRenderer( pLayer->geometryType() ); QListe lSymboles = lrenderer->symboles(); QgsSymbol* lsy = lSymbols.at(0); lrenderer = new QgsUniqueValueRenderer( QGis::Polygon ); QStringList lListValue; lListValue << "0" << "3" << "5"<< "10" ; for(int i = 0 ; i < lListValue.size() ; i++) { QgsSymbol* newsymbol = new QgsSymbol( *lsy); newsymbol->setLowerValue( QString::number(i) ); nouveausymbole->setFillColor(QColor(115, 182, 239)); nouveausymbole->setColor( QColor(125, 137, 140) ); nouveausymbole->setLineWidth(0.3); ((QgsUniqueValueRenderer*)lrenderer)->insertValue( lListValue.at(i), newsymbol ); //A } ((QgsUniqueValueRenderer*)lrenderer)->updateSymbolAttributes(); //B ((QgsUniqueValueRenderer*)lrenderer)->setClassificationField(lMapField.value("DRVAL2").toInt() ); //C

Ceci est un code qgis api 1.6 c++ Maintenant, je veux faire la même chose en utilisant qgis 2.8.2 api c++ j'ai commencé à le coder :

lrenderer = QgsFeatureRendererV2::defaultRenderer( QGis::Polygon ); QListe lSymboles = lrenderer->symboles(); QListe lSymbolsVersRender = lrenderer->symboles(); QStringList lListValue; lListValue << "0" << "3" << "5"<< "10" ; for(int i = 0 ; i < lListValue.size() ; i++) { QgsSymbolV2* newsymbol = lSymbols.at(0); QgsSymbolLayerV2List lSymbolLayerList = newsymbol->symbolLayers(); QgsLineSymbolV2 *MaLigne = new QgsLineSymbolV2(lSymbolLayerList); MaLigne->setWidth(0.3); QgsSymbolLayerV2 * lSymbolLayer; lSymbolLayer = lSymbolLayerList.at(0); lSymbolLayer->setFillColor(QColor(115, 182, 239)); lSymbolLayer->setColor( QColor(125, 137, 140) ); newsymbol->insertSymbolLayer(lListValue.at(i).toInt(), lSymbolLayer); lSymbolsToRender.append(nouveausymbole); }

Je ne sais pas comment coder le commentaire A, B et C de l'ancien code ? Quelqu'un a-t-il un exemple sur la façon de rendre la profondeur de la mer avec une couleur différente, c'est-à-dire que le niveau 0 est bleu clair 10 pieds de profondeur est bleu et plus est bleu foncé


Voici le code qui pourrait être utilisé.

Le code est basé sur la lecture d'une carte s57.

QListe lSymboles = lrenderer->symboles(); QListe lSymbolsVersRender = lrenderer->symboles(); QStringList lListValue; lListValue << "0" << "3" << "5" << "10" << "15" << "20" << "30" << "35" << "40" << "50 " << "100" << "200" ; QStringList MaCouleur; MaCouleur << "#b4e6ee" << "#a0c8ee" << "#82a0ee" << "#6478ee" << "#646eee" << "#6464ee" << "#5a64ee" << "#505aee" < < "#5050ee"<< "#4646ee"<< "#3c46ee"<< "#3c3cee" ; QListe Catégories ; qDebug() << "ColorSize =" << QString::number(MyColor.size()) << " ValueSize=" << QString::number(lListValue.size()); for(int i = 0 ; i < lListValue.size() ; i++) { QgsSymbolV2* newsymbol = QgsSymbolV2::defaultSymbol(QGis::Polygon ); nouveausymbole->setColor(QColor(MyColor.at(i))); qDebug() << "i=" << QString::number(i) << " listValue=" << lListValue.at(i) << " color=" <setRendererV2(lrenderer);