一、查询条件参数介绍
查询提供了基于属性、空间和时间(时间)标准的任意组合从数据集中返回特征子集的能力。
属性条件是使用基于可用属性字段的标准SQL表达式定义的。
空间标准使用几何图形和空间关系(within、contains、intersect等)。
时间过滤器可以使用单个日期、时间或范围来定义。
//常见的一些查询条件运用
QueryParameters query = new QueryParameters();
//按空间查询,设置条件
query.setGeometry(envelope);
// 按属性查询,设置条件
query.setWhereClause("1=1");
//设置是否返回几何形状,如果不需要,进行除非能极大提高性能
query.setReturnGeometry(true);
二、API中的相关类和成员参考,常用查询相关接口
QueryParameters:定义查询的属性、空间和时间标准。它还具有控制返回结果方式的属性。FeatureTable.queryFeaturesAsync()。使用QueryParameters中定义的标准和首选项来返回一组结果。FeatureTable。queryFeatureCountAsync()。:使用QueryParameters返回符合查询条件的特征个数。FeatureTable.queryExtentAsync()。:使用QueryParameters返回满足查询条件的特征的地理范围。FeatureTable queryStatisticsAsync()。使用StatisticsQueryParameters返回所请求的描述数据集中特征的统计数据。ArcGISFeatureTable.queryRelatedFeaturesAsync()。:查找指定特征在其参与的一个或所有关系中的相关特征。
Geometry and a spatial relationship for spatial criteria
您可以为查询定义的一些空间关系包括:
Intersects相交:特征的一部分包含在几何图形中。
Touches触摸:一个特征触摸几何图形的边界。
Crosses交叉:一个特征穿过几何体。
Within内部:一个特征完全被几何图形包围。
Contains包含:部分或全部特征包含在几何图形中。
三、性能注意点
其中提到一个性能注意点:如果不需要使用结果的几何形状(例如,用于显示特征),可以设置查询参数以排除几何形状。排除结果的几何部分可以极大地提高性能,特别是对于包含多个特征或复杂几何的结果。
//设置是否返回几何形状,如果不需要,进行除非能极大提高性能
query.setReturnGeometry(true);
简单的说,如果你查询不需要返回几何结果,你可以排除。这样能极大地提高性能。
四、选中地图上的点或线或面的标识查询操作
Identify标识,就像空间查询的快捷方式。它可以让你快速回答这个问题:这里是什么? 这个用得比较多。
注意:这里提示注意使用GEO方式
The following API is used to identify features in layers. The identify layers methods are defined in GeoView .
下面这个接口在选中地图上点或线或面时使用得比较多,更多接口可以去查英文文档。
identifyLayerAsync(Layer layer, android.graphics.Point screenPoint, double tolerance, boolean returnPopupsOnly, int maximumResults) : Identifies features in a specific layer.
针对graphic overlays图层的一个选中地图上的点或线或面的常用接口如下,更多接口可以去查英文文档。
The following API is used to identify graphics in graphic overlays. The identify graphics overlay methods are defined in GeoView .
identifyGraphicsOverlayAsync(GraphicsOverlay graphicsOverlay, android.graphics.Point screenPoint, double tolerance, boolean returnPopupsOnly, int maximumResults) : Identifies graphics in a specific graphics overlay.
参数说明
screenPoint:用户点击或点击在屏幕上的位置。
tolerance公差:以屏幕点为中心的圆的半径(以像素为单位),在这个半径内可以识别地理要素或图形。returnPopupsOnly: true,只标识弹出窗口。False也用于识别地理元素或图形。
maximumResults:返回的地理元素或图形的最大数量。
返回结果对象IdentifyLayerResult 或IdentifyGraphicsOverlayResult。
// identify Layers to find features
final ListenableFuture<IdentifyLayerResult> future = mMapView
.identifyLayerAsync(featureLayer,screenPoint, tolerance, false, 1);
future.addDoneListener(() -> {
try {
// call get on the future to get the result
IdentifyLayerResult result = future.get();
List<GeoElement> elements = result.getElements();
//elements中选择第一个对象作为选中点或线或面元素。
****
//根据你的需要对选中的要素作相应的操作
上面接口是对指定一个图层进行选中一个点或线或面的操作。也可以对一个group layers或所有layers来操作。这个具体查相应在的文档,这个一般用得不多。很多时候用上面的接口多。不清楚的地方,可以一起交流。
相关官方英文文档网址如下:
https://developers.arcgis.com/android/query-and-edit/query/