I'm trying to add an elevation layer to my program that's based on osgEarth. I've seen an example, osgearth_city
, available in osgEarth source tree, which loads a TMSElevationLayer
like this:
TMSElevationLayer* layer = new TMSElevationLayer();
layer->setURL("http://readymap.org/readymap/tiles/1.0.0/116/");
map->addLayer(layer);
But what I need is to use a set of local *.hgt
tiles in the directory layout like /path/to/hgt/N/37/N55E037.hgt
for the 55°N 37°E tile. I've found that GDALElevationLayer
can be used to load individual *.hgt
files, with
const auto gdal=new GDALElevationLayer;
gdal->setURL("/home/ruslan/hgt/N/37/N55E037.hgt");
map->addLayer(gdal);
But this way I'd have to manage the tileset myself: watch the location of the camera, load the required tiles, unload the ones no longer needed etc..
How can I instruct osgEarth to do the tile management automatically, like it does with TMSElevationLayer
, but using the local *.hgt
files?
I recommend you create a VRT file using GDAL's gdalbuildvrt command line tool, as described here.
Also, since you are using DTED data, be sure to tell osgEarth to use the correct EGM96 reference ellipsoid: