From d3baf9d311f56745805c7638891a9dda7631805d Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Tue, 30 Jun 2015 08:38:01 +0000 Subject: [PATCH] Build fix for GLDAL>=2 git-svn-id: http://svn.openscenegraph.org/osg/OpenSceneGraph/trunk@14925 16af8721-9629-0410-8352-f15c8da7e697 --- src/osgPlugins/ogr/ReaderWriterOGR.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/osgPlugins/ogr/ReaderWriterOGR.cpp b/src/osgPlugins/ogr/ReaderWriterOGR.cpp index 55832cb02..ed50169d2 100644 --- a/src/osgPlugins/ogr/ReaderWriterOGR.cpp +++ b/src/osgPlugins/ogr/ReaderWriterOGR.cpp @@ -134,11 +134,20 @@ public: virtual ReadResult readFile(const std::string& fileName, const osgDB::ReaderWriter::Options* options) const { +#if GDAL_VERSION_MAJOR<2 if (OGRSFDriverRegistrar::GetRegistrar()->GetDriverCount() == 0) OGRRegisterAll(); // Try to open data source OGRDataSource* file = OGRSFDriverRegistrar::Open(fileName.c_str()); +#else + if (GDALGetDriverCount() == 0) + GDALAllRegister(); + + // Try to open data source + GDALDataset* file = (GDALDataset*) GDALOpenEx( fileName.c_str(), GDAL_OF_VECTOR, NULL, NULL, NULL ); +#endif + if (!file) return 0; @@ -156,6 +165,7 @@ public: osg::Group* group = new osg::Group; +#if GDAL_VERSION_MAJOR<2 for (int i = 0; i < file->GetLayerCount(); i++) { osg::Group* node = readLayer(file->GetLayer(i), file->GetName(), useRandomColorByFeature, addGroupPerFeature); @@ -163,6 +173,17 @@ public: group->addChild( node ); } OGRDataSource::DestroyDataSource( file ); +#else + for (int i = 0; i < GDALDatasetGetLayerCount(file); i++) + { + OGRLayer* layer = (OGRLayer *)GDALDatasetGetLayer(file, i); + osg::Group* node = readLayer(layer, layer->GetName(), useRandomColorByFeature, addGroupPerFeature); + if (node) + group->addChild( node ); + } + GDALClose( file ); +#endif + return group; }