Qgis二次开发-QgsFeature地理要素的特征

1.简介

QgsFeature类封装了一个特性,它包含了一个地理要素的几何信息以及属性值。

QgsFeature的意义在于提供了一种统一的方式来处理地理要素数据。通过使用QgsFeature,可以轻松地获取和修改地理要素的几何信息和属性值。

在矢量图层获取元素时,QgsVectorLayer::getFeature()完成操作。getFeature()会返回元素操作对象(QgsFeatureIterator)。

2.常用方法

//属性名查找属性值
QVariant attribute (const QString &name) const

//从其索引查找属性值
QVariant attribute (int fieldIdx) const

//返回特性的属性
QgsAttributes attributes () const

//删除与该特性关联的任何几何形状
void clearGeometry ()

//删除属性
bool deleteAttribute (const QString &name)

void deleteAttribute (int field)

//返回与此特性关联的几何图形
QgsGeometry geometry () const

//返回与该特性关联的字段映射
QgsFields fields () const

//如果特征有关联的几何图形,则返回true。
bool hasGeometry () const

//设置属性
bool setAttribute (const QString &name, const QVariant &value)

//设置特征的几何形状
void setGeometry (const QgsGeometry &geometry)

//设置特性的有效性
void setValid (bool validity)

3.示例

获取矢量图层的特性

	QString fileName = "F:/GisCtrl/x64/out/map/counties_china.shp";
	QgsVectorLayer* vecLayer = new QgsVectorLayer(fileName);

	if (!vecLayer->isValid())
	{
		return;
	}

    QgsFeatureIterator featureIterator = vecLayer->getFeatures(); // 获取所有地理要素的迭代器

	QgsFeature feature;
	while (featureIterator.nextFeature(feature)) {
		// 获取属性值
		QgsFields fields = feature.fields();
		qDebug() << feature.id();

		for (int i = 0; i < fields.size(); ++i)
		{
			QgsField field = fields.at(i);
			qDebug() << "Feild[" << i << "]=" << field.name() << endl;
			qDebug() << "Attribute[" << i << "]=" << feature.attribute(i).toString() << endl;
		}
		// 获取几何信息
		QgsGeometry geometry = feature.geometry();
	}

4.相关参考

Qgis二次开发-QgsAnnotationItem(添加文字、图片标注(支持svg、png、jpg等常用图片格式))_Mr.codeee的博客-CSDN博客

Qgis二次开发-QgsRubberBand详解(画线、画多边形)_Mr.codeee的博客-CSDN博客 

Qgis二次开发-QgsAnnotationItem(添加文字、图片标注(支持svg、png、jpg等常用图片格式))_Mr.codeee的博客-CSDN博客 

你可能感兴趣的:(Qgis,qt,qgis,特性,QgsFeature)