本文在“用VTK绘制DEM之一”一文的基础上,按高程设色,增强了可视化效果。

下面代码中的红色部分是为添加颜色新加的,主要有两部分:
1. 为polydata的每个cell指定scalar,不同的scalar对应于不同的颜色
# set scalar cell data
colors = vtk.vtkFloatArray()
polyData.GetCellData().SetScalars(colors)
在指定每个cell的同时,指定该cell的颜色scalar
......
cell = polyData.InsertNextCell(VTK_POLYGON, ids)
colorScalar = 8*(array[yPixel][xPixel]-min)/heightRange
colors.InsertTuple1(cell, colorScalar)
2. 为vtkPolyDataMapper设置查找表
# define colors
lut = vtk.vtkLookupTable()
lut.SetNumberOfTableValues(9)
lut.SetTableRange(0, 8)
lut.SetTableValue(0, 0.517, 0.710, 0.694, 1.0)
lut.SetTableValue(1, 0.765, 0.808, 0.572, 1.0)
lut.SetTableValue(2, 0.086, 0.521, 0.149, 1.0)
lut.SetTableValue(3, 0.580, 0.580, 0.141, 1.0)
lut.SetTableValue(4, 0.721, 0.266, 0.027, 1.0)
lut.SetTableValue(5, 0.396, 0.098, 0.003, 1.0)
lut.SetTableValue(6, 0.474, 0.278, 0.149, 1.0)
lut.SetTableValue(7, 0.694, 0.686, 0.698, 1.0)
lut.SetTableValue(8, 1.0, 1.0, 1.0, 1.0)
lut.Build()
polyDataMapper = vtk.vtkPolyDataMapper()
polyDataMapper.SetInput(polyData)
polyDataMapper.SetScalarModeToUseCellData()
polyDataMapper.UseLookupTableScalarRangeOn()
polyDataMapper.SetLookupTable(lut)
代码如下:
#
!C:/Python24/python.exe
#
coding=utf-8
#
app.py
#
author:liujunzhi
#
date:20071210
import
vtk
from
vtk.wx.wxVTKRenderWindow
import
wxVTKRenderWindow
import
sys, time
from
gdal
import
gdal
from
wxPython.wx
import
*

VTK_POLYGON
=
7

def
display_dem(renWin, demName):
#
open dem file with gdal
dataset
=
gdal.Open(demName)
if
dataset
is
None:
print
'
open DEM file failed!
'
sys.exit(0)
geoTrans
=
dataset.GetGeoTransform()
本文在前一篇的基础上,介绍如何通过VTK库为DEM数据的每个单元格分配颜色标量,根据标量值创建颜色查找表,以实现按高程色彩渲染,从而提升地形数据的可视化效果。

4312

被折叠的 条评论
为什么被折叠?



