Added convinience methods.
This commit is contained in:
parent
6b2e17fe14
commit
e5ea972cff
@ -47,7 +47,7 @@ class OSGTERRAIN_EXPORT DataSet : public osg::Referenced
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
static std::string coordinateSystemStringToWTK(const std::string& coordinateSystem);
|
||||||
|
|
||||||
class Source;
|
class Source;
|
||||||
|
|
||||||
@ -232,6 +232,17 @@ class OSGTERRAIN_EXPORT DataSet : public osg::Referenced
|
|||||||
void setGeoTransform(osg::Matrixd& transform) { _geoTransform = transform; }
|
void setGeoTransform(osg::Matrixd& transform) { _geoTransform = transform; }
|
||||||
osg::Matrixd& getGeoTransform() { return _geoTransform; }
|
osg::Matrixd& getGeoTransform() { return _geoTransform; }
|
||||||
|
|
||||||
|
void setGeoTransformFromRange(double xMin, double xMax, double yMin, double yMax)
|
||||||
|
{
|
||||||
|
_geoTransform.makeIdentity();
|
||||||
|
_geoTransform(0,0) = xMax-xMin;
|
||||||
|
_geoTransform(3,0) = xMin;
|
||||||
|
|
||||||
|
_geoTransform(1,1) = yMax-yMin;
|
||||||
|
_geoTransform(3,1) = yMin;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void assignCoordinateSystemAndGeoTransformAccordingToParameterPolicy();
|
void assignCoordinateSystemAndGeoTransformAccordingToParameterPolicy();
|
||||||
|
|
||||||
|
|
||||||
@ -914,7 +925,10 @@ class OSGTERRAIN_EXPORT DataSet : public osg::Referenced
|
|||||||
void setDestinationExtents(const osg::BoundingBox& extents) { _extents = extents; }
|
void setDestinationExtents(const osg::BoundingBox& extents) { _extents = extents; }
|
||||||
|
|
||||||
void setDestinationGeoTransform(const osg::Matrixd& geoTransform) { _geoTransform = geoTransform; }
|
void setDestinationGeoTransform(const osg::Matrixd& geoTransform) { _geoTransform = geoTransform; }
|
||||||
|
|
||||||
|
/** Set the DestinationTileBaseName and DestinationTileExtension from the passed in filename.*/
|
||||||
|
void setDestinationName(const std::string& filename);
|
||||||
|
|
||||||
void setDestinationTileBaseName(const std::string& basename) { _tileBasename = basename; }
|
void setDestinationTileBaseName(const std::string& basename) { _tileBasename = basename; }
|
||||||
const std::string& getDestinationTileBaseName() const { return _tileBasename; }
|
const std::string& getDestinationTileBaseName() const { return _tileBasename; }
|
||||||
|
|
||||||
@ -990,10 +1004,10 @@ class OSGTERRAIN_EXPORT DataSet : public osg::Referenced
|
|||||||
void populateDestinationGraphFromSources();
|
void populateDestinationGraphFromSources();
|
||||||
|
|
||||||
void createDestination(unsigned int numLevels);
|
void createDestination(unsigned int numLevels);
|
||||||
void writeDestination();
|
|
||||||
|
|
||||||
|
void buildDestination() { _buildDestination(false); }
|
||||||
|
|
||||||
|
void writeDestination() { _buildDestination(true); }
|
||||||
|
|
||||||
osg::Node* getDestinationRootNode() { return _rootNode.get(); }
|
osg::Node* getDestinationRootNode() { return _rootNode.get(); }
|
||||||
|
|
||||||
@ -1005,11 +1019,13 @@ class OSGTERRAIN_EXPORT DataSet : public osg::Referenced
|
|||||||
void _readRow(Row& row);
|
void _readRow(Row& row);
|
||||||
void _equalizeRow(Row& row);
|
void _equalizeRow(Row& row);
|
||||||
void _writeRow(Row& row);
|
void _writeRow(Row& row);
|
||||||
|
void _buildDestination(bool writeToDisk);
|
||||||
osg::Node* decorateWithCoordinateSystemNode(osg::Node* subgraph);
|
|
||||||
|
|
||||||
void init();
|
void init();
|
||||||
|
|
||||||
|
osg::Node* decorateWithCoordinateSystemNode(osg::Node* subgraph);
|
||||||
|
|
||||||
|
|
||||||
osg::ref_ptr<CompositeSource> _sourceGraph;
|
osg::ref_ptr<CompositeSource> _sourceGraph;
|
||||||
|
|
||||||
osg::ref_ptr<CompositeDestination> _destinationGraph;
|
osg::ref_ptr<CompositeDestination> _destinationGraph;
|
||||||
|
@ -44,6 +44,33 @@
|
|||||||
|
|
||||||
using namespace osgTerrain;
|
using namespace osgTerrain;
|
||||||
|
|
||||||
|
std::string osgTerrain::DataSet::coordinateSystemStringToWTK(const std::string& coordinateSystem)
|
||||||
|
{
|
||||||
|
std::string wtkString;
|
||||||
|
|
||||||
|
CPLErrorReset();
|
||||||
|
|
||||||
|
OGRSpatialReferenceH hSRS = OSRNewSpatialReference( NULL );
|
||||||
|
if( OSRSetFromUserInput( hSRS, coordinateSystem.c_str() ) == OGRERR_NONE )
|
||||||
|
{
|
||||||
|
char *pszResult = NULL;
|
||||||
|
OSRExportToWkt( hSRS, &pszResult );
|
||||||
|
|
||||||
|
if (pszResult) wtkString = pszResult;
|
||||||
|
|
||||||
|
CPLFree(pszResult);
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
osg::notify(osg::WARN)<<"Warning: coordinateSystem string not recognised."<<std::endl;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
OSRDestroySpatialReference( hSRS );
|
||||||
|
|
||||||
|
return wtkString;
|
||||||
|
}
|
||||||
|
|
||||||
enum CoordinateSystemType
|
enum CoordinateSystemType
|
||||||
{
|
{
|
||||||
@ -2987,6 +3014,17 @@ void DataSet::init()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DataSet::setDestinationName(const std::string& filename)
|
||||||
|
{
|
||||||
|
std::string path = osgDB::getFilePath(filename);
|
||||||
|
std::string base = path.empty()?osgDB::getStrippedName(filename):
|
||||||
|
path +'/'+ osgDB::getStrippedName(filename);
|
||||||
|
std::string extension = '.'+osgDB::getLowerCaseFileExtension(filename);
|
||||||
|
|
||||||
|
setDestinationTileBaseName(base);
|
||||||
|
setDestinationTileExtension(extension);
|
||||||
|
}
|
||||||
|
|
||||||
void DataSet::addSource(Source* source)
|
void DataSet::addSource(Source* source)
|
||||||
{
|
{
|
||||||
if (!source) return;
|
if (!source) return;
|
||||||
@ -3612,6 +3650,10 @@ void DataSet::_writeRow(Row& row)
|
|||||||
{
|
{
|
||||||
osg::notify(osg::WARN)<<" faild to write node for tile = "<<cd->_level<<" X="<<cd->_tileX<<" Y="<<cd->_tileY<<" filename="<<filename<<std::endl;
|
osg::notify(osg::WARN)<<" faild to write node for tile = "<<cd->_level<<" X="<<cd->_tileX<<" Y="<<cd->_tileY<<" filename="<<filename<<std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// record the top nodes as the rootNode of the database
|
||||||
|
_rootNode = node;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3648,7 +3690,7 @@ osg::Node* DataSet::decorateWithCoordinateSystemNode(osg::Node* subgraph)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DataSet::writeDestination()
|
void DataSet::_buildDestination(bool writeToDisk)
|
||||||
{
|
{
|
||||||
if (_destinationGraph.valid())
|
if (_destinationGraph.valid())
|
||||||
{
|
{
|
||||||
@ -3670,7 +3712,7 @@ void DataSet::writeDestination()
|
|||||||
_rootNode->addDescription(_comment);
|
_rootNode->addDescription(_comment);
|
||||||
}
|
}
|
||||||
|
|
||||||
osgDB::writeNodeFile(*_rootNode,filename);
|
if (writeToDisk) osgDB::writeNodeFile(*_rootNode,filename);
|
||||||
}
|
}
|
||||||
else // _databaseType==PagedLOD_DATABASE
|
else // _databaseType==PagedLOD_DATABASE
|
||||||
{
|
{
|
||||||
@ -3703,7 +3745,7 @@ void DataSet::writeDestination()
|
|||||||
}
|
}
|
||||||
|
|
||||||
_equalizeRow(prev_itr->second);
|
_equalizeRow(prev_itr->second);
|
||||||
_writeRow(prev_itr->second);
|
if (writeToDisk) _writeRow(prev_itr->second);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
osg::notify(osg::NOTICE)<<"completed DataSet::writeDestination("<<filename<<")"<<std::endl;
|
osg::notify(osg::NOTICE)<<"completed DataSet::writeDestination("<<filename<<")"<<std::endl;
|
||||||
|
Loading…
Reference in New Issue
Block a user