public static void Display3DEM(AxSceneControl sc, ILayer TIFFLayer, ILayer DEMLayer, double Z)
{
IRasterSurface rsurface = new RasterSurface(); //定义基面
ISurface surface;
IRasterLayer DEMRasterLayer = DEMLayer as IRasterLayer; //接收基面
IRaster DEMraster = (IRaster)DEMRasterLayer.Raster; //基面rasterLayer转为RASTER
IRasterBandCollection DEMrasterbands = DEMraster as IRasterBandCollection;//基面转为波段收集器
IRasterBand DEMrasterband = DEMrasterbands.Item(0);//获取第一个波段
rsurface.RasterBand = DEMrasterband;//获取的第一个波段写入到栅格基面波段中
surface = rsurface as ISurface;//栅格表面转换为基面
ILayerExtensions layerextensions = TIFFLayer as ILayerExtensions;//Provides access to the extensions of a layer
I3DProperties properties = new Raster3DPropertiesClass();
int i;
object p3d;
for (i = 0; i < layerextensions.ExtensionCount; i++)
{
p3d = layerextensions.get_Extension(i);
if (p3d != null)
{
properties = (I3DProperties)p3d;
break;
}
}
properties.BaseOption = esriBaseOption.esriBaseSurface; //esriBaseOption包括三种表达,形状,面
properties.BaseSurface = surface; //基面提供对功能表面的信息的访问,产生给定x,y位置的高度
properties.Apply3DProperties(TIFFLayer); //应用3D属性
properties.ZFactor = Z; //缩放因子
sc.Scene.SceneGraph.RefreshViewers();
}