From 73cc97f0e14454c7e762dce4629ebc76eda0217c Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Wed, 7 Dec 2005 15:26:45 +0000 Subject: [PATCH] From Antonoine Hue, a small modification to the osgTerrain::DataSet to be able to pass an already opened GDAL Dataset to the osgTerrain::DataSet::Source --- include/osgTerrain/DataSet | 14 ++++++++++---- src/osgTerrain/DataSet.cpp | 4 +++- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/include/osgTerrain/DataSet b/include/osgTerrain/DataSet index dad318589..60d3810c3 100644 --- a/include/osgTerrain/DataSet +++ b/include/osgTerrain/DataSet @@ -193,7 +193,8 @@ class OSGTERRAIN_EXPORT DataSet : public osg::Referenced _geoTransformPolicy(PREFER_FILE_SETTINGS), _minLevel(0), _maxLevel(MAXIMUM_NUMBER_OF_LEVELS), - _layer(0) + _layer(0), + _gdalDataSet(0) {} Source(Type type, const std::string& filename): @@ -205,7 +206,8 @@ class OSGTERRAIN_EXPORT DataSet : public osg::Referenced _geoTransformPolicy(PREFER_FILE_SETTINGS), _minLevel(0), _maxLevel(MAXIMUM_NUMBER_OF_LEVELS), - _layer(0) + _layer(0), + _gdalDataSet(0) {} void setSortValue(double s) { _sortValue = s; } @@ -222,6 +224,9 @@ class OSGTERRAIN_EXPORT DataSet : public osg::Referenced void setTemporaryFile(bool temporaryFile) { _temporaryFile = temporaryFile; } bool getTemporaryFile() const { return _temporaryFile; } + void setGdalDataSet(GDALDataset* gdalDataSet) { _gdalDataSet = gdalDataSet; } + GDALDataset* getGdalDataSet() const { return _gdalDataSet; } + void setCoordinateSystemPolicy(ParameterPolicy policy) { _coordinateSystemPolicy = policy; } ParameterPolicy getCoordinateSystemPolicy() const { return _coordinateSystemPolicy; } @@ -333,8 +338,9 @@ class OSGTERRAIN_EXPORT DataSet : public osg::Referenced osg::ref_ptr _sourceData; ResolutionList _requiredResolutions; - - }; + + GDALDataset* _gdalDataSet; + }; enum CompositeType { diff --git a/src/osgTerrain/DataSet.cpp b/src/osgTerrain/DataSet.cpp index d558cfe46..9d6fbddc4 100644 --- a/src/osgTerrain/DataSet.cpp +++ b/src/osgTerrain/DataSet.cpp @@ -227,7 +227,9 @@ DataSet::SourceData* DataSet::SourceData::readData(Source* source) case(Source::IMAGE): case(Source::HEIGHT_FIELD): { - GDALDataset* gdalDataSet = (GDALDataset*)GDALOpen(source->getFileName().c_str(),GA_ReadOnly); + GDALDataset* gdalDataSet = source->getGdalDataSet(); + if(!gdalDataSet) + gdalDataSet = (GDALDataset*)GDALOpen(source->getFileName().c_str(),GA_ReadOnly); if (gdalDataSet) { SourceData* data = new SourceData(source);