mirror of
				https://github.com/qgis/QGIS.git
				synced 2025-11-03 00:14:12 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			328 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			328 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
/************************************************************************
 | 
						|
 * This file has been generated automatically from                      *
 | 
						|
 *                                                                      *
 | 
						|
 * src/core/qgsfeatureiterator.h                                        *
 | 
						|
 *                                                                      *
 | 
						|
 * Do not edit manually ! Edit header and run scripts/sipify.py again   *
 | 
						|
 ************************************************************************/
 | 
						|
 | 
						|
 | 
						|
 | 
						|
class QgsAbstractFeatureIterator
 | 
						|
{
 | 
						|
%Docstring(signature="appended")
 | 
						|
Internal feature iterator to be implemented within data providers.
 | 
						|
%End
 | 
						|
 | 
						|
%TypeHeaderCode
 | 
						|
#include "qgsfeatureiterator.h"
 | 
						|
%End
 | 
						|
  public:
 | 
						|
 | 
						|
    enum CompileStatus
 | 
						|
    {
 | 
						|
      NoCompilation,
 | 
						|
      PartiallyCompiled,
 | 
						|
      Compiled,
 | 
						|
    };
 | 
						|
 | 
						|
    QgsAbstractFeatureIterator( const QgsFeatureRequest &request );
 | 
						|
%Docstring
 | 
						|
base class constructor - stores the iteration parameters
 | 
						|
%End
 | 
						|
 | 
						|
    virtual ~QgsAbstractFeatureIterator();
 | 
						|
 | 
						|
    virtual bool nextFeature( QgsFeature &f );
 | 
						|
%Docstring
 | 
						|
Fetch next feature and stores in ``f``, returns ``True`` on success.
 | 
						|
%End
 | 
						|
 | 
						|
    virtual bool rewind() = 0;
 | 
						|
%Docstring
 | 
						|
Resets the iterator to the starting position.
 | 
						|
%End
 | 
						|
 | 
						|
    virtual bool close() = 0;
 | 
						|
%Docstring
 | 
						|
Call to end the iteration. This frees any resources used by the
 | 
						|
iterator.
 | 
						|
%End
 | 
						|
 | 
						|
 | 
						|
    CompileStatus compileStatus() const;
 | 
						|
%Docstring
 | 
						|
Returns the status of expression compilation for filter expression
 | 
						|
requests.
 | 
						|
%End
 | 
						|
 | 
						|
    virtual bool isValid() const;
 | 
						|
%Docstring
 | 
						|
Returns if this iterator is valid. An invalid feature iterator is not
 | 
						|
able to provide a reliable source for data. If an iterator is invalid,
 | 
						|
either give up or try to send the request again (preferably after a
 | 
						|
timeout to give the system some time to stay responsive).
 | 
						|
 | 
						|
If you want to check if the iterator successfully completed, better use
 | 
						|
:py:func:`QgsFeatureIterator.isClosed()`.
 | 
						|
%End
 | 
						|
 | 
						|
    bool compileFailed() const;
 | 
						|
%Docstring
 | 
						|
Indicator if there was an error when sending the compiled query to the
 | 
						|
server. This indicates that there is something wrong with the expression
 | 
						|
compiler.
 | 
						|
 | 
						|
.. versionadded:: 3.2
 | 
						|
%End
 | 
						|
 | 
						|
    enum class RequestToSourceCrsResult
 | 
						|
    {
 | 
						|
      Success,
 | 
						|
      DistanceWithinMustBeCheckedManually,
 | 
						|
    };
 | 
						|
 | 
						|
  protected:
 | 
						|
 | 
						|
    virtual bool fetchFeature( QgsFeature &f ) = 0;
 | 
						|
%Docstring
 | 
						|
If you write a feature iterator for your provider, this is the method
 | 
						|
you need to implement!!
 | 
						|
 | 
						|
:param f: The feature to write to
 | 
						|
 | 
						|
:return: ``True`` if a feature was written to f
 | 
						|
%End
 | 
						|
 | 
						|
    virtual bool nextFeatureFilterExpression( QgsFeature &f );
 | 
						|
%Docstring
 | 
						|
By default, the iterator will fetch all features and check if the
 | 
						|
feature matches the expression. If you have a more sophisticated
 | 
						|
metodology (SQL request for the features...) and you check for the
 | 
						|
expression in your fetchFeature method, you can just redirect this call
 | 
						|
to fetchFeature so the default check will be omitted.
 | 
						|
 | 
						|
:param f: The feature to write to
 | 
						|
 | 
						|
:return: ``True`` if a feature was written to f
 | 
						|
%End
 | 
						|
 | 
						|
    virtual bool nextFeatureFilterFids( QgsFeature &f );
 | 
						|
%Docstring
 | 
						|
By default, the iterator will fetch all features and check if the id is
 | 
						|
in the request. If you have a more sophisticated metodology (SQL request
 | 
						|
for the features...) and you are sure, that any feature you return from
 | 
						|
fetchFeature will match if the request was FilterFids you can just
 | 
						|
redirect this call to fetchFeature so the default check will be omitted.
 | 
						|
 | 
						|
:param f: The feature to write to
 | 
						|
 | 
						|
:return: ``True`` if a feature was written to f
 | 
						|
%End
 | 
						|
 | 
						|
    void geometryToDestinationCrs( QgsFeature &feature, const QgsCoordinateTransform &transform ) const;
 | 
						|
%Docstring
 | 
						|
Transforms ``feature``'s geometry according to the specified coordinate
 | 
						|
``transform``. If ``feature`` has no geometry or ``transform`` is
 | 
						|
invalid then calling this method has no effect and will be shortcut.
 | 
						|
Iterators should call this method before returning features to ensure
 | 
						|
that any :py:func:`QgsFeatureRequest.destinationCrs()` set on the
 | 
						|
request is respected.
 | 
						|
%End
 | 
						|
 | 
						|
 | 
						|
    QgsRectangle filterRectToSourceCrs( const QgsCoordinateTransform &transform ) const throw( QgsCsException );
 | 
						|
%Docstring
 | 
						|
Returns a rectangle representing the original request's
 | 
						|
:py:func:`QgsFeatureRequest.filterRect()`. If ``transform`` is a valid
 | 
						|
coordinate transform, the return rectangle will represent the requested
 | 
						|
:py:func:`~QgsAbstractFeatureIterator.filterRect` transformed to the
 | 
						|
source's coordinate reference system. Iterators should call this method
 | 
						|
and use the returned rectangle for filtering features to ensure that any
 | 
						|
:py:func:`QgsFeatureRequest.destinationCrs()` set on the request is
 | 
						|
respected. Will throw a :py:class:`QgsCsException` if the rect cannot be
 | 
						|
transformed from the destination CRS.
 | 
						|
%End
 | 
						|
 | 
						|
    RequestToSourceCrsResult updateRequestToSourceCrs( QgsFeatureRequest &request, const QgsCoordinateTransform &transform ) const throw( QgsCsException );
 | 
						|
%Docstring
 | 
						|
Update a :py:class:`QgsFeatureRequest` so that spatial filters are
 | 
						|
transformed to the source's coordinate reference system. Iterators
 | 
						|
should call this method against the request used for filtering features
 | 
						|
to ensure that any :py:func:`QgsFeatureRequest.destinationCrs()` set on
 | 
						|
the request is respected.
 | 
						|
 | 
						|
:return: result of operation. See
 | 
						|
         QgsAbstractFeatureIterator.RequestToSourceCrsResult for
 | 
						|
         interpretation.
 | 
						|
 | 
						|
:raises QgsCsException: if the rect cannot be transformed from the
 | 
						|
                        destination CRS.
 | 
						|
 | 
						|
.. versionadded:: 3.22
 | 
						|
%End
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    void ref();
 | 
						|
%Docstring
 | 
						|
Add reference
 | 
						|
%End
 | 
						|
    void deref();
 | 
						|
%Docstring
 | 
						|
Remove reference, delete if refs == 0
 | 
						|
%End
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    virtual bool prepareSimplification( const QgsSimplifyMethod &simplifyMethod );
 | 
						|
%Docstring
 | 
						|
Setup the simplification of geometries to fetch using the specified
 | 
						|
simplify method
 | 
						|
%End
 | 
						|
 | 
						|
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
template<T>
 | 
						|
class QgsAbstractFeatureIteratorFromSource : QgsAbstractFeatureIterator
 | 
						|
{
 | 
						|
%Docstring(signature="appended")
 | 
						|
Helper template that cares of two things: 1. automatic deletion of
 | 
						|
source if owned by iterator, 2. notification of open/closed iterator.
 | 
						|
 | 
						|
.. note::
 | 
						|
 | 
						|
   not available in Python bindings (although present in SIP file)
 | 
						|
%End
 | 
						|
 | 
						|
%TypeHeaderCode
 | 
						|
#include "qgsfeatureiterator.h"
 | 
						|
%End
 | 
						|
  public:
 | 
						|
    QgsAbstractFeatureIteratorFromSource( T *source, bool ownSource, const QgsFeatureRequest &request );
 | 
						|
 | 
						|
    ~QgsAbstractFeatureIteratorFromSource();
 | 
						|
 | 
						|
  protected:
 | 
						|
    void iteratorClosed();
 | 
						|
%Docstring
 | 
						|
to be called by from subclass in
 | 
						|
:py:func:`~QgsAbstractFeatureIteratorFromSource.close`
 | 
						|
%End
 | 
						|
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
class QgsFeatureIterator
 | 
						|
{
 | 
						|
%Docstring(signature="appended")
 | 
						|
Wrapper for iterator of features from vector data provider or vector
 | 
						|
layer.
 | 
						|
%End
 | 
						|
 | 
						|
%TypeHeaderCode
 | 
						|
#include "qgsfeatureiterator.h"
 | 
						|
%End
 | 
						|
  public:
 | 
						|
 | 
						|
    QgsFeatureIterator *__iter__();
 | 
						|
%MethodCode
 | 
						|
    sipRes = sipCpp;
 | 
						|
%End
 | 
						|
 | 
						|
    SIP_PYOBJECT __next__() /TypeHint="QgsFeature"/;
 | 
						|
%MethodCode
 | 
						|
    auto f = std::make_unique< QgsFeature >();
 | 
						|
    bool result = false;
 | 
						|
    Py_BEGIN_ALLOW_THREADS
 | 
						|
    result = ( sipCpp->nextFeature( *f ) );
 | 
						|
    Py_END_ALLOW_THREADS
 | 
						|
    if ( result )
 | 
						|
      sipRes = sipConvertFromType( f.release(), sipType_QgsFeature, Py_None );
 | 
						|
    else
 | 
						|
    {
 | 
						|
      PyErr_SetString( PyExc_StopIteration, "" );
 | 
						|
    }
 | 
						|
%End
 | 
						|
 | 
						|
    QgsFeatureIterator();
 | 
						|
%Docstring
 | 
						|
Construct invalid iterator
 | 
						|
%End
 | 
						|
    QgsFeatureIterator( QgsAbstractFeatureIterator *iter /Transfer/ );
 | 
						|
%Docstring
 | 
						|
Construct a valid iterator
 | 
						|
%End
 | 
						|
    QgsFeatureIterator( const QgsFeatureIterator &fi );
 | 
						|
%Docstring
 | 
						|
Copy constructor copies the iterator, increases ref.count
 | 
						|
%End
 | 
						|
    ~QgsFeatureIterator();
 | 
						|
 | 
						|
 | 
						|
    bool nextFeature( QgsFeature &f );
 | 
						|
%Docstring
 | 
						|
Fetch next feature and stores in ``f``, returns ``True`` on success.
 | 
						|
%End
 | 
						|
 | 
						|
    bool rewind();
 | 
						|
%Docstring
 | 
						|
Resets the iterator to the starting position.
 | 
						|
%End
 | 
						|
 | 
						|
    bool close();
 | 
						|
%Docstring
 | 
						|
Call to end the iteration. This frees any resources used by the
 | 
						|
iterator.
 | 
						|
%End
 | 
						|
 | 
						|
    bool isValid() const;
 | 
						|
%Docstring
 | 
						|
Will return if this iterator is valid. An invalid iterator was probably
 | 
						|
introduced by a failed attempt to acquire a connection or is a default
 | 
						|
constructed iterator.
 | 
						|
 | 
						|
.. seealso:: :py:func:`isClosed` to check if the iterator successfully completed and returned all the features.
 | 
						|
%End
 | 
						|
 | 
						|
    bool isClosed() const;
 | 
						|
%Docstring
 | 
						|
find out whether the iterator is still valid or closed already
 | 
						|
%End
 | 
						|
 | 
						|
 | 
						|
    QgsAbstractFeatureIterator::CompileStatus compileStatus() const;
 | 
						|
%Docstring
 | 
						|
Returns the status of expression compilation for filter expression
 | 
						|
requests.
 | 
						|
%End
 | 
						|
 | 
						|
    bool compileFailed() const;
 | 
						|
%Docstring
 | 
						|
Indicator if there was an error when sending the compiled query to the
 | 
						|
server. This indicates that there is something wrong with the expression
 | 
						|
compiler.
 | 
						|
 | 
						|
.. versionadded:: 3.2
 | 
						|
%End
 | 
						|
 | 
						|
 | 
						|
  protected:
 | 
						|
 | 
						|
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
/************************************************************************
 | 
						|
 * This file has been generated automatically from                      *
 | 
						|
 *                                                                      *
 | 
						|
 * src/core/qgsfeatureiterator.h                                        *
 | 
						|
 *                                                                      *
 | 
						|
 * Do not edit manually ! Edit header and run scripts/sipify.py again   *
 | 
						|
 ************************************************************************/
 |