3.QgsPostgresFeatureSource类
class QgsPostgresFeatureSource final: public QgsAbstractFeatureSource
{
};
QgsPostgresFeatureSource仅实现构造函数、析构函数和getFeatures(),该类主要通过成员变量存放一下源信息。
部分成员变量:
- QString mConnInfo;
存放连接信息,有QgsDataSourceUri的connectionInfo()生成,格式为key1='value1' key2='value2' 。例:dbname='sdetest' host=127.0.0.1 port=5432 user='sde' - QString mSqlWhereClause;
存放sql语句的默认过滤条件。 - QgsFields mFields;
存放属性字段。 - QString mRequestedSrid;QString mDetectedSrid;
Srid存放坐标系的srid,mRequestedSrid为uri中要求的srid,mDetectedSrid为从数据库探测到的。 - QgsWkbTypes::Type mRequestedGeomType;QgsWkbTypes::Type mDetectedGeomType;
GeomType同Srid同理。 - std::shared_ptr<QgsPostgresSharedData> mShared;
mShared存放provider类和feature sources的一些共享数据,这样provider在对该数据进行更改时,能确保feature sources使用最新的数据。 - QgsPostgresConn *mTransactionConnection = nullptr;
使用与provider相同的一个事务连接,如果有的话。
(1) getFeatures() override
QgsFeatureIterator QgsPostgresFeatureSource::getFeatures( const QgsFeatureRequest &request )
{
return QgsFeatureIterator( new QgsPostgresFeatureIterator( this, false, request ) );
}
返回QgsFeatureIterator对象,该对象内部持有QgsPostgresFeatureIterator对象指针,调用QgsFeatureIterator的接口实际是通过指针调用了QgsPostgresFeatureIterator的函数。
网友评论