QgsVectorLayer几种统计函数

注:表达式语句不能使用像$area这类QGIS的图层计算、几何计算有关的语句,只支持常规的SQL语句

取最大、最小值

需传入数值型字段的索引,根据字段名取索引建议用int idxfield = pVectorlayer->fields().lookupField(fieldname)

    /**
     * \see maximumValue()
     * \see minimumAndMaximumValue()
     * \see uniqueValues()
     */
     QVariant minimumValue( int index ) const FINAL;
     QVariant maximumValue( int index ) const FINAL;
     void minimumAndMaximumValue( int index, QVariant &minimum SIP_OUT, QVariant &maximum SIP_OUT ) const;

取唯一值

可传入任意类型字段的索引,limit参数代表查询结果不超过limit个

 QSet<QVariant> uniqueValues( int fieldIndex, int limit = -1 ) const FINAL;

聚类统计

可传入数值型字段名称或可转换为数值的SQL表达式

QVariant aggregate( QgsAggregateCalculator::Aggregate aggregate,
                        const QString &fieldOrExpression,
                        const QgsAggregateCalculator::AggregateParameters &parameters = QgsAggregateCalculator::AggregateParameters(),
                        QgsExpressionContext *context = nullptr,
                        bool *ok = nullptr,
                        QgsFeatureIds *fids = nullptr,
                        QgsFeedback *feedback = nullptr,
                        QString *error SIP_PYARGREMOVE = nullptr ) const;

QgsAggregateCalculator::Aggregate是枚举类型,包含了常用的统计类型:

 enum Aggregate
    {
      Count,  //!< Count
      CountDistinct,  //!< Number of distinct values
      CountMissing,  //!< Number of missing (null) values
      Min,  //!< Min of values
      Max,  //!< Max of values
      Sum,  //!< Sum of values
      Mean,  //!< Mean of values (numeric fields only)
      Median, //!< Median of values (numeric fields only)
      StDev, //!< Standard deviation of values (numeric fields only)
      StDevSample, //!< Sample standard deviation of values (numeric fields only)
      Range, //!< Range of values (max - min) (numeric and datetime fields only)
      Minority, //!< Minority of values
      Majority, //!< Majority of values
      FirstQuartile, //!< First quartile (numeric fields only)
      ThirdQuartile, //!< Third quartile (numeric fields only)
      InterQuartileRange, //!< Inter quartile range (IQR) (numeric fields only)
      StringMinimumLength, //!< Minimum length of string (string fields only)
      StringMaximumLength, //!< Maximum length of string (string fields only)
      StringConcatenate, //!< Concatenate values with a joining string (string fields only). Specify the delimiter using setDelimiter().
      GeometryCollect, //!< Create a multipart geometry from aggregated geometries
      ArrayAggregate, //!< Create an array of values
      StringConcatenateUnique //!< Concatenate unique values with a joining string (string fields only). Specify the delimiter using setDelimiter().
    };

QgsFeatureIds *fids使用默认参数时,是对全图层的检查。在应用时,有需要根据过滤条件的需求,可采用两种方式:一种是遍历图层,得到符合条件的QgsFeatureIds,作为参数插入;一种是对图层设置过滤条件bool setSubsetString( const QString &subset )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值