public ISurface GetSurfaceFromMapByName(IMap map, string name)
{
for (int x = 0; x < map.LayerCount; x++)
{
var layer = map.get_Layer(x);
if (layer == null || layer.Name != name)
continue;
var tin = layer as ITinLayer;
if (tin != null)
{
return tin.Dataset as ISurface;
}
var rasterSurface = new RasterSurfaceClass() as IRasterSurface;
ISurface surface = null;
var mosaicLayer = layer as IMosaicLayer;
var rasterLayer = layer as IRasterLayer;
if (mosaicLayer != null && mosaicLayer.PreviewLayer != null && mosaicLayer.PreviewLayer.Raster != null)
{
rasterSurface.PutRaster(mosaicLayer.PreviewLayer.Raster, 0);
}
else if (rasterLayer != null && rasterLayer.Raster != null)
{
rasterSurface.PutRaster(rasterLayer.Raster, 0);
}
surface = rasterSurface as ISurface;
if (surface != null)
return surface;
}
return null;
}