/************************************************************************ * This file has been generated automatically from * * * * src/core/qgsfeature.h * * * * Do not edit manually ! Edit header and run scripts/sipify.pl again * ************************************************************************/ class QgsFeature { %Docstring The feature class encapsulates a single feature including its id, geometry and a list of field/values attributes. .. note:: QgsFeature objects are implicitly shared. %End %TypeHeaderCode #include "qgsfeature.h" #if (SIP_VERSION >= 0x040900 && SIP_VERSION < 0x040c01) #define sipType_QVariant ((sipWrapperType *) sipTypeAsPyTypeObject (sipType_QVariant)) #endif %End public: static const QMetaObject staticMetaObject; public: SIP_PYOBJECT __iter__(); %MethodCode QgsAttributes attributes = sipCpp->attributes(); PyObject *attrs = sipConvertFromType( &attributes, sipType_QgsAttributes, Py_None ); sipRes = PyObject_GetIter( attrs ); %End SIP_PYOBJECT __getitem__( int key ); %MethodCode QgsAttributes attrs = sipCpp->attributes(); if ( a0 < 0 || a0 >= attrs.count() ) { PyErr_SetString( PyExc_KeyError, QByteArray::number( a0 ) ); sipIsErr = 1; } else { QVariant *v = new QVariant( attrs.at( a0 ) ); sipRes = sipConvertFromNewType( v, sipType_QVariant, Py_None ); } %End SIP_PYOBJECT __getitem__( const QString &name ); %MethodCode int fieldIdx = sipCpp->fieldNameIndex( *a0 ); if ( fieldIdx == -1 ) { PyErr_SetString( PyExc_KeyError, a0->toAscii() ); sipIsErr = 1; } else { QVariant *v = new QVariant( sipCpp->attribute( fieldIdx ) ); sipRes = sipConvertFromNewType( v, sipType_QVariant, Py_None ); } %End void __setitem__( int key, QVariant value /GetWrapper/ ); %MethodCode bool rv; if ( a1Wrapper == Py_None ) { rv = sipCpp->setAttribute( a0, QVariant( QVariant::Int ) ); } else { rv = sipCpp->setAttribute( a0, *a1 ); } if ( !rv ) { PyErr_SetString( PyExc_KeyError, QByteArray::number( a0 ) ); sipIsErr = 1; } %End void __setitem__( const QString &key, QVariant value /GetWrapper/ ); %MethodCode int fieldIdx = sipCpp->fieldNameIndex( *a0 ); if ( fieldIdx == -1 ) { PyErr_SetString( PyExc_KeyError, a0->toAscii() ); sipIsErr = 1; } else { if ( a1Wrapper == Py_None ) { sipCpp->setAttribute( *a0, QVariant( QVariant::Int ) ); } else { sipCpp->setAttribute( fieldIdx, *a1 ); } } %End void __delitem__( int key ); %MethodCode if ( a0 >= 0 && a0 < sipCpp->attributes().count() ) sipCpp->deleteAttribute( a0 ); else { PyErr_SetString( PyExc_KeyError, QByteArray::number( a0 ) ); sipIsErr = 1; } %End void __delitem__( const QString &name ); %MethodCode int fieldIdx = sipCpp->fieldNameIndex( *a0 ); if ( fieldIdx == -1 ) { PyErr_SetString( PyExc_KeyError, a0->toAscii() ); sipIsErr = 1; } else sipCpp->deleteAttribute( fieldIdx ); %End QgsFeature( qint64 id = 0 ); %Docstring Constructor for QgsFeature :param id: feature id %End QgsFeature( const QgsFields &fields, qint64 id = 0 ); %Docstring Constructor for QgsFeature :param fields: feature's fields :param id: feature id %End QgsFeature( const QgsFeature &rhs ); %Docstring Copy constructor %End virtual ~QgsFeature(); QgsFeatureId id() const; %Docstring Gets the feature ID for this feature. :return: feature ID .. seealso:: :py:func:`setId` %End void setId( QgsFeatureId id ); %Docstring Sets the feature ID for this feature. :param id: feature id .. seealso:: :py:func:`id` %End QgsAttributes attributes() const; %Docstring Returns the feature's attributes. :return: list of feature's attributes .. seealso:: :py:func:`setAttributes` .. note:: Alternatively in Python: iterate feature, eg. @code [attr for attr in feature] @endcode .. versionadded:: 2.9 %End void setAttributes( const QgsAttributes &attrs ); %Docstring Sets the feature's attributes. The feature will be valid after. :param attrs: attribute list .. seealso:: :py:func:`setAttribute` .. seealso:: :py:func:`attributes` %End bool setAttribute( int field, const QVariant &attr /GetWrapper/ ); %Docstring Set an attribute's value by field index. The feature will be valid if it was successful. :param field: the index of the field to set :param attr: the value of the attribute :return: ``False``, if the field index does not exist .. note:: For Python: raises a KeyError exception instead of returning ``False`` .. note:: Alternatively in Python: @code feature[field] = attr @endcode .. seealso:: :py:func:`setAttributes` %End %MethodCode bool rv; if ( a1Wrapper == Py_None ) { rv = sipCpp->setAttribute( a0, QVariant( QVariant::Int ) ); } else { rv = sipCpp->setAttribute( a0, *a1 ); } if ( !rv ) { PyErr_SetString( PyExc_KeyError, QByteArray::number( a0 ) ); sipIsErr = 1; } sipRes = rv; %End void initAttributes( int fieldCount ); %Docstring Initialize this feature with the given number of fields. Discard any previously set attribute data. :param fieldCount: Number of fields to initialize %End void deleteAttribute( int field ); %Docstring Deletes an attribute and its value. :param field: the index of the field .. seealso:: :py:func:`setAttribute` .. note:: For Python: raises a KeyError exception if the field is not found .. note:: Alternatively in Python: @code del feature[field] @endcode %End %MethodCode if ( a0 >= 0 && a0 < sipCpp->attributes().count() ) sipCpp->deleteAttribute( a0 ); else { PyErr_SetString( PyExc_KeyError, QByteArray::number( a0 ) ); sipIsErr = 1; } %End bool isValid() const; %Docstring Returns the validity of this feature. This is normally set by the provider to indicate some problem that makes the feature invalid or to indicate a null feature. .. seealso:: :py:func:`setValid` %End void setValid( bool validity ); %Docstring Sets the validity of the feature. :param validity: set to ``True`` if feature is valid .. seealso:: :py:func:`isValid` %End bool hasGeometry() const; %Docstring Returns ``True`` if the feature has an associated geometry. .. seealso:: :py:func:`geometry` .. versionadded:: 3.0. %End QgsGeometry geometry() const; %Docstring Returns the geometry associated with this feature. If the feature has no geometry, an empty QgsGeometry object will be returned. .. seealso:: :py:func:`hasGeometry` .. seealso:: :py:func:`setGeometry` %End void setGeometry( const QgsGeometry &geometry ); %Docstring Set the feature's geometry. The feature will be valid after. :param geometry: new feature geometry .. seealso:: :py:func:`geometry` .. seealso:: :py:func:`clearGeometry` %End void setGeometry( QgsAbstractGeometry *geometry /Transfer/ ); %Docstring Set the feature's ``geometry``. Ownership of the geometry is transferred to the feature. The feature will be made valid after calling this method. This method is a shortcut for calling: .. code-block:: python feature.setGeometry( QgsGeometry( geometry ) ) * Example: .. code-block:: python # Sets a feature's geometry to a point geometry feature.setGeometry( QgsPoint( 210, 41 ) ) print(feature.geometry()) # output: # Sets a feature's geometry to a line string feature.setGeometry( QgsLineString( [ QgsPoint( 210, 41 ), QgsPoint( 301, 55 ) ] ) ) print(feature.geometry()) # output: .. seealso:: :py:func:`geometry` .. seealso:: :py:func:`clearGeometry` .. versionadded:: 3.6 %End %MethodCode sipCpp->setGeometry( std::unique_ptr< QgsAbstractGeometry>( a0 ) ); %End void clearGeometry(); %Docstring Removes any geometry associated with the feature. .. seealso:: :py:func:`setGeometry` .. seealso:: :py:func:`hasGeometry` .. versionadded:: 3.0 %End void setFields( const QgsFields &fields, bool initAttributes = true ); %Docstring Assign a field map with the feature to allow attribute access by attribute name. :param fields: The attribute fields which this feature holds :param initAttributes: If ``True``, attributes are initialized. Clears any data previously assigned. C++: Defaults to ``False`` Python: Defaults to ``True`` .. seealso:: :py:func:`fields` .. versionadded:: 2.9 %End QgsFields fields() const; %Docstring Returns the field map associated with the feature. .. seealso:: :py:func:`setFields` %End void setAttribute( const QString &name, const QVariant &value /GetWrapper/ ); %Docstring Insert a value into attribute. Returns ``False`` if attribute name could not be converted to index. Field map must be associated using setFields() before this method can be used. The feature will be valid if it was successful :param name: The name of the field to set :param value: The value to set :return: ``False`` if attribute name could not be converted to index (C++ only) .. note:: For Python: raises a KeyError exception instead of returning ``False`` .. note:: Alternatively in Python: @code feature[name] = attr @endcode .. seealso:: :py:func:`setFields` %End %MethodCode int fieldIdx = sipCpp->fieldNameIndex( *a0 ); if ( fieldIdx == -1 ) { PyErr_SetString( PyExc_KeyError, a0->toAscii() ); sipIsErr = 1; } else { if ( a1Wrapper == Py_None ) { sipCpp->setAttribute( *a0, QVariant( QVariant::Int ) ); } else { sipCpp->setAttribute( fieldIdx, *a1 ); } } %End bool deleteAttribute( const QString &name ); %Docstring Removes an attribute value by field name. Field map must be associated using setFields() before this method can be used. :param name: The name of the field to delete :return: ``False`` if attribute name could not be converted to index (C++ only) .. note:: For Python: raises a KeyError exception instead of returning ``False`` .. note:: Alternatively in Python: @code del feature[name] @endcode .. seealso:: :py:func:`setFields` %End %MethodCode int fieldIdx = sipCpp->fieldNameIndex( *a0 ); if ( fieldIdx == -1 ) { PyErr_SetString( PyExc_KeyError, a0->toAscii() ); sipIsErr = 1; sipRes = false; } else { sipCpp->deleteAttribute( fieldIdx ); sipRes = true; } %End SIP_PYOBJECT attribute( const QString &name ) const; %Docstring Lookup attribute value from attribute name. Field map must be associated using setFields() before this method can be used. :param name: The name of the attribute to get :return: The value of the attribute (C++: Invalid variant if no such name exists ) .. note:: For Python: raises a KeyError exception if the field is not found .. note:: Alternatively in Python: @code feature[name] @endcode .. seealso:: :py:func:`setFields` %End %MethodCode int fieldIdx = sipCpp->fieldNameIndex( *a0 ); if ( fieldIdx == -1 ) { PyErr_SetString( PyExc_KeyError, a0->toAscii() ); sipIsErr = 1; } else { QVariant *v = new QVariant( sipCpp->attribute( fieldIdx ) ); sipRes = sipConvertFromNewType( v, sipType_QVariant, Py_None ); } %End SIP_PYOBJECT attribute( int fieldIdx ) const; %Docstring Lookup attribute value from its index. Field map must be associated using setFields() before this method can be used. :param fieldIdx: The index of the attribute to get :return: The value of the attribute (C++: Invalid variant if no such index exists ) .. note:: For Python: raises a KeyError exception if the field is not found .. note:: Alternatively in Python: @code feature[fieldIdx] @endcode .. seealso:: :py:func:`setFields` %End %MethodCode { if ( a0 < 0 || a0 >= sipCpp->attributes().count() ) { PyErr_SetString( PyExc_KeyError, QByteArray::number( a0 ) ); sipIsErr = 1; } else { QVariant *v = new QVariant( sipCpp->attribute( a0 ) ); sipRes = sipConvertFromNewType( v, sipType_QVariant, Py_None ); } } %End int fieldNameIndex( const QString &fieldName ) const; %Docstring Utility method to get attribute index from name. Field map must be associated using setFields() before this method can be used. :param fieldName: name of field to get attribute index of :return: -1 if field does not exist or field map is not associated. .. seealso:: :py:func:`setFields` %End operator QVariant() const; }; // class QgsFeature typedef QMap > QgsChangedAttributesMap; typedef QMap QgsGeometryMap; typedef QList QgsFeatureList; /************************************************************************ * This file has been generated automatically from * * * * src/core/qgsfeature.h * * * * Do not edit manually ! Edit header and run scripts/sipify.pl again * ************************************************************************/