ArcGIS Runtime SDK for .NET (查询功能实现)

网友投稿 872 2022-11-12

ArcGIS Runtime SDK for .NET (查询功能实现)

ArcGIS Runtime SDK for .NET (查询功能实现)

1、界面设计

2、C#代码实现

简单查询

private async Task QueryStateFeature3(FeatureLayer _featureLayer, string sQueryFieldName, string stateName){ try { // 定义 一个查询参数对象 QueryParameters pQueryP = new QueryParameters(); string sformat = stateName.Trim().ToUpper(); // 去掉地名两边的空格,并转为大写 // 设置查询条件 pQueryP.WhereClause = "upper(" + sQueryFieldName + ") LIKE '%" + sformat + "%'"; // where语句,将字段名转成大写 // 依据查询参数,进行要素选择操作 //Esri.ArcGISRuntime.Mapping.SelectionMode.Add 将要选择的要素附加到当前选定要素列表中。 //Esri.ArcGISRuntime.Mapping.SelectionMode.New 将当前选定要素列表替换为要选定的要素。 //Esri.ArcGISRuntime.Mapping.SelectionMode.Subtract 从当前选定要素列表中删除要素。 //_featureLayer.SelectFeaturesAsync(查询表达式,查询模式) await _featureLayer.SelectFeaturesAsync(pQueryP, Esri.ArcGISRuntime.Mapping.SelectionMode.New); // 等待其查询完毕 //提取已选择的要素 //_featureLayer.GetSelectedFeaturesAsync() 表示异步获取选定功能操作的任务对象。任务结果的值是FeatureQueryResult对象;仅显示选定的功能。 FeatureQueryResult pQueryResult = await _featureLayer.GetSelectedFeaturesAsync(); // 存到列表中 List pListFeatures = pQueryResult.ToList(); //使用空间引用和空几何体初始化EnveloperBuilder类的新实例。 EnvelopeBuilder pEnvBuilder = new EnvelopeBuilder(MyMapView.Map.SpatialReference); for (int i = 0; i < pListFeatures.Count; i++) { //查找此生成器形状和给定形状的并集。此生成器的形状将根据结果进行更新。 pEnvBuilder.UnionOf(pListFeatures[i].Geometry.Extent); } //缩放到提供的几何体。即使几何体不规则,下面的函数会自动找出可以包含进所有外形的矩形,并向外扩展50像素。 await MyMapView.SetViewpointGeometryAsync(pEnvBuilder.ToGeometry(), 50); //显示选择要素的属性。 } catch (Exception ex) { MessageBox.Show("An error occurred.\n" + ex, "Sample error"); }}// 简单查询private async void easyQuery(object sender, RoutedEventArgs e){ string sQueryFieldName = "Name"; //图层字段名 string stateName = "New York"; //图层字段名里的某个属性 //获取图层,该图层为实例1中加载FeatureLayer数据,默认放在第一层(图层名为 “States” ) // Map.OperationalLayers 获取或设置映射中操作层的集合。 FeatureLayer _featureLayer = MyMapView.Map.OperationalLayers[0] as FeatureLayer; if (_featureLayer != null) await QueryStateFeature3(_featureLayer, sQueryFieldName, stateName); // 调用方法}

enum CURRENTOPERATION{ NullOpe = -1, SelectQuery = 0, IdentifyQuery, PanMap,};namespace classTest{ public partial class MainWindow : Window { ...... CURRENTOPERATION m_CurOper; public MainWindow() { ...... m_CurOper = CURRENTOPERATION.NullOpe; ...... } ...... } ......}

除了下面代码外,还需要添加上面图中的代码

3、结果

​​简单查询​​

​​identity查询​​

箴言:因为这些东西是非常简单的。不要抱怨自己学不会,那是因为你没有足够用心。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:jQuery - AJAX load() 方法
下一篇:WPF 排版基础
相关文章

 发表评论

暂时没有评论,来抢沙发吧~