Osgearth2.10之添加/删除图像

基于Osgearth对象实现图像的添加/删除功能

(1)添加图像

通过Gdal添加GeoTiff图像,代码如下:

osgEarth::Drivers::GDALOptions layerOpt;

layerOpt.url() = osgEarth::URI("文件路径");

osgEarth::ImageLayerOptions imgOpt("图层名称", layerOpt);

imgOpt.noDataValue() = 255;//可透明指定颜色,255为白色

osg::ref_ptr newLayer = new osgEarth::ImageLayer(imgOpt);

if (newLayer.valid() && newLayer->open().isOK())

{

        m_MapNode->getMap()->beginUpdate();

        m_MapNode->getMap()->addLayer(newLayer.get());

        m_MapNode->getMap()->endUpdate();

}

(2)删除图像

代码如下:

osg::ref_ptr ImgLayer = dynamic_cast(m_MapNode->getMap()->getLayerByName("名称"));//根据名称删除图像,通过ImgLayer->getName()获得

osg::ref_ptr ImgLayer = dynamic_cast(m_MapNode->getMap()->getLayerByUID("UID"));//根据UID删除图像,ImgLayer->getUID()获得

if (ImgLayer.valid())

{

         m_MapNode->getMap()->removeLayer(ImgLayer.get());

}


与Osgearth2.7版本相比,

(1)Osgearth2.10对图像、高程、矢量等数据统一按Layer处理

(2)Osgearth2.7采用mp引擎,添加/删除图像后整个窗口,用户体验较差;Osgearth2.10采用Rex引擎,添加/删除图像后的刷新效果要好许多,可满足实时添加图像需求,但添加高程数据仍会刷新整个窗口。

(3)Osgearth2.7获取图像地理范围的方式为newLayer->getTileSource()->getDataExtentsUnion();Osgearth2.10获取图像地理范围的方式为newLayer->getDataExtentsUnion();

你可能感兴趣的:(C++,Qt5,Osgearth)