基本信息
以下是所在类或对象的基本信息。
AMD:
require(["esri/rest/support/TopFeaturesQuery"], (TopFeaturesQuery) => { /* code goes here */ });
ESM:
import TopFeaturesQuery from "@arcgis/core/rest/support/TopFeaturesQuery";
类:
esri/rest/support/TopFeaturesQuery
继承: TopFeaturesQuery > Accessor
自从:用于 JavaScript 4.20 的 ArcGIS API
用法说明
此类定义用于从 FeatureLayer 执行 top features queries 的参数。一旦定义了 TopFeaturesQuery 对象的属性,就可以将其传递到服务器端 FeatureLayer 上的可执行函数中,该函数可以返回包含组内特征的 FeatureSet。例如,您可以使用 FeatureLayer 的queryTopFeatures() 方法来查询美国每个州人口最多的三个县。
此类具有许多与Query 类相同的属性。但是,与 Query 类不同,此类不支持 outStatistics
及其相关参数或 returnDistinctValues
等属性。
// query the top three most populous counties from each state.
// Results will be ordered based the population of each county in descending order
// top query will run against all features available in the service
const query = new TopFeaturesQuery({
outFields: ["State, Pop_total, County"],
topFilter: new TopFilter({
topCount: 3,
groupByFields: ["State"],
orderByFields: ["Pop_total DESC"]
})
});
featureLayer.queryTopFeatures(query)
.then(function(response){
// returns a feature set with features containing the most populous
// three counties in each state ordered by population.
// The following attributes are returned as well: State, Pop_total, County
});
热门特征查询分为三种类型:属性查询、空间查询和时间查询。您可以查询这些类别之一中的要素,或者在单个查询中使用每个类别的元素。运行热门函数查询时,必须始终设置 topFilter 参数。
属性查询
要根据属性值查询热门要素,请在 where 属性中与 topFilter 属性一起指定 SQL where 子句。设置查询的outFields将限制查询返回的属性。如果您的应用不需要每个函数的所有属性,这可以提高查询速度。
例如,如果人口超过1,000,000,您可以使用where和topFilter参数查询每个国家人口最多的前三个城市。
const query = new TopFeaturesQuery({
where: "Population >= 1000000",
outFields: ["Country, Population, Name"],
topFilter: new TopFilter({
topCount: 3,
groupByFields: ["Country"],
orderByFields: [`Population DESC`]
})
});
featureLayer.queryTopFeatures(query)
.then(function(response){
// returns a feature set with features containing the most populous three cities
// in each country. The query will run only against cities where the population is
// over one million.
});
空间查询
您可以按几何/位置查询热门要素。虽然此工作流程中不需要 where,但您可以使用 where
作为查询的一部分以获得更精确的结果。除了几何属性之外,还必须设置 topFilter 属性。要执行空间查询,您必须将几何参数设置为Geometry 对象并指定有效的空间关系。您可以选择提供查询距离和单位,以针对给定几何图形周围的缓冲区查询要素。
例如,要在鼠标移动 10 英里范围内查询每个分区类别中的两座最高建筑物,您可以执行以下操作:
view.on("pointer-move", function(event){
const query = new TopFeaturesQuery({
outFields: ["Zoning, Floors, Year"],
topFilter: new TopFilter({
topCount: 2,
groupByFields: ["Zoning"],
orderByFields: ["Floors DESC"]
}),
geometry: view.toMap(event),
spatialRelationship: "intersects",
units: "miles",
distance: 10,
returnGeometry: true
});
featureLayer.queryTopFeatures(query)
.then(function(response){
// returns two tallest buildings in zoning category within a given geometry
// The following attributes are returned as well: Zoning, Floors, Year
});
});
例如,您还可以使用 where
来返回 10 英里缓冲区内特定住宅分区中最高的建筑物。
时间查询
您可以通过指定 timeExtent 属性来查询基于给定时间范围的热门要素。仅当要素服务发布时包含 timeInfo 信息时,时态查询才会返回结果。时间查询还可以与属性和几何查询相结合。
例如,您可以使用 timeExtent 和 topFilter 参数来查询具有最高风速的飓风轨迹,并按给定时间范围内的飓风类别进行分组。
// query hurricanes that took place in 1992 and
// return a hurricane track with the highest wind speed in each category
const query = new TopFeaturesQuery({
outFields: ["STAGE, WINDSPEED, PRESSURE"],
topFilter: new TopFilter({
topCount: 1,
groupByFields: ["STAGE"],
orderByFields: ["WINDSPEED DESC"]
}),
timeExtent: {
start: new Date(1992, 0, 1),
end: new Date(1992, 11, 31)
}
});
featureLayer.queryTopFeatures(query)
.then(function(response){
// returns a hurricane with the highest wind speed
// in each stage... the query will only run against
// hurricanes that happened in 1992
});
已知限制
- 目前,
TopFeatureQuery
仅支持服务器端 FeatureLayer 。
相关用法
- JavaScript ArcGIS TopFeaturesQuery.spatialRelationship用法及代码示例
- JavaScript ArcGIS TopFeaturesQuery.where用法及代码示例
- JavaScript ArcGIS TopFeaturesQuery.units用法及代码示例
- JavaScript ArcGIS TopFeaturesQuery.topFilter用法及代码示例
- JavaScript ArcGIS TopFeaturesQuery.outFields用法及代码示例
- JavaScript ArcGIS TopFeaturesQuery.orderByFields用法及代码示例
- JavaScript ArcGIS TopFeaturesQuery.timeExtent用法及代码示例
- JavaScript ArcGIS TopFilter.orderByFields用法及代码示例
- JavaScript ArcGIS TopFilter.topCount用法及代码示例
- JavaScript ArcGIS TopFilter用法及代码示例
- JavaScript TimeSlider.container用法及代码示例
- JavaScript TypedArray.sort()用法及代码示例
- JavaScript TimeSlider.next用法及代码示例
- JavaScript Track.classes用法及代码示例
- JavaScript TimeSlider.mode用法及代码示例
- JavaScript ArcGIS TimeInfo.fullTimeExtent用法及代码示例
- JavaScript TableList trigger-action事件用法及代码示例
- JavaScript TypedArray map()用法及代码示例
- JavaScript ArcGIS Terminal用法及代码示例
- JavaScript TypedArray every()用法及代码示例
- JavaScript TimeSlider.loop用法及代码示例
- JavaScript TypedArray.indexOf()用法及代码示例
- JavaScript TypedArray findIndex()用法及代码示例
- JavaScript ArcGIS TileLayer layerview-create-error事件用法及代码示例
- JavaScript Track.goToOverride用法及代码示例
注:本文由纯净天空筛选整理自arcgis.com大神的英文原创作品 TopFeaturesQuery。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。