Drape a layer on an elevation surface.
[C#]
///<summary>Drape a layer on an elevation surface.</summary> /// ///<param name="globeDisplay">An IGlobeDisplay interface</param> ///<param name="layer">An ILayer which is to draped on the globe</param> ///<param name="elevationRasterFilePath">A System.String that is the location of the elevation raster file. Example: "C:\temp\theElevationRaster"</param> /// ///<remarks></remarks> public void AddDrapeLayerToGlobeElevationSurface(ESRI.ArcGIS.GlobeCore.IGlobeDisplay globeDisplay, ESRI.ArcGIS.Carto.ILayer layer, System.String elevationRasterFilePath) { ESRI.ArcGIS.GlobeCore.IGlobeDisplayLayers globeDisplayLayers = (ESRI.ArcGIS.GlobeCore.IGlobeDisplayLayers)globeDisplay; // Explicit cast // Create elevation raster layer ESRI.ArcGIS.Carto.IRasterLayer elevationRasterLayer = new ESRI.ArcGIS.Carto.RasterLayerClass(); elevationRasterLayer.CreateFromFilePath(elevationRasterFilePath); // Create and add the GlobeLayerProperties extension with the Type set to ElevationData ESRI.ArcGIS.GlobeCore.IGlobeLayerProperties globeLayerProperties = new ESRI.ArcGIS.GlobeCore.GlobeLayerPropertiesClass(); globeLayerProperties.Type = ESRI.ArcGIS.GlobeCore.esriGlobeDataType.esriGlobeDataElevation; ESRI.ArcGIS.Carto.ILayerExtensions layerExtension = (ESRI.ArcGIS.Carto.ILayerExtensions)elevationRasterLayer; // Explicit cast layerExtension.AddExtension(globeLayerProperties); // Set the base option for layer to be esriGlobeLayerBaseLayer and its base layer to be ElevationLayer ESRI.ArcGIS.GlobeCore.IGlobeLayerProperties drapeLayerGlobeLayerProperties = globeDisplayLayers.FindGlobeProperties(layer); ESRI.ArcGIS.GlobeCore.IGlobeHeightProperties drapeLayerGlobeHeightProperties = drapeLayerGlobeLayerProperties.HeightProperties; drapeLayerGlobeHeightProperties.BaseLayer = elevationRasterLayer; drapeLayerGlobeHeightProperties.BaseOption = ESRI.ArcGIS.GlobeCore.esriGlobeLayerBaseOption.esriGlobeLayerBaseLayer; // Apply the height properties of the layer drapeLayerGlobeHeightProperties.Apply(globeDisplay.Globe, layer); globeDisplay.RefreshViewers(); }
[Visual Basic .NET]
'''<summary>Drape a layer on an elevation surface.</summary> ''' '''<param name="globeDisplay">An IGlobeDisplay interface</param> '''<param name="layer">An ILayer which is to draped on the globe</param> '''<param name="elevationRasterFilePath">A System.String that is the location of the elevation raster file. Example: "C:\temp\theElevationRaster"</param> ''' '''<remarks></remarks> Public Sub AddDrapeLayerToGlobeElevationSurface(ByVal globeDisplay As ESRI.ArcGIS.GlobeCore.IGlobeDisplay, ByVal layer As ESRI.ArcGIS.Carto.ILayer, ByVal elevationRasterFilePath As System.String) Dim globeDisplayLayers As ESRI.ArcGIS.GlobeCore.IGlobeDisplayLayers = CType(globeDisplay, ESRI.ArcGIS.GlobeCore.IGlobeDisplayLayers) ' Explicit Cast ' Create elevation raster layer Dim elevationRasterLayer As ESRI.ArcGIS.Carto.IRasterLayer = New ESRI.ArcGIS.Carto.RasterLayerClass elevationRasterLayer.CreateFromFilePath(elevationRasterFilePath) ' Create and add the GlobeLayerProperties extension with the Type set to ElevationData Dim globeLayerProperties As ESRI.ArcGIS.GlobeCore.IGlobeLayerProperties = New ESRI.ArcGIS.GlobeCore.GlobeLayerPropertiesClass globeLayerProperties.Type = ESRI.ArcGIS.GlobeCore.esriGlobeDataType.esriGlobeDataElevation Dim layerExtension As ESRI.ArcGIS.Carto.ILayerExtensions = CType(elevationRasterLayer, ESRI.ArcGIS.Carto.ILayerExtensions) ' Explicit Cast layerExtension.AddExtension(globeLayerProperties) ' Set the base option for layer to be esriGlobeLayerBaseLayer and its base layer to be ElevationLayer Dim drapeLayerGlobeLayerProperties As ESRI.ArcGIS.GlobeCore.IGlobeLayerProperties = globeDisplayLayers.FindGlobeProperties(layer) Dim drapeLayerGlobeHeightProperties As ESRI.ArcGIS.GlobeCore.IGlobeHeightProperties = drapeLayerGlobeLayerProperties.HeightProperties drapeLayerGlobeHeightProperties.BaseLayer = elevationRasterLayer drapeLayerGlobeHeightProperties.BaseOption = ESRI.ArcGIS.GlobeCore.esriGlobeLayerBaseOption.esriGlobeLayerBaseLayer ' Apply the height properties of the layer drapeLayerGlobeHeightProperties.Apply(globeDisplay.Globe, layer) globeDisplay.RefreshViewers() End Sub