arcgis的查询和识别接口功能解读

一、查询条件参数介绍

查询提供了基于属性、空间和时间(时间)标准的任意组合从数据集中返回特征子集的能力。
属性条件是使用基于可用属性字段的标准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/

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ArcGIS Engine 提供了丰富的属性查询功能,可以帮助用户在地图上快速定位和筛选数据。以下是一个简单的 C# 代码示例,演示如何在 ArcGIS Engine 中进行属性查询: ```csharp using ESRI.ArcGIS.ADF; using ESRI.ArcGIS.ADF.Connection.Local; using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.Geodatabase; using ESRI.ArcGIS.Geometry; // 创建一个工作空间连接到本地数据库 IWorkspaceFactory workspaceFactory = new AccessWorkspaceFactoryClass(); IWorkspace workspace = workspaceFactory.OpenFromFile("C:\\data\\example.mdb", 0); // 获取一个要素类 IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspace; IFeatureClass featureClass = featureWorkspace.OpenFeatureClass("example_feature_class"); // 创建一个查询过滤器 IQueryFilter queryFilter = new QueryFilterClass(); queryFilter.WhereClause = "value > 1000"; // 查询条件 // 查询符合条件的要素 IFeatureCursor featureCursor = featureClass.Search(queryFilter, false); IFeature feature = featureCursor.NextFeature(); while (feature != null) { // 处理要素 IGeometry geometry = feature.Shape; Console.WriteLine(geometry.Envelope); feature = featureCursor.NextFeature(); } ``` 上述代码演示了如何连接到本地数据库,获取要素类,创建查询过滤器,并使用查询过滤器查询符合条件的要素。请注意,这只是属性查询功能的一个简单示例,实际上 ArcGIS Engine 提供了更多的高级功能和工具,如空间查询、属性统计和 SQL 表达式等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值