QGIS/python/core/auto_generated/qgsfeature.sip.in
2021-06-10 11:03:43 +10:00

646 lines
15 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(signature="appended")
The feature class encapsulates a single feature including its unique ID,
geometry and a list of field/values attributes.
.. note::
:py:class:`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 = FID_NULL );
%Docstring
Constructor for QgsFeature
:param id: unique feature ID
%End
QgsFeature( const QgsFields &fields, qint64 id = FID_NULL );
%Docstring
Constructor for QgsFeature
:param fields: feature's fields
:param id: unique feature ID
%End
QgsFeature( const QgsFeature &rhs );
%Docstring
Copy constructor
%End
virtual ~QgsFeature();
QgsFeatureId id() const;
%Docstring
Returns the feature ID for this feature.
.. 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.
.. seealso:: :py:func:`setAttributes`
.. note::
Alternatively in Python: iterate feature, eg. @code [attr for attr in feature] @endcode
.. versionadded:: 2.9
%End
int attributeCount() const;
%Docstring
Returns the number of attributes attached to the feature.
.. versionadded:: 3.18
%End
void setAttributes( const QgsAttributes &attrs );
%Docstring
Sets the feature's attributes.
Calling this method will automatically set the feature as valid (see :py:func:`~QgsFeature.isValid`).
The number of provided attributes need to exactly match the number of the feature's fields.
:param attrs: List of attribute values
.. warning::
If the number of provided attributes does not exactly match
the number of the feature's fields then it will not be possible to add this feature to the corresponding data
provider.
.. seealso:: :py:func:`setAttribute`
.. seealso:: :py:func:`attributes`
%End
bool setAttribute( int field, const QVariant &attr /GetWrapper/ );
%Docstring
Sets an attribute's value by field index.
If the attribute was successfully set then the feature will be automatically marked as valid (see :py:func:`~QgsFeature.isValid`).
:param field: the index of the field to set
:param attr: the value of the attribute
:raises `KeyError` if the field index does not exist
.. 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.
Discards any previously set attribute data.
:param fieldCount: Number of fields to initialize
.. seealso:: :py:func:`resizeAttributes`
%End
void resizeAttributes( int fieldCount );
%Docstring
Resizes the attributes attached to this feature to the given number of fields.
If the new ``fieldCount`` is greater than the original number of fields then the additional attributes will
be filled with NULL values. All existing attributes will remain unchanged.
If the new ``fieldCount`` is less than the original number of fields then the unwanted values will be discarded from the
end of the existing attributes.
.. seealso:: :py:func:`initAttributes`
.. seealso:: :py:func:`padAttributes`
.. versionadded:: 3.18
%End
void padAttributes( int count );
%Docstring
Resizes the attributes attached to this feature by appending the specified ``count`` of NULL values to the end of the existing attributes.
.. seealso:: :py:func:`resizeAttributes`
.. versionadded:: 3.18
%End
void deleteAttribute( int field );
%Docstring
Deletes an attribute and its value.
:param field: the index of the field
:raises `KeyError` if the field is not found
.. note::
Alternatively in Python: @code del feature[field] @endcode
.. seealso:: :py:func:`setAttribute`
%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 :py:class:`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.
Calling this method will automatically set the feature as valid (see :py:func:`~QgsFeature.isValid`).
: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.
Calling this method will automatically set the feature as valid (see :py:func:`~QgsFeature.isValid`).
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
Assigns 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.
.. 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, by field ``name``.
Returns ``False`` if field ``name`` could not be matched.
Field map must be associated using :py:func:`~QgsFeature.setFields` before this method can be used.
Calling this method will automatically set the feature as valid (see :py:func:`~QgsFeature.isValid`).
:param name: The name of the field to set
:param value: The value to set
:raises `KeyError` if the attribute name could not be converted to an index
.. 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
:raises `KeyError` if attribute name could not be converted to index
.. 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 by attribute ``name``.
Field map must be associated using :py:func:`~QgsFeature.setFields` before this method can be used.
:param name: The name of the attribute to get
:return: The value of the attribute
:raises `KeyError` 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 :py:func:`~QgsFeature.setFields` before this method can be used.
:param fieldIdx: The index of the attribute to get
:return: The value of the attribute
:raises `KeyError` 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
const QgsSymbol *embeddedSymbol() const;
%Docstring
Returns the feature's embedded symbology, or ``None`` if the feature has no embedded symbol.
.. versionadded:: 3.20
%End
void setEmbeddedSymbol( QgsSymbol *symbol /Transfer/ );
%Docstring
Sets the feature's embedded ``symbol``.
Ownership of ``symbol`` is transferred to the feature.
.. versionadded:: 3.20
%End
int fieldNameIndex( const QString &fieldName ) const;
%Docstring
Utility method to get attribute index from name.
Field map must be associated using :py:func:`~QgsFeature.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
int approximateMemoryUsage() const;
%Docstring
Returns the approximate RAM usage of the feature, in bytes.
This method takes into account the size of variable elements (strings,
geometry, ...), but the value returned should be considered as a lower
bound estimation.
.. versionadded:: 3.16
%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 *
************************************************************************/