import AreaMeasurementAnalysis from "@arcgis/core/analysis/AreaMeasurementAnalysis.js";
const AreaMeasurementAnalysis = await $arcgis.import("@arcgis/core/analysis/AreaMeasurementAnalysis.js");
@arcgis/core/analysis/AreaMeasurementAnalysis
AreaMeasurementAnalysis computes the area of a polygonal region and displays the measurement in a 3D SceneView.
To display an area measurement of a polygon, create a new instance of AreaMeasurementAnalysis, add it to SceneView.analyses and set the geometry property.
Use the AreaMeasurementAnalysisView3D to retrieve analysis results.
// create analysis
const areaMeasurement = new AreaMeasurementAnalysis({
geometry: new Polygon({ })
});
// add to scene view
sceneView.analyses.add(areaMeasurement);
// retrieve measured results from analysis view once available
const analysisView = await sceneView.whenAnalysisView(areaMeasurement);
await reactiveUtils.whenOnce(() => analysisView.result);
const result = analysisView.result;
To draw an area measurement interactively, use the AreaMeasurementAnalysisView3D.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 point
abortController.abort();
How the area and perimeter are computed depends on the scene's spatial reference and the length of the measured perimeter.
In geographic coordinate systems (GCS) and in Web Mercator:
- If the measurement's perimeter is below 100 km, they are computed in a Euclidean manner, in an ECEF coordinate system (or equivalent on other planets).
- If the perimeter is above 100 km, they are computed geodetically, and the visualization takes the curvature of the planet into consideration.
In projected coordinate systems (PCS), apart from Web Mercator, the area and perimeter are always calculated in a Euclidean manner (in their respective PCS).
The area may be visualized and calculated in two ways:
- If all the vertices are mostly coplanar (lying on the same plane), the measurement polygon is formed on that plane, and area and perimeter are calculated from its geometry.
- If the vertices don't form a planar surface, the measurement polygon is projected to a horizontal plane, and area and perimeter are calculated from its geometry.
Use the Area Measurement 3D component to display a user interface for the area measurement analysis.
Known Limitation
This analysis is only supported in a 3D SceneView.
- See also
Constructors
-
Parameterproperties Objectoptional
See the properties for a list of all the properties that may be passed into the constructor.
Property Overview
Name | Type | Summary | Class |
---|---|---|---|
The name of the class. | Accessor | ||
Polygon whose area is to be computed and displayed in the view. | AreaMeasurementAnalysis | ||
A user settable identifier for the analysis. | Analysis | ||
The origin of the analysis. | Analysis | ||
The type of analysis. | AreaMeasurementAnalysis | ||
An automatically generated unique identifier assigned to the instance. | Analysis | ||
Unit system (imperial, metric) or specific unit used for displaying the computed area in the view. | AreaMeasurementAnalysis | ||
Indicates whether the analysis is ready to be computed and interacted with in the view. | AreaMeasurementAnalysis |
Property Details
-
origin
InheritedPropertyorigin AnalysisOriginWebScene |null |undefinedautocast
Inherited from Analysis -
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.
-
type
type Stringreadonly
-
The type of analysis. For area measurement analysis, this is always "area-measurement".
For AreaMeasurementAnalysis the type is always "area-measurement".
-
unit
unit SystemOrAreaUnit |null |undefined
-
Unit system (imperial, metric) or specific unit used for displaying the computed area in the view.
-
valid
valid Booleanreadonly
Since: ArcGIS Maps SDK for JavaScript 4.33AreaMeasurementAnalysis since 4.23, valid added at 4.33. -
Indicates whether the analysis is ready to be computed and interacted with in the view. It requires the geometry to be a valid polygon whose first ring contains at least 4 points, with the first and last points being the same to close the polygon.
Method Overview
Name | Return Type | Summary | Class |
---|---|---|---|
Adds one or more handles which are to be tied to the lifecycle of the object. | Accessor | ||
this | Creates a deep clone of this object. | Analysis | |
Returns true if a named group of handles exist. | Accessor | ||
Removes a group of handles owned by the object. | Accessor |
Method Details
-
Inherited from Accessor
Since: ArcGIS Maps SDK for JavaScript 4.25Accessor since 4.0, addHandles added at 4.25. -
Adds one or more handles which are to be tied to the lifecycle of the object. The handles will be removed when the object is destroyed.
// Manually manage handles const handle = reactiveUtils.when( () => !view.updating, () => { wkidSelect.disabled = false; }, { once: true } ); this.addHandles(handle); // Destroy the object this.destroy();
ParametershandleOrHandles WatchHandle|WatchHandle[]Handles marked for removal once the object is destroyed.
groupKey *optionalKey identifying the group to which the handles should be added. All the handles in the group can later be removed with Accessor.removeHandles(). If no key is provided the handles are added to a default group.
-
Inherited from Analysis
-
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.
ReturnsType Description this A deep clone of the class instance that invoked this method.
-
hasHandles
InheritedMethodhasHandles(groupKey){Boolean}
Inherited from AccessorSince: ArcGIS Maps SDK for JavaScript 4.25Accessor since 4.0, hasHandles added at 4.25. -
Returns true if a named group of handles exist.
ParametergroupKey *optionalA group key.
ReturnsType Description Boolean Returns true
if a named group of handles exist.Example// Remove a named group of handles if they exist. if (obj.hasHandles("watch-view-updates")) { obj.removeHandles("watch-view-updates"); }
-
Inherited from Accessor
Since: ArcGIS Maps SDK for JavaScript 4.25Accessor since 4.0, removeHandles added at 4.25. -
Removes a group of handles owned by the object.
ParametergroupKey *optionalA group key or an array or collection of group keys to remove.
Exampleobj.removeHandles(); // removes handles from default group obj.removeHandles("handle-group"); obj.removeHandles("other-handle-group");