private static void SetSceneView(IBasicDocument document, IRasterLayer surface) { IEnvelope unionEnvelope = new EnvelopeClass(); foreach (var layer in _viewCalcLayers) { IEnvelope envelope = null; try { envelope = EsriTools.GetLayerExtent(layer, document.ActiveView); } catch (Exception ex) { logger.WarnEx($"Cannot to get envelope from {layer.Name} layer"); } if (envelope != null) { unionEnvelope.Union(envelope); } } var pSxDoc = document as ISxDocument; var camera = pSxDoc.Scene.SceneGraph.ActiveViewer.Camera; var centerPoint = EsriTools.GetCenterPoint(unionEnvelope); centerPoint.AddZCoordinate(surface.Raster); camera.Target = centerPoint; var observerPoint = unionEnvelope.LowerRight.Clone(); observerPoint.AddZCoordinate(surface.Raster); observerPoint.Z += 1000; camera.Observer = observerPoint; camera.Zoom(-2); camera.RecalcUp(); pSxDoc.Scene.SceneGraph.RefreshViewers(); }