ArcGIS Maps SDK for JavaScript官方文档翻译——查询和过滤器器简介(上)

本主题概述了您可以用于查询和过滤数据的许多工作流程。查询和过滤操作可以针对服务器端服务中的所有功能或客户端端(或视图)中的所有可用功能进行。

首先,我们将回顾哪些层允许您查询和过滤功能的子集。在这样做时,我们必须了解服务器端与客户端Layer(图层)以及Layer与LayerView的概念。

服务器端和客户端层

ArcGIS Maps SDK for JavaScript使您可以从许多来源添加数据。允许您查询和过滤其功能子集的图层可分为服务器端图层和客户端图层。

服务器端图层在加载时仅获取所需要素。之后,图层根据需要或请求从服务器获取其要素。这些图层包括:FeatureLayer、OGCFeatureLayer、SceneLayer和StreamLayer。通过将图层的url属性设置为指向一个服务,即可创建服务器端图层。

客户端图层在加载时一次性获取其所有功能并将其存储在客户端。一旦加载了这些图层,就不会再发出服务器端请求。这些图层包括:CSVLayer、GeoJSONLayer和WFSLayer。通过将图层的url属性设置为csv或geojson文件或WFS服务,或者通过设置其source属性将数组中的客户端端图形创建为FeatureLayer,可以创建这些图层。

图层和LayerView

当将图层添加到MapView或SceneView时,将创建一个LayerView。LayerView负责在视图中渲染功能。layerView还提供了方法和属性,使开发者能够在客户端端查询、过滤和突出显示视图中的图形。

以下表格显示了用户将图层添加到视图时发生的简化步骤。

行为 服务器端图层 客户端图层
图层 FeatureLayer、OGCFeatureLayer、SceneLayer和StreamLayer CSVLayer、GeoJSONLayer、WFSLayer 和客户端 FeatureLayer
初始化 通过将其url属性设置为指向服务器端功能、场景或流服务来创建。const layer = new FeatureLayer({ url: "service url" }); view.map.add(layer); 通过设置其url属性创建CSVLayer、GeoJSONLayer和WFSLayer。通过设置其source属性创建客户端FeatureLayer。const layer = new CSVLayer({ url: "csv file url" }); view.map.add(layer);
初始要素获取 图层仅从服务器获取所需的要素。 该图层在初始化时获取其所有要素并将其存储在客户端上。
LayerView初始化 初始化包含用于绘制的可用功能的FeatureLayerView、OGCFeatureLayerView、SceneLayerView或StreamLayerView,表示FeatureLayer、OGCFeatureLayer、SceneLayer或StreamLayer。view.whenLayerView(layer).then(function(layerView){ // now we have access to the layerView, an object representing the layer in the view }); 初始化包含用于绘制的FeatureLayerView、CSVLayerView或WFSLayerView,表示CSVLayer、GeoJSONLayer、FeatureLayer或WFSLayer。view.whenLayerView(layer).then(function(layerView){// now we have access to the layerView, an object representing the layer in the view});
后续网络请求 ,根据需要进行后续网络请求。 ,如果在加载后未刷新图层。 ,当刷新图层时,会向服务器请求更新的数据。

下图说明了可以从图层(Layer)和LayerView查询的要素。如图所示,图层涵盖了应用程序的初始范围之外的要素。图层的属性和方法提供对所有这些功能的访问。加载图层时,layerView可以访问应用程序初始范围内可见的要素。在应用程序加载后调用的任何操作都可以访问视图中可见的功能。图像还显示了图层和LayerView上可用的要素数量。由于layerView返回视图范围内的要素,因此layerView的要素计数要少得多,而图层计数表示图层中的所有要素。

查询

有三种类型的查询:属性查询、空间查询和统计查询。本文提供了每种查询类型的详细信息。查询可以在图层或其layerView上执行。

服务器端查询

当在服务器端图层上调用查询方法时,将发出服务器端查询。查询将针对服务中的所有可用要素执行。

js 复制代码
(Feature|Scene)Layer // queries all features in the service
  .queryFeatures() // queries all features and returns a FeatureSet
  .queryExtent() // queries all features returns extent of features that satisfy query
  .queryFeatureCount() // queries all features and returns count of features
  .queryObjectIds() // queries all features and returns objectIds array of features

客户端查询

当在客户端图层或任何layerView上调用查询方法时,将发出客户端查询。查询将针对图层或layerView中的所有可用要素执行。

js 复制代码
(Feature|CSV|GeoJSON|WFS)Layer  // queries all features in the layer
(Feature|CSV|GeoJSON|OGCFeature|Scene|Stream)LayerView // queries available features in view
  .queryFeatures() // queries features and returns a FeatureSet
  .queryExtent() // queries features returns extent of features that satisfy query
  .queryFeatureCount() // queries features and returns count of features
  .queryObjectIds() // queries features and returns objectIds array of features

未完待续~

相关推荐
GIS之家2 天前
vue3+arcgisAPI4示例:绘图工具动态修改样式导出GeoJSON(附源码下载)
arcgis·gis·webgis
GISBox4 天前
GISBox矢量服务使用指南:从数据导入到服务发布
react.js·json·gis
充气大锤5 天前
基于高德地图实现后端传来两点坐标计算两点距离并显示
前端·javascript·html·gis·高德地图
GIS小小研究僧10 天前
同一个栅格数据,为何在QGIS和ArcGIS Pro中打开后显示的数值范围不同?
arcgis·gis·qgis·rs
GISBox11 天前
GIS新手入门首选!GISBox中文界面+一键安装,零依赖轻松搞定三维数据发布
vue.js·json·gis
GISBox14 天前
GISBox支持WMS协议的技术突破
vue.js·json·gis
GIS学姐嘉欣15 天前
【智慧城市】2025年中国地质大学(武汉)暑期实训优秀作品(1):智绘旅程构建文旅新基建
gis·智慧城市·webgis
青山Coding17 天前
Cesium应用(三):全球气压可视化与气象时序图实现方案
前端·gis·cesium
圆周率的后六位20 天前
GIS相关调研
arcgis·gis·supermap·gisbox·gis组件
青山Coding23 天前
Cesium应用(二):基于heatmap.js 的全球气象可视化实现方案
前端·gis·cesium