Hi,
I'm Simone Melis and I'm sw engineer in an Italian company.

I' m using QGis API 3.26 on Ubuntu 20.04, to create an application GUI using Qt 5.15.2

I created a vector layer and I can show correctly a georeferenced pdf image. Then I added another transparent layer  (vector layer) and I tried to add markers in lat,long points. Using QgsSimpleMarkerSymbolLayer I can inserted correctly all markers of the same shape and color. Then I tried to add markers with different shapes and colors on the same layers; using QgsSimpleMarkerSymbolLayer I show only one kind of marker. Browsing on internet I found an example to use QgsCategorizedSymbolRenderer. I tried to implement it in my code but no markers shown. Can you suggest a correct way to do this?

Thanks,

Simone

Here code I implemented:

doublelatitude[4]={44.095003,44.095103,44.095203,44.094811};

doublelongitude[4]={9.858660,9.859060,9.859460,9.859034};

//

//QgsCategorizedSymbolRenderer

//

transparentLayerBSPRX->dataProvider()->addAttributes({QgsField("Category",QVariant::String),

QgsField("Name",QVariant::String),

QgsField("Latitude",QVariant::Double),

QgsField("Longitude",QVariant::Double),

QgsField("Type",QVariant::String)});

//Setupthedefaultsymbol

QgsSimpleMarkerSymbolLayer*BSPRX_SymbolLayer=newQgsSimpleMarkerSymbolLayer();

BSPRX_SymbolLayer->setShape(QgsSimpleMarkerSymbolLayer::Circle);

BSPRX_SymbolLayer->setSize(5.0);

BSPRX_SymbolLayer->setColor(Qt::blue);

QgsSymbol*def_symbol=QgsSymbol::defaultSymbol(QgsWkbTypes::PointGeometry);

def_symbol->changeSymbolLayer(0,BSPRX_SymbolLayer);

for(inti=0;i<4;i++)//Correctedloopcondition

{

QgsFeaturefeature(transparentLayerBSPRX->dataProvider()->fields());

if(i<1)

{

//Createanewfeature

feature.setAttribute("Category","A");

feature.setAttribute("Name","RX");

feature.setAttribute("Latitude",latitude[i]);

feature.setAttribute("Longitude",longitude[i]);

feature.setAttribute("Type","BSPRX");

def_symbol->symbolLayers()[0]->setColor(Qt::red);

}

else

{

//Createanewfeature

feature.setAttribute("Category","B");

feature.setAttribute("Name","TX");

feature.setAttribute("Latitude",latitude[i]);

feature.setAttribute("Longitude",longitude[i]);

feature.setAttribute("Type","BSPTX");

def_symbol->symbolLayers()[0]->setColor(Qt::blue);

}

//Addthefeaturetothelayer

transparentLayerBSPRX->dataProvider()->addFeatures(QgsFeatureList()<<feature);

transparentLayerBSPRX->addAttribute(*newQgsField("color",QVariant::String));

qDebug()<<"FeatureAttributes:"<<feature.attributes();

}

QgsCategorizedSymbolRenderer*categorizedRenderer=newQgsCategorizedSymbolRenderer("Category");

QgsRendererCategorybsprxCategory("A",def_symbol->clone(),"RX",true);

categorizedRenderer->addCategory(bsprxCategory);

QgsRendererCategorybsptxCategory("B",def_symbol->clone(),"TX",true);

categorizedRenderer->addCategory(bsptxCategory);

//Printsymbolsfordebugging

QList<QgsRendererCategory>categories=categorizedRenderer->categories();

for(constQgsRendererCategory&category:categories)

{

qDebug()<<"Category:"<<category.label()<<"Symbol:"<<category.symbol()->color();

}

//Applytherenderertothelayer

transparentLayerBSPRX->setRenderer(categorizedRenderer);


--

--
Questa email è stata esaminata alla ricerca di virus dal software antivirus 
Avast.
www.avast.com
_______________________________________________
QGIS-User mailing list
[email protected]
List info: https://lists.osgeo.org/mailman/listinfo/qgis-user
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-user

Reply via email to