osgdem is utility program for reading geospatial imagery and digital elevation maps (DEM's) and generating large scale 3D terrain databases that OpenSceneGraph applications can load and browse in real-time. What follows is a step-by-step guide to using osgdem, followed by a list of full options available.

Quick step by step guide

What follows are the steps required to get osgTerrain/osgdem compiling and an example of how to use it to process imagery and DEM's to generate a paged databases.

Now its time to run the osgdem example to generate your PagedLOD database, the more levels you generate the longer it will take (exponentially so). 'osgdem' is just a front end to osgTerrain::DataSet?] where all the hard work happens. Here's what to run :\\

osgdem --xx 10 --yy 10 -t ps_texture_16k.tif \
--xx 10 --yy 10 -d ps_height_16k.tif \
-l 8 -v 0.1 -o puget.ive -a pegout.osga
}}} [[BR]] Then go away for lunch, afternoon and tea, as generating this much data takes a while... If you don't wish to wait for the full database then reduce the number of levels it generates by setting the -l option to a lower value such as 3. [[BR]] [[BR]]
The command line options used above are: [[BR]]
The first part the --xx and --yy is specifying the size of the pixels in meters, since these png/tif don't have any geospatial data of their own, if you have geospatialised files then you won't need this. [[BR]] [[BR]]
The second part -t <filename> is the option for specificing the texture maps to use, you can use as many times as you wish, [wiki:Support/ReferenceGuides/OsgTerrain osgTerrain::DataSet]] will moziac them into a single database. [[BR]] [[BR]]
The third part -d is the option for specifying the digital elevation maps to use, as with the textures you can use as many as you like. [[BR]] [[BR]]
The -l option specificies the maximum number of levels to generate. If you use a large number then the database generation will stop once the max resolution of your source data is matched by the resulting database. The database generation will decend further where there is high res source data, decend less where there is lower res data. [[BR]] [[BR]]
The -v option specifies the scaling factor which the height is multiplied by. [[BR]] [[BR]]]
The -o <filename> is the output format to generate the databases in. This will be the name of the topmost file in the one you should load. It can be a .ive or a .osg. The .ive is faster and has embedded files. [[BR]] [[BR]]
And finally the -a <filename> tells the osgdem to write all tiles to a single archive, in this a the !OpenSceneGraph native archive format, which uses the extension .osga to disguinish itself. The use of archives is not required, but is recommend since it makes managment of the whole database much more convinient - you have a single file to manage rather than what could be 10's of thousands as is the case of large databases. [[BR]] [[BR]]
# Time to play. Simply load the database in your app (make sure it supports the osgDB::DatabasePager - see osgsimplepager example for details). The standard osgviewer works just fine so, here goes: \\
->osgviewer pegout.osga \\
\\
# If your imagery and DEMs have geospatial coords associated with them then the -xx, --yy and -v options will not be required, making it much simplier to specify - you just need to specifiy options such as -t imge.tif and -d terran.dt0 without any need to set the coordinate system.\\
\\
# osgdem can automatically handle mosaicing of sets of files. These can be specified via a sequence of -t <filename> and -d <filename> pairs on the commandline, or via -t <directoryname> and -d <directoryname>.
----
!!!osgdem options
There are of osgdem options to use, to list the full ranges of options do:
osgdem --help
And you should see:
osgdem --help
Usage: osgdem [options] filename ...
Options:
--HEIGHT_FIELD Create a height field database
--LOD Create a LOD'd database
--POLYGONAL Create a height field database
--PagedLOD Create a PagedLOD'd database
--RGB-16 Use 16bit RGB destination imagery
--RGB-24 Use 24bit RGB destination imagery
--comment Added a comment/description string to
the top most node in the dataset
--compressed Use OpenGL compression on destination
imagery
--cs <coordinates system string> Set the coordinates system of source
imagery, DEM or destination database.
The string may be any of the usual
GDAL/OGR forms, complete WKT, PROJ.4,
EPS
--max-anisotropy Max anisotropy level to use when
texturing, defaults to 1.0.
--max-visible-distance-of-top-level Set the maximum visible distance that
the top most tile can be viewed at
--mip-mapping-hardware Use mip mapped textures, and generate
the mipmaps in hardware when
available.
--mip-mapping-imagery Use mip mapped textures, and generate
the mipmaps in imagery.
--no-mip-mapping Disable mip mapping of textures
--radius-to-max-visible-distance-ratio Set the maximum visible distance ratio
for all tiles apart from the top most
tile. The maximum visuble distance is
computed from the ratio * tile radius.
--skirt-ratio <float> Set the ratio of skirt height to tile
size
--tile-image-size Set the tile maximum image size
--tile-terrain-size Set the tile maximum terrain size
--wkt <WKT string> Set the coordinates system of source
imagery, DEM or destination database
in WellKownText form.
--wkt-file <WKT file> Set the coordinates system of source
imagery, DEM or destination database
by as file containing WellKownText
definition.
-d <filename> Specify the digital elevation map
input file to process
-e <x> <y> <w> <h> Extents of the model to generate
-h or --help Display this information
-l <numOfLevels> Specify the number of PagedLOD levels
to generate
-m <filename> Specify the 3D database model input
file to process
-o <outputfile> Specify the output master file to
generate
-t <filename> Specify the texture map input file to
process
-v Set the vertical multiplier
----
!!Coordinate System Tips
WKT coordinate system definition format is a very comprehensive, but difficult to use as a "human enter-able" specifier for coordinate systems. osgdem uses GDAL under the hood which also allows definition of the @@--cs@@ flag in PROJ4 format. PROJ4's definition format is much more human friendly.\\
\\
'''Examples:'''\\
* For a Latitude (Y Axis), Longitude (X Axis) and Altitude coordinate system in units of degrees use: @@osgdem ... --cs "+proj=latlong +datum=WGS84" -o ...@@
* For a UTM coordinate system referenced to zone 47 (in this example) in units of meters use: @@osgdem ... --cs "+proj=utm +zone=47" -o ...@@
* For a Geocentric system, with the origin being the center of the earth and units in meters use: @@osgdem ... --geocentric -o ...@@