0

我正在尝试向基于 osgEarth 的程序添加高程图层。我osgearth_city在 osgEarth 源代码树中看到了一个示例,它加载TMSElevationLayer如下:

TMSElevationLayer* layer = new TMSElevationLayer();
layer->setURL("http://readymap.org/readymap/tiles/1.0.0/116/");
map->addLayer(layer);

但我需要的是*.hgt在目录布局中使用一组本地图块,例如/path/to/hgt/N/37/N55E037.hgt55°N 37°E 图块。我发现它GDALElevationLayer可以用来加载单个*.hgt文件,与

const auto gdal=new GDALElevationLayer;
gdal->setURL("/home/ruslan/hgt/N/37/N55E037.hgt");
map->addLayer(gdal);

但是这样我就必须自己管理图块集:观察相机的位置,加载所需的图块,卸载不再需要的图块等。

我如何指示 osgEarth 自动进行磁贴管理,就像使用本地文件一样TMSElevationLayer,但使用本地*.hgt文件?

4

1 回答 1

1

我建议您使用 GDAL 的gdalbuildvrt命令行工具创建一个 VRT 文件,如此处所述

此外,由于您使用的是 DTED 数据,请务必告诉 osgEarth 使用正确的 EGM96 参考椭球:

layer->setVerticalDatum("egm96");
于 2020-12-14T16:55:24.940 回答