




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Arcengine 属性查图空间数据查询按查询方式来分,主要分为两类:根据属性条件查询对象和根据几何条件查询对象。无论是根据属性还是根据几何来查询对象,都必须设置相应的查询条件。在ArcGIS Engine中,FeatureLayer对象和IFeatureClass对象有一个Search()方法专门用于空间数据查询,同时ArcGIS Engine中提供了一个IQueryFilter接口来设置查询的条件(属性条件和几何条件)。首先来看一下IFeatureLayer接口的Search()方法,其定义如下:public IFeatureCursor Search (IQueryFilter queryFilter, bool recycling);该方法有两个参数:第一个参数queryFilter为一个IQueryFilter对象,用于指定查询的条件了;第二个参数recycling为一个Bool数据类型,表示查询结果游标是否循环。该方法的返回值为一个IFeatureCursor对象,该游标对象表示查询的结果对象。下面就分别根据属性条件查询对象和根据几何条件查询对象来介绍空间数据查询的过程:一、根据属性条件查询对象首先新建一个项目,设置项目名称为“空间数据查询”,并在窗体上添加如下图所示控件(axMapControl1、axTOCControl1、axLicenseControl1、axToolbarControl1):同时为了便于设置条件来查询对象,添加如下图所示控件(layerComboBox、queryFiltertextBox和根据属性条件查询对象):其中,layerComboBox控件用于表示要查询的图层,queryFiltertextBox控件表示查询的条件。1、定义刷新图层函数在每次添加新数据或打开新地图时,都要更新layerComboBox控件中的显示项来表示当前地图中的图层。定义刷新图层函数RefreshLayer(),其代码如下: privatevoidRefreshLayer()layerComboBox.Items.Clear(); for(inti = 0; i 2) DrawPolygon(pointCollection, axMapControl1); 4)查询范围内对象设计当鼠标在axMapControl1控件上双击时即完成面范围的绘制,所以执行面范围的查询就在axMapControl1的OnDoubleClick()事件中,如下代码所示: private void axMapControl1_OnDoubleClick(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnDoubleClickEvent e) if(DoQueryIndex = 2)/面范围查询 ESRI.ArcGIS.Geometry.IPoint point = new ESRI.ArcGIS.Geometry.PointClass(); point.PutCoords(e.mapX, e.mapY); pointCollection.AddPoints(1, ref point); if (pointCollection.PointCount 2) axMapControl1.Refresh(); ESRI.ArcGIS.Carto.IFeatureLayer pFeatureLayer = axMapControl1.get_Layer(layerComboBox.SelectedIndex) as ESRI.ArcGIS.Carto.IFeatureLayer; ESRI.ArcGIS.Geometry.IPolygon pPolygon; pPolygon = (ESRI.ArcGIS.Geometry.IPolygon)pointCollection; ESRI.ArcGIS.Geodatabase.ISpatialFilter spatialFilter = new ESRI.ArcGIS.Geodatabase.SpatialFilterClass(); spatialFilter.Geometry = pPolygon; spatialFilter.SpatialRel = ESRI.ArcGIS.Geodatabase.esriSpatialRelEnum.esriSpatialRelIntersects; ESRI.ArcGIS.Geodatabase.IFeatureCursor featureCursor = pFeatureLayer.Search(spatialFilter, false); ESRI.ArcGIS.Geodatabase.IFeature pFeature; int featureCount = 0; while (pFeature = featureCursor.NextFeature() != null) axMapControl1.FlashShape(pFeature.Shape); featureCount+; MessageBox.Show(选择范围内共有 + featureCount.ToString() + 个对象!); 调用几何条件查询在“根据几何条件查询对象”按钮的Click()事件中完成,所以在调用面范围查询时还需要对全局变量pointCollection进行实例化,所以“根据几何条件查询对象”按钮Click()事件的代码如下: private void 根据几何条件查询对象_Click(object sender, EventArgs e) if (根据几何条件查询对象.Text = 根据几何条件查询对象) if (pointRadioButton.Checked)/点击查询 DoQueryIndex = 1; else if (polygonRadioButton.Checked)/面范围查询 DoQueryIndex = 2; pointCollection = new ESRI.ArcGIS.Geometry.PolygonClass(); 根据几何条件查询对象.Text = 停止几何条件查询对象; else 根据几何条件查询对象.Text = 根据几何条件查询对象; DoQueryIndex = 0; onclick=SMISActionStart(MapControl1,POINTQUERY);框查 onclick=SMISActionStart(MapControl1,RECTQUERY);圆查 onclick=SMISActionStart(MapControl1,CIRCLEQUERY);多边形查 onclick=SMISActionStart(MapControl1,POLYGONQUERY);usingSystem;usingSystem.Collections;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Web;usingSystem.Web.SessionState;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.HtmlControls;/引用的空间usingSuperMap.IS.Utility;usingSuperMap.IS.WebControls;namespacetest/*/WebForm1的摘要说明。/publicclassWebForm1:System.Web.UI.PageprotectedSuperMap.IS.WebControls.MapControlMapControl1;protectedSuperMap.IS.WebControls.ToolbarControlToolbarControl1;protectedSuperMap.IS.WebControls.ViewEntireToolControlViewEntireToolControl1;protectedSuperMap.IS.WebControls.QuickZoomInToolControlQuickZoomInToolControl1;protectedSuperMap.IS.WebControls.QuickZoomOutToolControlQuickZoomOutToolControl1;protectedSuperMap.IS.WebControls.PanToolControlPanToolControl1;protectedSuperMap.IS.WebControls.ZoomInToolControlZoomInToolControl1;protectedSuperMap.IS.WebControls.ZoomOutToolControlZoomOutToolControl1;protectedSuperMap.IS.WebControls.ViewPreviousToolControlViewPreviousToolControl1;protectedSuperMap.IS.WebControls.ViewNextToolControlViewNextToolControl1;protectedSystem.Web.UI.WebControls.TextBoxTextBox1;protectedSystem.Web.UI.WebControls.DataGridDataGrid1;protectedSuperMap.IS.WebControls.OverviewControlOverviewControl1;protectedSuperMap.IS.WebControls.LayerControlLayerControl1;protectedSystem.Web.UI.WebControls.LabelLabel1;protectedSystem.Web.UI.WebControls.ButtonButton1;privatevoidPage_Load(objectsender,System.EventArgse)this.MapControl1.ClearHighLight();if(!Page.IsPostBack)this.TextBox1.Text=伪皇宫;/在此处放置用户代码以初始化页面Web窗体设计器生成的代码#regionWeb窗体设计器生成的代码overrideprotectedvoidOnInit(EventArgse)/CODEGEN:该调用是ASP.NETWeb窗体设计器所必需的。/InitializeComponent();base.OnInit(e);/*/设计器支持所需的方法-不要使用代码编辑器修改/此方法的内容。/privatevoidInitializeComponent()this.MapControl1.QueryCompleted+=newSuperMap.IS.WebControls.MapControl.QueryCompletedEventHandler(this.MapControl1_QueryCompleted);this.MapControl1.Querying+=newSuperMap.IS.WebControls.MapControl.QueryingEventHandler(this.MapControl1_Querying);this.Button1.Click+=newSystem.EventHandler(this.Button1_Click);this.Load+=newSystem.EventHandler(this.Page_Load);#endregionprivatevoidButton1_Click(objectsender,System.EventArgse)QueryParamq=newQueryParam();/定义一个New查询参数设置对象queryParam,查询参数设置,包括查询/的图层、查询条件语句以及返回的字段等,然后根据查询参数进行SQL查询q.IsAllLayer=false;/设置是否查询地图中所有的图层信息,如果该值设置为false,则需要对每一个/待查询的图层分别进行查询条件的设置q.Layers=newQueryLayer1;q.Layers0=newQueryLayer();/设置查询图层的对象q.Layers0.Name=Parkchangchun;/“图层地图”q.Layers0.ReturnFields=newstring2;/设置查询结果中需要返回那些属性字段q.Layers0.ReturnFields0=SMID;q.Layers0.ReturnFields1=name;q.Layers0.WhereClause=namelike*+this.TextBox1.Text.ToString()+*;ResultSetrs=this.MapControl1.QueryBySQL(q);DataSetds=rs.ToDataSet();this.DataGrid1.DataSource=ds;this.DataGrid1.DataBind();/查询前触发privatevoidMapControl1_Querying(objectsender,SuperMap.IS.WebControls.EventArguments.QueryingEventArgse)e.Params.HasGeometry=false;/是否查询空间数据。/True,表示要取空间数据;False,表示不取空间数据e.Params.IsAllLayer=false;e.Params.Highlight=true;e.Params.Layers=newQueryLayer1;e.Params.Layer
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河湖生态环境现状与问题分析
- 融合产业链优化内外贸一体化发展的战略
- 门店储干培训
- 2025年高压电磁阀项目立项申请报告模板
- 神经内科病患护理
- 安装安全培训
- 分级护理一级质量检查
- 西南交通大学希望学院《生物化学A》2023-2024学年第一学期期末试卷
- 湖南师范大学《体育Ⅱ》2023-2024学年第一学期期末试卷
- 湖北恩施学院《能源转换原理B》2023-2024学年第一学期期末试卷
- 第三章葡萄酒酿造2
- 每天100道语法填空题过高考英语高频词汇12
- 配电室巡检记录表
- 数字程控交换机系统技术规范书
- 卓越绩效评价准则概述(专业性权威性实用性)
- GB 1886.20-2016食品安全国家标准食品添加剂氢氧化钠
- 国资进场交易工作流程讲座
- 当代法律英语翻译全
- 制冷操作证培训教材制冷与空调设备运行操作作业培训教程课件
- 湖南省长沙市望城区2020-2021学年八年级下学期期末考试历史试卷
- 下承式钢桁梁桥结构设计及优化 (跨度64m)
评论
0/150
提交评论