mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-16 00:03:12 -04:00
[ogr] return multipart geometry for multipart datasets in feature iterator
This commit is contained in:
parent
1aa0091e7a
commit
5b149fb389
@ -25,6 +25,7 @@
|
|||||||
#include "qgsmessagelog.h"
|
#include "qgsmessagelog.h"
|
||||||
#include "qgssettings.h"
|
#include "qgssettings.h"
|
||||||
#include "qgsexception.h"
|
#include "qgsexception.h"
|
||||||
|
#include "qgswkbtypes.h"
|
||||||
|
|
||||||
#include <QTextCodec>
|
#include <QTextCodec>
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
@ -334,7 +335,15 @@ bool QgsOgrFeatureIterator::readFeature( OGRFeatureH fet, QgsFeature &feature )
|
|||||||
|
|
||||||
if ( geom )
|
if ( geom )
|
||||||
{
|
{
|
||||||
feature.setGeometry( QgsOgrUtils::ogrGeometryToQgsGeometry( geom ) );
|
QgsGeometry g = QgsOgrUtils::ogrGeometryToQgsGeometry( geom );
|
||||||
|
|
||||||
|
// Insure that multipart datasets return multipart geometry
|
||||||
|
if ( QgsWkbTypes::isMultiType( mSource->mWkbType ) && !g.isMultipart() )
|
||||||
|
{
|
||||||
|
g.convertToMultiType();
|
||||||
|
}
|
||||||
|
|
||||||
|
feature.setGeometry( g );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
feature.clearGeometry();
|
feature.clearGeometry();
|
||||||
@ -390,6 +399,7 @@ QgsOgrFeatureSource::QgsOgrFeatureSource( const QgsOgrProvider *p )
|
|||||||
, mOgrGeometryTypeFilter( QgsOgrProvider::ogrWkbSingleFlatten( p->mOgrGeometryTypeFilter ) )
|
, mOgrGeometryTypeFilter( QgsOgrProvider::ogrWkbSingleFlatten( p->mOgrGeometryTypeFilter ) )
|
||||||
, mDriverName( p->ogrDriverName )
|
, mDriverName( p->ogrDriverName )
|
||||||
, mCrs( p->crs() )
|
, mCrs( p->crs() )
|
||||||
|
, mWkbType( p->wkbType() )
|
||||||
{
|
{
|
||||||
for ( int i = ( p->mFirstFieldIsFid ) ? 1 : 0; i < mFields.size(); i++ )
|
for ( int i = ( p->mFirstFieldIsFid ) ? 1 : 0; i < mFields.size(); i++ )
|
||||||
mFieldsWithoutFid.append( mFields.at( i ) );
|
mFieldsWithoutFid.append( mFields.at( i ) );
|
||||||
|
@ -44,6 +44,7 @@ class QgsOgrFeatureSource : public QgsAbstractFeatureSource
|
|||||||
OGRwkbGeometryType mOgrGeometryTypeFilter;
|
OGRwkbGeometryType mOgrGeometryTypeFilter;
|
||||||
QString mDriverName;
|
QString mDriverName;
|
||||||
QgsCoordinateReferenceSystem mCrs;
|
QgsCoordinateReferenceSystem mCrs;
|
||||||
|
QgsWkbTypes::Type mWkbType = QgsWkbTypes::Unknown;
|
||||||
|
|
||||||
friend class QgsOgrFeatureIterator;
|
friend class QgsOgrFeatureIterator;
|
||||||
friend class QgsOgrExpressionCompiler;
|
friend class QgsOgrExpressionCompiler;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user