Abstract class used for elevation and texture preprocessing. More...
#include <TerrainViz/nodes/SoTVizPreprocessor.h>
Classes | |
class | TVIZInputFile |
Public Types | |
enum | TVIZUnits { TVIZ_METERS = 0, TVIZ_DEGREES, TVIZ_RADIANS } |
Public Member Functions | |
void | setDestDirectory (const SbString &destDir) |
const SbString & | getDestDirectory () const |
void | setRegion (const SbBox2d ®ion, TVIZUnits units) |
SoTVizPreprocessor::TVIZUnits | getRegion (SbBox2d ®ion) const |
virtual SbBool | process ()=0 |
virtual SbBool | writeToXML (const SbString &fileName)=0 |
Static Public Member Functions | |
static void | setOutputUnits (SoTVizPreprocessor::TVIZUnits units, float heightRatio) |
static SoTVizPreprocessor::TVIZUnits | getOutputUnits () |
static void | setEarthRadius (const SbVec2d earthRadius) |
static SbVec2d | getEarthRadius () |
This class is the abstract class for preprocessing multiple files. It is the base class for preprocessing multiple texture files and multiple elevation files.
The supported GIS file formats store elevation or localization data using the Geodetic Coordinate System (GCS). The preprocessing classes must convert from the Geodetic Coordinate System to the Open Inventor world coordinate system, which is a Cartesian coordinate system.
The Geodetic Coordinate System approximates the earth dimensions with an ellipsoid and a patch called Datum which gives the orientation and the position of this ellipsoid relative to the real center of the earth.
Ellipsoid models supported:
Datums supported:
Each portion of the surface of the earth stored within GIS files is a planar map. So obviously the curvilinear earth surface is projected onto a plane. As you can imagine, such a projection involves some distortion in the planar representation.
Projected Coordinate Systems (PCS) supported:
See SoTVizDataPreprocessor and SoTVizTexturePreprocessor for more details.
SoTVizDataPreprocessor, SoTVizTexturePreprocessor
const SbString& SoTVizPreprocessor::getDestDirectory | ( | ) | const |
Returns the output file destination directory.
static SbVec2d SoTVizPreprocessor::getEarthRadius | ( | ) | [static] |
Returns the earth radius (polar and equatorial) in meters.
static SoTVizPreprocessor::TVIZUnits SoTVizPreprocessor::getOutputUnits | ( | ) | [static] |
Returns the units used for output.
SoTVizPreprocessor::TVIZUnits SoTVizPreprocessor::getRegion | ( | SbBox2d & | region | ) | const |
Returns the region of interest and its units.
virtual SbBool SoTVizPreprocessor::process | ( | ) | [pure virtual] |
Processes the file list and generates output files.
Implemented in SoTVizDataPreprocessor, and SoTVizTexturePreprocessor.
void SoTVizPreprocessor::setDestDirectory | ( | const SbString & | destDir | ) |
Specifies the output file destination directory.
Note, this method must be called before the process method in order to generate output files in this directory.
static void SoTVizPreprocessor::setEarthRadius | ( | const SbVec2d | earthRadius | ) | [static] |
Sets the earth radius in meters.
Used for degrees/radians to/from meters conversion. This value is used to convert from the units specifed in the input files to the units in the output DAT file. The default radius (polar and equatorial) is (6500000, 6500000) in meters.
static void SoTVizPreprocessor::setOutputUnits | ( | SoTVizPreprocessor::TVIZUnits | units, | |
float | heightRatio | |||
) | [static] |
Sets the output units and a height ratio necessary when the output units are different from TVIZ_METERS since heights cannot be expressed as angles.
heightRatio equals 1.0 by default.
Sets the region of interest that you want to output and units for processing.
To be called before the process method.
Writes resulting elevation and textures description in a TerrainViz XML file.
Note this is a file name, not a path. The path used is the one given by setDestDirectory. Both preprocessors (textures and data) must reference the same file.
Implemented in SoTVizDataPreprocessor, and SoTVizTexturePreprocessor.