Skip to content

Commit cc96f51

Browse files
committedOct 20, 2017
[OGR/browser] More consistant use of GDAL API
1 parent feaa8b8 commit cc96f51

File tree

1 file changed

+13
-14
lines changed

1 file changed

+13
-14
lines changed
 

‎src/providers/ogr/qgsogrdataitems.cpp

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,11 @@ QgsOgrLayerItem::QgsOgrLayerItem( QgsDataItem *parent,
5353
setState( Populated ); // children are not expected
5454

5555
OGRRegisterAll();
56-
GDALDriverH hDriver;
57-
GDALDatasetH hDataSource = QgsOgrProviderUtils::GDALOpenWrapper( mPath.toUtf8().constData(), true, nullptr, &hDriver );
56+
GDALDatasetH hDataSource = GDALOpenEx( mPath.toUtf8().constData(), GDAL_OF_VECTOR, nullptr, nullptr, nullptr );
5857

5958
if ( hDataSource )
6059
{
60+
GDALDriverH hDriver = GDALGetDatasetDriver( hDataSource );
6161
QString driverName = GDALGetDriverShortName( hDriver );
6262
GDALClose( hDataSource );
6363

@@ -407,8 +407,7 @@ QVector<QgsDataItem *> QgsOgrDataCollectionItem::createChildren()
407407
{
408408
QVector<QgsDataItem *> children;
409409

410-
GDALDriverH hDriver;
411-
GDALDatasetH hDataSource = QgsOgrProviderUtils::GDALOpenWrapper( mPath.toUtf8().constData(), false, nullptr, &hDriver );
410+
GDALDatasetH hDataSource = GDALOpenEx( mPath.toUtf8().constData(), GDAL_OF_VECTOR, nullptr, nullptr, nullptr );
412411
if ( !hDataSource )
413412
return children;
414413
int numLayers = GDALDatasetGetLayerCount( hDataSource );
@@ -635,38 +634,38 @@ QGISEXTERN QgsDataItem *dataItem( QString path, QgsDataItem *parentItem )
635634

636635
// test that file is valid with OGR
637636
OGRRegisterAll();
638-
OGRSFDriverH hDriver;
639637
// do not print errors, but write to debug
640638
CPLPushErrorHandler( CPLQuietErrorHandler );
641639
CPLErrorReset();
642-
OGRDataSourceH hDataSource = QgsOgrProviderUtils::GDALOpenWrapper( path.toUtf8().constData(), false, nullptr, &hDriver );
640+
GDALDatasetH hDS = GDALOpenEx( path.toUtf8().constData(), GDAL_OF_VECTOR, nullptr, nullptr, nullptr );
643641
CPLPopErrorHandler();
644642

645-
if ( ! hDataSource )
643+
if ( ! hDS )
646644
{
647645
QgsDebugMsg( QString( "GDALOpen error # %1 : %2 on %3" ).arg( CPLGetLastErrorNo() ).arg( CPLGetLastErrorMsg() ).arg( path ) );
648646
return nullptr;
649647
}
650648

651-
QgsDebugMsgLevel( QString( "GDAL Driver : %1" ).arg( OGR_Dr_GetName( hDriver ) ), 2 );
652-
QString ogrDriverName = OGR_Dr_GetName( hDriver );
653-
int numLayers = OGR_DS_GetLayerCount( hDataSource );
649+
GDALDriverH hDriver = GDALGetDatasetDriver( hDS );
650+
QString driverName = GDALGetDriverShortName( hDriver );
651+
QgsDebugMsgLevel( QString( "GDAL Driver : %1" ).arg( driverName ), 2 );
652+
int numLayers = GDALDatasetGetLayerCount( hDS );
654653

655654
// GeoPackage needs a specialized data item, mainly because of raster deletion not
656655
// yet implemented in GDAL (2.2.1)
657-
if ( ogrDriverName == QLatin1String( "GPKG" ) )
656+
if ( driverName == QLatin1String( "GPKG" ) )
658657
{
659658
item = new QgsGeoPackageCollectionItem( parentItem, name, path );
660659
}
661-
else if ( numLayers > 1 || ogrSupportedDbDriverNames.contains( ogrDriverName ) )
660+
else if ( numLayers > 1 || ogrSupportedDbDriverNames.contains( driverName ) )
662661
{
663662
item = new QgsOgrDataCollectionItem( parentItem, name, path );
664663
}
665664
else
666665
{
667-
item = dataItemForLayer( parentItem, name, path, hDataSource, 0 );
666+
item = dataItemForLayer( parentItem, name, path, hDS, 0 );
668667
}
669-
OGR_DS_Destroy( hDataSource );
668+
GDALClose( hDS );
670669
return item;
671670
}
672671

0 commit comments

Comments
 (0)
Please sign in to comment.