第一范文网 - 专业文章范例文档资料分享平台

ArcGIS Engine二次开发 - 基础篇

来源:用户分享 时间:2025/6/6 14:58:03 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

ArcGIS Engine二次开发——基础篇

图 5引用添加位置

之后在控件TextBox的事件中选择KeyUp,在KeyUp事件中添加以下代码:

图 6KeyUp方法

private void txtStateName_KeyUp(object sender, KeyEventArgs e) {

//判断鼠标键值,如果Enter键按下抬起后,进入查询 if (e.KeyCode==Keys.Enter) {

//定义图层,要素游标,查询过滤器,要素 IFeatureLayer pFeatureLayer; IFeatureCursor pFeatureCursor;

ArcGIS Engine二次开发——基础篇

IQueryFilter pQueryFilter; IFeature pFeature;

//获取图层

pFeatureLayer = this.axMapControl1.Map.get_Layer(0) as IFeatureLayer; //如果图层名称不是states,程序退出 if (pFeatureLayer.Name != \bou2_4p\) return; //清除上次查询结果

this.axMapControl1.Map.ClearSelection();

//pQueryFilter的实例化

pQueryFilter = new QueryFilterClass(); //设置查询过滤条件

pQueryFilter.WhereClause = \ + txtStateName.Text + \; //查询

pFeatureCursor = pFeatureLayer.Search(pQueryFilter, true); //获取查询到的要素

pFeature = pFeatureCursor.NextFeature();

//判断是否获取到要素 if (pFeature!=null) {

//选择要素

this.axMapControl1.Map.SelectFeature(pFeatureLayer, pFeature); //放大到要素

this.axMapControl1.Extent = pFeature.Shape.Envelope; } else {

//没有得到pFeature的提示

MessageBox.Show(\没有找到名为\ + txtStateName.Text + \的省\, \提示\); } } }

运行程序,分别向编辑框中输入“吉林省”和“长春省”,键入回车,如下图所示:

ArcGIS Engine二次开发——基础篇

图 7吉林省查询结果

图 8长春省查询结果

注释:

if (e.KeyCode==Keys.Enter)

上述代码是一个判断语句,即当用户输入回车的时候,开始进行查询。

下面两行代码是定义查询的范围,默认为上一小节中添加的图层“bou2_4p”,如果找

ArcGIS Engine二次开发——基础篇

不到这个图层则自动退出。

//获取图层

pFeatureLayer = this.axMapControl1.Map.get_Layer(0) as IFeatureLayer; //如果图层名称不是states,程序退出 if (pFeatureLayer.Name != \ bou2_4p \) return;

//清除上次查询结果

this.axMapControl1.Map.ClearSelection();

下面部分是生成一个新的查询器,选择条件(WhereClause)就是检索是否有与用户输

入相符的州,并将结果从查询得到的pCursor中读取出来。

//pQueryFilter的实例化

pQueryFilter = new QueryFilterClass(); //设置查询过滤条件

pQueryFilter.WhereClause = \ + txtStateName.Text + \; //查询

pFeatureCursor = pFeatureLayer.Search(pQueryFilter, true); //获取查询到的要素

pFeature = pFeatureCursor.NextFeature();

下面部分是一个判断语句,若查询得到的结果为空,则刷新地图,弹出对话框通知用户没有查询到结果,并退出程序。如果查询得到的结果不为空,则将这个结果加入地图的选择集,并将地图的显示范围定为查询结果的外轮廓,这样得到的州将高亮显示同时居中放大到屏幕中心。

//判断是否获取到要素

if (pFeature!=null) {

//选择要素

this.axMapControl1.Map.SelectFeature(pFeatureLayer, pFeature); //放大到要素

this.axMapControl1.Extent = pFeature.Shape.Envelope; } else {

//没有得到pFeature的提示

MessageBox.Show(\没有找到名为\ + txtStateName.Text + \的省\, \提示\); }

1.2.3 小结

这一部分中,我们接触到了基本的属性查询。但是在这个例子中,我们不能实现对属性表中任意属性字段的查询(在这个程序中,我们只能查询省名——NAME,而不能对别的字段进行查询),而且这个查询不支持模糊查询。为了使查询变的更加丰富,更加人性化,

搜索更多关于: ArcGIS Engine二次开发 - 基础篇 的文档
ArcGIS Engine二次开发 - 基础篇.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c7jtd51ahpq2p7v440mgc_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top