The Analysis and AnalysisOverlay classes provide fast, dynamic visualization of analysis results in a scene view. These classes allow you to define analyses (such as viewshed, line of sight, or distance measurement) to be performed using data in the current Scene. Rendered results are updated dynamically as layers are added or removed, features are updated, the camera position changes, and so on.
Add an analysis overlay
One or more analysis objects can be added to an analysis overlay, which is then added to the scene view. The analysis overlay can control result visibility for all analyses it contains, allowing you to manage a set of related analyses as a single overlay displayed in the view. A scene view can contain several analysis overlays.
-
Create a new AnalysisOverlay to contain one or more analyses. You might use one overlay to contain all the line of sight analyses for a specific observation point, for example.
Use dark colors for code blocks Copy // Create a new analysis overlay for the lines of sight. AnalysisOverlay* analysisOverlayLinesOfSight = new AnalysisOverlay(this); -
Add the analysis overlay to the scene view's overlay collection. Similar to the graphics overlay collection, a scene view can have zero or several analysis overlays in the collection.
Use dark colors for code blocks Copy // Get the analysis overlay list model from the scene view. AnalysisOverlayListModel* analysisOverlayListModel = m_sceneView->analysisOverlays(); // Append the analysis overlay for the lines of sight to the analysis overlay list model. analysisOverlayListModel->append(analysisOverlayLinesOfSight); -
Add one or more
Analysisobjects to the overlay. You can add and remove analyses in the overlay whenever you need to.Use dark colors for code blocks Copy // Get the analysis list model from the analysis overlay for the lines of sight. AnalysisListModel* analysisListModel = analysisOverlayLinesOfSight->analyses(); // Append the rooftopToIntersection variable (analysis) to the analysis list model. analysisListModel->append(rooftopToIntersection); // Append the rooftopToWindows variable (analysis) to the analysis list model. analysisListModel->append(rooftopToWindow);
Controlling analysis visibility
Visibility for scene analyses can be toggled on or off for individual analysis classes (a single line of sight analysis, for example) or for an entire analysis overlay. Toggling the visibility for an analysis overlay will affect all the analyses it contains. This allows you to organize your analyses into logical groups and manage their visibility as a single unit.
You can toggle visibility for an individual analysis to show/hide its results, or toggle visibility for the analysis overlay (and all analyses it contains) as a group. You can also remove it from the analysis overlay if you no longer need it, as well as remove the entire overlay from the scene view.
// Set the rooftopToWindows variable (analysis) visibility to false (this hides the analysis display).
rooftopToWindow->setVisible(false);
// Show the analysis overlay display (to render all analyses that are also set to visible).
analysisOverlayLinesOfSight->setVisible(true);
// Remove the rooftopToIntersection variable (analysis) from the analysis list model.
analysisListModel->removeOne(rooftopToIntersection);
// Remove the analysis overlay for the lines of sight from the analysis overlay list model.
analysisOverlayListModel->removeOne(analysisOverlayLinesOfSight);