[Qgis-developer] Troubles with features (QgsVectorLayer)

hubbatov hubbatov at mail.ru
Mon Nov 4 23:45:33 PST 2013


Try this code. When i add feature to layer it says to me that id is negative
and not depend from layer (-2, -3, -4... for first and -6,-7,-8... for
second layer), but feature iterator says that ids are positive (1, 2, 3 ..
for first layer and 1, 2, 3 ... for second layer).

Is this a bug?
What i`m doing wrong?


        QgsVectorLayer *layer1 = new QgsVectorLayer("Polygon", "test1",
"memory");
	QgsSingleSymbolRendererV2 *renderer1 = new
QgsSingleSymbolRendererV2(QgsSymbolV2::defaultSymbol(layer1->geometryType()));
	layer1->setRendererV2(renderer1);
	map->addLayer(layer1);
	layer1->enableLabels(true);

	QgsVectorLayer *layer2 = new QgsVectorLayer("Polygon", "test2", "memory");
	QgsSingleSymbolRendererV2 *renderer2 = new
QgsSingleSymbolRendererV2(QgsSymbolV2::defaultSymbol(layer2->geometryType()));
	layer2->setRendererV2(renderer2);
	map->addLayer(layer2);


	layer1->startEditing();
	QgsFeatureIds ids1;
	for(int i = 0; i < 5; i++){
		QgsFeature f;
		f.setGeometry(QgsGeometry::fromRect(QgsRectangle(i * 10, i * 10, (i + 1) *
10, (i + 1) * 10)));
		f.setValid(true);

		layer1->addFeature(f);
		ids1 << f.id();
	}
	layer1->commitChanges();

	layer2->startEditing();
	QgsFeatureIds ids2;
	for(int i = -1; i > -6; i--){
		QgsFeature f;
		f.setGeometry(QgsGeometry::fromRect(QgsRectangle(i * 10, i * 10, (i + 1) *
10, (i + 1) * 10)));
		f.setValid(true);

		layer2->addFeature(f);
		ids2 << f.id();
	}
	layer2->commitChanges();


	QgsFeature f;
	QgsFeatureIterator iter = layer1->getFeatures();
	while(iter.nextFeature(f)){
		qDebug() << "Available feature (layer1):" << f.id();
	}
	iter = layer2->getFeatures();
	while(iter.nextFeature(f)){
		qDebug() << "Available feature (layer2):" << f.id();
	}

	layer1->startEditing();
	foreach (QgsFeatureId id, ids1) {
		qDebug() << "Added feature (layer1):" << id;
	}
	layer1->commitChanges();

	layer2->startEditing();
	foreach (QgsFeatureId id, ids2) {
		qDebug() << "Added feature (layer2):" << id;
	}
	layer2->commitChanges();



--
View this message in context: http://osgeo-org.1560.x6.nabble.com/Troubles-with-features-QgsVectorLayer-tp5087389.html
Sent from the Quantum GIS - Developer mailing list archive at Nabble.com.


More information about the Qgis-developer mailing list