mirror of
				https://github.com/qgis/QGIS.git
				synced 2025-11-04 00:04:25 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			571 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			571 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
/************************************************************************
 | 
						|
 * 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->toLatin1() );
 | 
						|
      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->toLatin1() );
 | 
						|
      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->toLatin1() );
 | 
						|
      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: <QgsGeometry: Point (210 41)>
 | 
						|
 | 
						|
       # Sets a feature's geometry to a line string
 | 
						|
       feature.setGeometry( QgsLineString( [ QgsPoint( 210, 41 ), QgsPoint( 301, 55 ) ] ) )
 | 
						|
       print(feature.geometry())
 | 
						|
       # output: <QgsGeometry: LineString (210 41, 301 55)>
 | 
						|
 | 
						|
.. 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->toLatin1() );
 | 
						|
      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->toLatin1() );
 | 
						|
      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->toLatin1() );
 | 
						|
      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<qint64, QMap<int, QVariant> > QgsChangedAttributesMap;
 | 
						|
 | 
						|
 | 
						|
typedef QMap<qint64, QgsGeometry> QgsGeometryMap;
 | 
						|
 | 
						|
typedef QList<QgsFeature> QgsFeatureList;
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/************************************************************************
 | 
						|
 * This file has been generated automatically from                      *
 | 
						|
 *                                                                      *
 | 
						|
 * src/core/qgsfeature.h                                                *
 | 
						|
 *                                                                      *
 | 
						|
 * Do not edit manually ! Edit header and run scripts/sipify.pl again   *
 | 
						|
 ************************************************************************/
 |