import LineOfSightAnalysis from "@arcgis/core/analysis/LineOfSightAnalysis.js";const LineOfSightAnalysis = await $arcgis.import("@arcgis/core/analysis/LineOfSightAnalysis.js");- Since
- ArcGIS Maps SDK for JavaScript 4.23
LineOfSightAnalysis computes the line of sight from a single observer position towards a set of targets. The results are visualized in a 3D SceneView.
To display the line of sight between two points, create a new instance of LineOfSightAnalysis, add it to SceneView.analyses, and set the observer and targets properties.
If the observer position or target position have z-values then these will be treated as absolute values, otherwise the points will be aligned to the ground.
Use the LineOfSightAnalysisView3D to retrieve analysis results.
// create line of sight analysisconst lineOfSightAnalysis = new LineOfSightAnalysis({ observer: new LineOfSightAnalysisObserver({ position: new Point({ }) }), targets: [ new LineOfSightAnalysisTarget({ position: new Point({ }) }) ]});
// add to the viewview.analyses.add(lineOfSightAnalysis);
// wait until the view finishes updating so the results are currentawait reactiveUtils.whenOnce(() => !view.updating);
// retrieve the results from the analysis view.const analysisView = await view.whenAnalysisView(lineOfSightAnalysis);const results = analysisView.results;The line of sight analysis can also be added to a LineOfSightLayer which can be persisted in a web scene:
// create line of sight layer containing the analysisconst lineOfSightLayer = new LineOfSightLayer({ analysis: lineOfSightAnalysis});
// add to the mapview.map.add(lineOfSightLayer);To place the observer and targets interactively, use the LineOfSightAnalysisView3D.place() method.
const abortController = new AbortController();
try { await analysisView.place({ signal: abortController.signal });} catch (error) { if (error.name === "AbortError") { console.log("Placement operation was cancelled."); }}
// cancel the placement operation at some later pointabortController.abort();The analysis results are displayed as colored lines, where areas visible to the observer are shown green and occluded parts are marked in red. Also, the color of the target points indicates their visibility. When the line of sight cannot be calculated, it will be displayed with a gray color. This may happen if either the target or the observer is not in the view.
Use the Line Of Sight component to display a user interface for the line of sight analysis.
Known Limitation
This analysis is only supported in a 3D SceneView. The results of the tool vary depending on the zoom level, as changes in zoom level affect the level of detail (LOD) of the scene geometry.
Constructors
Constructor
Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
| properties | | |
Properties
observer
- Type
- LineOfSightAnalysisObserver | null | undefined
Observer location. This is the point from which line of sight analysis is performed.
origin
- Type
- AnalysisOriginWebScene | null | undefined
The origin of the analysis. The origin can be of type web-scene when the analysis was applied from the
WebScene.initialViewProperties or a
Slide.
targets
Target locations. A list of points to look at from the observer.
uid
- Type
- string
- Since
- ArcGIS Maps SDK for JavaScript 4.33
An automatically generated unique identifier assigned to the instance. The unique id is generated each time the application is loaded.
Methods
fromJSON
- Signature
-
fromJSON (json: any): any
Creates a new instance of this class and initializes it with values from a JSON object
generated from an ArcGIS product. The object passed into the input json
parameter often comes from a response to a query operation in the REST API or a
toJSON()
method from another ArcGIS product. See the Using fromJSON()
topic in the Guide for details and examples of when and how to use this function.
Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
| json | A JSON representation of the instance in the ArcGIS format. See the ArcGIS REST API documentation for examples of the structure of various input JSON objects. | |
- Returns
- any
Returns a new instance of this class.
clone
- Signature
-
clone (): this
Creates a deep clone of this object. Any properties that store values by reference will be assigned copies of the referenced values on the cloned instance.
- Returns
- this
A deep clone of the class instance that invoked this method.
equals
- Signature
-
equals (other: this): boolean
- Since
- ArcGIS Maps SDK for JavaScript 5.0
Compares this analysis with another analysis to determine whether they are equivalent.
toJSON
- Signature
-
toJSON (): any
Converts an instance of this class to its ArcGIS portal JSON representation. See the Using fromJSON() guide topic for more information.
- Returns
- any
The ArcGIS portal JSON representation of an instance of this class.