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)
            {
               ……
            }
        }





相关文章
|
1月前
|
开发框架 安全 .NET
Microsoft .NET Framework 3.5、4.5.2、4.8.1,适用于 Windows 版本的 .NET,Microsoft C Runtime等下载
.NET Framework是Windows平台的开发框架,包含CLR和FCL,支持多种语言开发桌面、Web应用。常用版本有3.5、4.5.2、4.8.1,系统可同时安装多个版本,确保软件兼容运行。
469 0
Microsoft .NET Framework 3.5、4.5.2、4.8.1,适用于 Windows 版本的 .NET,Microsoft C Runtime等下载
|
9月前
|
人工智能 芯片
D1net阅闻|OpenAI员工疯狂暗示,内部已成功开发ASI?被曝训出GPT-5但雪藏
D1net阅闻|OpenAI员工疯狂暗示,内部已成功开发ASI?被曝训出GPT-5但雪藏
|
7月前
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
263 0
|
11月前
|
Linux API C#
基于 .NET 开发的多功能流媒体管理控制平台
基于 .NET 开发的多功能流媒体管理控制平台
183 9
|
11月前
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
302 5
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
426 0
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
225 7
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
248 0
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
192 0
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?
330 0

热门文章

最新文章