mirror of
				https://github.com/qgis/QGIS.git
				synced 2025-10-31 00:06:02 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			310 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			310 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
 | |
|     std::unique_ptr< QgsFeature > 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   *
 | |
|  ************************************************************************/
 |