Qgis开发12-读取矢量元素
来源:互联网 发布:c语言从小到大输出 编辑:程序博客网 时间:2024/05/19 19:42
Qgis开发-读取矢量元素
sf2gis@163.com
2014年8月26日
1 概述
矢量图层内矢量元素组成,矢量图层的加载由驱动实现,驱动必须实现对矢量图层内元素的读写操作功能。
2 原理
矢量元素包含几何和属性两部分组成。几何部分用于提供图形相关内容。属性部分提供与几何相关联的属性内容。属性包含属性名和属性值。
3 方法
QgsFeature是矢量元素的抽象。QgsGeometry是几何部分的抽象。属性部分的属性名由QgsFields(是QgsField的集合操作类)抽象。属性值由QgsAttributes抽象。
1) 在矢量图层获取元素时,QgsVectorLayer::getFeature()完成操作。getFeature()会返回元素操作对象(QgsFeatureIterator)。
2) QgsFeatureIterator是一个QgsAbstractFeatureInterator的包装类,由其组成(不是继承)。
3) 为了获取矢量图层元素,需要构造一个QgsAbstractFeatureIterator的子类对象,来构造QgsFeatureIterator。而驱动提供的,能够获取元素的类只有QgsAbstractFeatureSource的子类。QgsAbstractFeatureFromSource<T>则是一个继承自QgsAbstractFeatureIterator,操作QgsAbstractFeatureSource的类。所以此时,需要生成一个QgsAbstractFeatureIteratorFromSource的子类对象来构造。
4) 由矢量图层驱动实现的QgsAbstractFeatureIterator子类(其实是QgsAbstractFeatureIteratorFromSource的子类)QgsVectorLayerFeatureIterator操作QgsAbstractFeatureSource子类QgsVectorLayerFeatureSource。从而可以构造QgsFeatureIterator。
4 示例
1) 添加相应的action和界面元素
2) 添加相应的slot处理函数
//xx.h
voidfeatureio(void);
3) 将action的signal和slot连接
//xx.cpp
connect(ui->actionFeatureio,SIGNAL(triggered()),this,SLOT(featureio()));
4) 实现SLOT
//xx.cpp
/**
*@briefMainWindow::featureio
*
*readfeatureattribute.
*@authorsf2gis@163.com
*@date2014-08-2616:27:24
*/
voidMainWindow::featureio()
{
QgsVectorLayer*pVectorLayer=(QgsVectorLayer*)m_pMapCanvas->currentLayer();
QgsFeatureIteratorfeatureIt=pVectorLayer->getFeatures();
featureIt.rewind();
QgsFeatureIdsids;
QgsFeaturef;
while(featureIt.nextFeature(f))
{
constQgsFields*pFields=f.fields();
ids<<f.id();
for(inti=0;i<pFields->size();++i){
qDebug()<<"Feild["<<i<<"]="<<pFields->at(i).name()<<endl;
qDebug()<<"Attribute["<<i<<"]="<<f.attribute(i).toString()<<endl;
}
}
}
5 带有属性的地理实体抽象QgsFeature
参见:Qgis开发11-地理实体抽象.docx
6 相关类
6.1 QgsGeometry
参见:Qgis相关类参考.docx
- Qgis开发12-读取矢量元素
- Qgis开发14-创建矢量元素
- Qgis开发13-矢量空间分析
- Qgis开发3-加载矢量、栅格图层
- Qgis应用-矢量操作
- QGis二次开发基础 -- 添加矢量要素功能
- QGis二次开发基础 -- 添加矢量要素功能
- Qgis开发1:总则
- qgis 插件开发
- Qgis开发17-日志
- QGIS python开发手册
- qgis二次开发矢量数据点选择的方法
- 使用QGIS将文本坐标转换为矢量文件
- Gdal读取矢量文件
- Qgis开发2-工程组织
- Qgis开发8-显示GUI
- Qgis开发10-缓冲区分析
- python开发qgis插件之一
- HDWiki的兼容性问题
- Linux基本操作——VI和VIM
- 发布一个文字界面库 解放文字显示 几分钟使你的对话框OR视图文字呈现多彩效果
- 单例会话bean(1)
- 辩证法和放屁
- Qgis开发12-读取矢量元素
- 人品计算器
- 浅谈对运动的看法
- 单例会话bean(2)----生命周期回调与并发性
- Java学习笔记(一)
- 字符串-01. 在字符串中查找指定字符(15)
- Ui美化之Edittext为空抖动下
- android ble 蓝牙4.0 cc2540 开发(一)
- BitMap相关操作