美文网首页
QgsPostgresProvider源码分析(3)之QgsPo

QgsPostgresProvider源码分析(3)之QgsPo

作者: NullUser | 来源:发表于2022-06-27 11:15 被阅读0次

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的函数。

相关文章

网友评论

      本文标题:QgsPostgresProvider源码分析(3)之QgsPo

      本文链接:https://www.haomeiwen.com/subject/dwpnvrtx.html