osgearth3.2读取显示S57电子海图的代码
时间: 2023-07-10 13:22:37 浏览: 465
以下是使用osgEarth 3.2读取并显示S-57电子海图的代码示例:
```cpp
#include <osgEarth/Map>
#include <osgEarth/MapNode>
#include <osgEarth/SpatialReference>
#include <osgEarth/Registry>
#include <osgEarth/TileSource>
#include <osgEarthUtil/SimplexNoiseTerrainEngineNode>
#include <osgViewer/Viewer>
using namespace osgEarth;
using namespace osgEarth::Util;
int main(int argc, char** argv)
{
// 初始化osgEarth
osgEarth::initialize();
// 创建地图
osg::ref_ptr<Map> map = new Map();
// 加载S-57电子海图数据源
osg::ref_ptr<TileSource> source = TileSourceFactory::create("s57", TileSourceOptions());
// 将S-57电子海图数据源添加到地图中
map->addImageLayer(new ImageLayer("S57", source.get()));
// 创建地图节点
osg::ref_ptr<MapNode> mapNode = new MapNode(map.get());
// 创建查看器并添加地图节点
osgViewer::Viewer viewer;
viewer.setSceneData(mapNode.get());
// 运行查看器
return viewer.run();
}
```
需要注意的是,上述代码需要使用osgEarth 3.2及以上版本,同时需要安装S-57电子海图数据源。在使用时,需要将代码中的数据源路径和图层名称替换为实际的数据源路径和图层名称。
阅读全文