文章目录
- 前言
- 山体阴影渲染
- QGis设置为山体阴影
- 二次开发代码实现山体阴影
- 总结
前言
- 介绍栅格图层数据渲染之山体阴影渲染
- 说明:文章中的示例代码均来自开源项目qgis_cpp_api_apps
山体阴影渲染
- 以“3420C_2010_327_RGB_LATLNG.tif”数据为例,在QGis中加载默认显示如下图
QGis设置为山体阴影
- 在图层属性的“Symbology”选项卡中选择“Render type”为“Hillshade”
- 在“Band”中选择需要渲染的波段;
- “Altitude”中选择光源的高度角,默认为45°;
- 在“Azimuth”中选择光源的方向角,默认为315°;
- 在“Z Factor”中输入高程数据的缩放参数(可以加强阴影效果),默认为1;
- 选中“Multidirectional”即可开启多角度阴影
- 属性设置完成后,图层渲染效果如下图
二次开发代码实现山体阴影
- 类
QgsHillshadeRenderer
是山体阴影渲染器,详情见文档,类图如下
- 构造函数中,制定了dataProvider,波段序号,光源高度角和光源的高度角
QgsHillshadeRenderer( QgsRasterInterface *input, int band, double lightAzimuth, double lightAltitude );
- 其他参数可以调用setters,如
void setZFactor( double zfactor )
- 完整测试代码如下
void MainWindow::rasterHillshadeSlot()
{
//添加测试图层
QgsRasterLayer *layer = addTestRaster("maps/raster/3420C_2010_327_RGB_LATLNG.tif");
QgsHillshadeRenderer *renderer = new QgsHillshadeRenderer(layer->dataProvider(),1,45,315);
renderer->setZFactor(10);
layer->setRenderer(renderer);
}
- 效果如下图
总结
- 介绍了栅格图层山体阴影渲染的用法