SceneLayerView - 按几何查询统计信息

尝试一下在线预览

客户端要素查询在应用程序应立即提供结果,以响应用户输入的情况下是很有用。通过对 LayerView 的查询,没有到服务器的往返。在这个示例中,用户可以绘制多边形、折线或点几何图形,然后将其用作查询中的空间 几何参数。

在 SceneLayerView 上运行查询之前,定义了希望接收到的关于匹配要素的统计信息。这是通过给 outStatistics 分配一个 StatisticDefinition 数组并在 SceneLayerView 上调用 queryFeatures 来实现的:

               
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const query = sceneLayerView.createQuery();
query.geometry = sketchGeometry;
query.outStatistics = [
  ...
  {
    onStatisticField:
      "CASE WHEN (yearCompleted >= '1975' AND yearCompleted <= '1999') THEN 1 ELSE 0 END",
    outStatisticFieldName: "year_1975",
    statisticType: "sum"
  },
  ...
];
sceneLayerView.queryFeatures(query).then((response) => {
  console.log("Statistics", response.features[0].attributes)
});

用于查询的多边形、折线或点是使用  SketchViewModel 绘制的。我们通过在绘制多边形、折线或点的视图和 GraphicsLayer 中传递信息来定义 SketchViewModel 还可以为多边形、折线或点设置符号:

                           
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// use SketchViewModel to draw polygons that are used to query
const sketchViewModel = new SketchViewModel({
  layer: graphicsLayer,
  view: view,
  polygonSymbol: {
    type: "polygon-3d",
    symbolLayers: [
      {
        type: "fill",
        material: {
          color: [255, 255, 255, 0.8]
        },
        outline: {
          color: [211, 132, 80, 0.7],
          size: "10px"
        }
      }
    ]
  }
});

sketchViewModel.on("create", (event) => {
  if (event.state === "complete") {
    sketchGeometry = event.graphic.geometry;
    performQuery();
  }
});

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.