ArcGIS Runtime for .Net Quartz开发探秘(六):空间查询与识别

简介: 空间查询 ArcGIS Runtime 100.0中,空间查询发生了很大的变化,之前的QueryTask、FindTask、IdentifyTask统统不见了。取而代之的是FeatureTable的QueryFeaturesAsync()方法。

空间查询

ArcGIS Runtime 100.0中,空间查询发生了很大的变化,之前的QueryTask、FindTask、IdentifyTask统统不见了。取而代之的是FeatureTable的QueryFeaturesAsync()方法。
FeatureTable一个抽象类,FeatureTable有两个子类:ArcGISFeatureTable和FeatureCollectionTable。而ArcGISFeatureTable又有两个子类,分别是GeodatabaseFeatureTable和ServiceFeatureTable。他们分别来自.geodatabase文件和网络地图服务的要素表,并且都实现了QueryFeaturesAsync()方法。
下面就来看FeatureTable的QueryFeaturesAsync()方法怎么使用。其中,fl为FeatureLayer实例。
FeatureTable ft = fl.FeatureTable;
QueryParameters queryParameters = new QueryParameters();
FeatureQueryResult queryResult = await ft.QueryFeaturesAsync(queryParameters);
QueryResult是一个实现了IEnumerable接口的类,因此,我们可以这样操作它,获取查询结果。
foreach (var feature in queryResult)
{
    var geometry = feature.Geometry;
    var value = feature.Attributes["fieldname"];
}

当然,feature的geometry属性并不是总是返回的,如果不对QueryParameters做设置,查询默认是不返回要素的geometry属性的,毕竟geometry属性的查询、传输代价还是挺大的。

接下来看看QueryParameters的其他参数。


Geometry属性,用于空间过滤,设置了这个属性值后,将只在Geometry对象的范围内查询要素。
MaxAllowableOffset属性,用于设置最大偏离值,这个用于配合Geometry使用。
MaxFeatures属性,设置最大返回要素数。
OutSpatialReference属性,要素输出时的坐标系。
SpatialRelationship属性,返回要素与空间过滤要素的空间关系,有Relate、Equals、Within等等。
WhereClause属性,查询时所用的Where语句。

要素识别

在GIS App中,往往需要通过与用户交互展现地理信息。ArcGIS Runtime 中提供的Identify方法则允许识别用户所点击的要素。

通过代码来看怎么实现:

在MainWindow主函数中,先注册Mapview的点击事件。

MyMapView.GeoViewTapped += OnMapViewTapped;
OnMapViewTapped事件响应如下:
private async void OnMapViewTapped(object sender, GeoViewInputEventArgs e)
        {
            var tolerance = 10d; // 设置容差
            var maximumResults = 1; // 设置只返回单个要素  
            var onlyReturnPopups = false; // 是否只返回Popups

           
           IdentifyGraphicsOverlayResult identifyResults = await MyMapView.IdentifyGraphicsOverlayAsync(
                _polygonOverlay,//待识别的图层
                e.Position,
                tolerance, 
                onlyReturnPopups, 
                maximumResults);

            // 如果有返回值
            if (identifyResults.Graphics.Count > 0)
            {
               ……
            }
        }





相关文章
|
9天前
|
设计模式 开发框架 JavaScript
基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!
基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!
|
8天前
|
存储 缓存 NoSQL
2款使用.NET开发的数据库系统
2款使用.NET开发的数据库系统
|
8天前
|
开发框架 JavaScript 前端开发
2024年全面且功能强大的.NET快速开发框架推荐,效率提升利器!
2024年全面且功能强大的.NET快速开发框架推荐,效率提升利器!
|
1月前
|
JSON C# 开发者
C#语言新特性深度剖析:提升你的.NET开发效率
【10月更文挑战第15天】C#语言凭借其强大的功能和易用性深受开发者喜爱。随着.NET平台的演进,C#不断引入新特性,如C# 7.0的模式匹配和C# 8.0的异步流,显著提升了开发效率和代码可维护性。本文将深入探讨这些新特性,助力开发者在.NET开发中更高效地利用它们。
34 1
|
人工智能 数据可视化 API
ArcGIS API for Python
ArcGIS API for Python
70 0
|
JavaScript 前端开发 应用服务中间件
Arcgis api for javascript 详细部署
Arcgis api for javascript 详细部署
|
人工智能 数据可视化 数据管理
ArcGIS API for Python
ArcGIS API for Python
114 0
|
数据可视化 数据管理 API
​​​​​​​ARCGIS API for Python进行城市区域提取
​​​​​​​ARCGIS API for Python进行城市区域提取
​​​​​​​ARCGIS API for Python进行城市区域提取
arcgis api 3.X 修改自带弹窗样式 2022年6月12日
自带的弹窗介绍: arcgis api 3.X 修改自带弹窗样式插图 /*修改原有弹窗的css样式*/ /* 弹窗整体 */ .esriPopup { font-size: 16px; box-shadow: 10px 10px 5px #888888; } .esriPopup .sizer { position: relative; width: 400px; /* 弹窗宽度 */ z-index: 1; } /* 标题部分 */ .esriPopup .titlePane { background-color: rgba(7
|
JavaScript 前端开发 定位技术
ArcGIS API For JavaScript官方文档(六)之设置范围
ArcGIS API For JavaScript官方文档(六)之设置范围

热门文章

最新文章

下一篇
无影云桌面