SuperAPI AI 工具集

arcgis-spatial-analysis

数据与分析

查看项目

更新于 10-16 03:00

技能介绍

用途

本技能面向 ArcGIS Maps SDK for JavaScript 的空间分析能力,涵盖三类任务:三维空间分析对象、带统计的要素查询、以及要素归约(聚类与分箱)。几何运算(buffer、union、intersect、clip、offset 等)请参见 arcgis-geometry-operations;路由、地理编码、地理处理等 REST 服务请参见 arcgis-rest-services。

主要能力

三维分析对象

分析对象添加到 SceneView 的 analyses 集合中,所有分析类型都要求使用 SceneView(而非 MapView)。支持的分析类型包括:

  • ViewshedAnalysis:从观察点计算可见区域,使用 viewsheds 集合(由 Viewshed 对象组成),而非直接设置 observer 属性。
  • LineOfSightAnalysis:计算点与点之间的可见性,使用 LineOfSightAnalysisObserver 和 LineOfSightAnalysisTarget 包装对象。
  • ShadowCastAnalysis:阴影可视化,使用 date、startTimeOfDay、endTimeOfDay、mode 等属性,mode 可选 "total-duration"、"discrete"、"min-duration"。
  • SliceAnalysis:三维内容的剖切,使用 shape 属性(类型为 SlicePlane,而非 plane)。
  • ElevationProfileAnalysis:沿线的地形剖面,使用 profiles 和 geometry(Polyline)。
  • AreaMeasurementAnalysis:三维面积测量,使用 geometry(Polygon)。
  • DistanceMeasurementAnalysis:三维距离测量,使用 geometry(Polyline),而非 startPoint/endPoint。
  • VolumeMeasurementAnalysis:挖填体积测量,使用 geometry(Polygon)。
  • DimensionAnalysis:三维长度尺寸标注,使用 dimensions(LengthDimension 数组)。

分析视图支持通过 place() 方法进行交互式放置,可配合 AbortController 取消放置。

带统计的要素查询

通过 featureLayer.createQuery() 创建查询,可设置 outStatistics 计算 sum、avg、max、min、count、stddev 等统计值;支持 groupByFieldsForStatistics 分组统计,并可结合 geometry 与 spatialRelationship 做空间统计。统计查询返回的是带计算属性的要素,需通过 result.features[0].attributes 访问结果。

要素归约

  • 聚类(cluster):通过 featureReduction 配置 clusterRadius、clusterMinSize、clusterMaxSize、popupTemplate、labelingInfo 等;可配置 fields 聚合字段(如 avg、count)并配合 renderer 与 visualVariables 可视化。
  • 分箱(binning):通过 featureReduction 配置 fixedBinLevel、renderer、popupTemplate 等,使用 aggregateCount 字段做颜色可视化。

使用方式

支持两种导入模式:

直接 ESM 导入,例如:

import ViewshedAnalysis from "@arcgis/core/analysis/ViewshedAnalysis.js"; import Viewshed from "@arcgis/core/analysis/Viewshed.js";

动态导入(CDN),例如:

const [ViewshedAnalysis, Viewshed] = await $arcgis.import([ "@arcgis/core/analysis/ViewshedAnalysis.js", "@arcgis/core/analysis/Viewshed.js", ]);

分析对象通过 view.analyses.add(analysis) 添加;可通过 view.whenAnalysisView(analysis) 获取分析视图,并用 reactiveUtils.watch 监听 progress 或 result 以获取结果。

适用场景

  • 在三维场景中做视域、通视、阴影、剖切、高程剖面等可视化分析。
  • 对 FeatureLayer 做统计汇总、分组统计或空间范围内的统计查询。
  • 对大量点要素进行聚类或分箱聚合展示。

限制与常见陷阱

  • 分析对象仅适用于 SceneView,在 MapView 中不可用。
  • ViewshedAnalysis 必须使用 viewsheds 集合,不能直接设置 observer。
  • 聚类弹窗与标注中访问要素数量应使用 cluster_count(而非 clusterCount)。
  • 统计查询返回的是要素而非原始数值,需通过 result.features[0].attributes 访问。
  • 读取分析结果前应确认 analysisView.progress === 1 或监听 analysisView.result。
  • SliceAnalysis 使用 shape(SlicePlane)属性,而非 plane。

参考示例

analysis-viewshed、analysis-objects、analysis-elevation-profile、analysis-shadow-cast、analysis-area-measurement、analysis-volume-measurement、line-of-sight、featurereduction-cluster、featurereduction-binning、featurereduction-cluster-aggregate-fields。

相关技能

arcgis-geometry-operations(客户端几何运算)、arcgis-rest-services(服务端 REST 服务)、arcgis-coordinates-projection(坐标投影与格式化)、arcgis-layers(FeatureLayer 查询与图层配置)。