C#二次开发ArcGIS查询功能 联系客服

发布时间 : 星期日 文章C#二次开发ArcGIS查询功能更新完毕开始阅读20adc4bcd0f34693daef5ef7ba0d4a7302766c08

[地理信息系统课程设计报告]

return;

}

if (txtUserName.Text.Length <= 0) {

MessageBox.Show(\用户名不能为空!\); return;

}

if (txtpwdPassword.Text.Length <= 0) {

MessageBox.Show(\密码不能为空!\); return;

}

SqlHelper.NonQuery(@\ + txtUserName.Text + \ + txtpwdPassword.Text + \);

MessageBox.Show(\恭喜\ + txtUserName.Text + \注册成功!请重新登录\, \注册\); txtUserName.Text = \; txtpwdPassword.Text = \; } } }

2、属性查询源码

using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text;

using System.Windows.Forms; using ESRI.ArcGIS.Controls; using ESRI.ArcGIS.Carto;

using ESRI.ArcGIS.Geodatabase; using ESRI.ArcGIS.Display; namespace MyMap {

publicpartialclassAttributeQueryForm : Form {

//存储地图数据

privateAxMapControl mMapControl; privateDataGridView dataGrid;

//存储当前选中图层,IFeatureLayer继承自ILayer privateIFeatureLayer mFeatureLayer;

[地理信息系统课程设计报告]17 / 38

[地理信息系统课程设计报告]

//通过构造函数来传值

public AttributeQueryForm(AxMapControl mapcontrol, DataGridView dataGridView) {

InitializeComponent();

this.mMapControl = mapcontrol; this.dataGrid = dataGridView; }

public AttributeQueryForm() { }

privateint GetLayerindexbyName(string cbolayername) { int i;

for (i = 0; i < mMapControl.LayerCount; i++) {

if (cbolayername == mMapControl.get_Layer(i).Name) break;

} return i; }

privatevoid btnOk_Click(object sender, EventArgs e) {

if (txtValue.Text == \) {

MessageBox.Show(\请输入您要查询什么\); return;

}

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

IFeatureSelection pFeatureSelection; IActiveView activeview; IFeature pFeature; //获取图层

pFeatureLayer = this.mMapControl.Map.get_Layer(GetLayerindexbyName(cboLayer.Text)) asIFeatureLayer;

//如果图层名称不是cboLayer.Text,程序退出 if (pFeatureLayer.Name != cboLayer.Text) return;

//清除上次查询结果

this.mMapControl.Map.ClearSelection();

activeview = this.mMapControl.Map asIActiveView;

//IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass; //pQueryFilter的实例化

[地理信息系统课程设计报告]18 / 38

[地理信息系统课程设计报告]

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

pQueryFilter.WhereClause = \ + cboField.Text + \ + txtValue.Text + \; //基于查询条件创建指针并回收

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

pFeature = DisplayToDataGridDAL.GetFeature(pFeatureCursor); //获取查询到的要素

pFeatureSelection = pFeatureLayer asIFeatureSelection; //根据查询条件选择要素

pFeatureSelection.SelectFeatures(pQueryFilter,

esriSelectionResultEnum.esriSelectionResultNew, false); //QI到ISelectionSet

ISelectionSet pSelectionSet = pFeatureSelection.SelectionSet; //判断是否获取到要素 if (pFeature!=null) {

//The selection set that defines the subset of features in a selection layer. //ISelectionSet DefinitionSelectionSet { get; }只读属性

IFeatureLayerDefinition pFDefinition = pFeatureLayer asIFeatureLayerDefinition; //创建新图层

IFeatureLayer pNewFeatureLayer = pFDefinition.CreateSelectionLayer(\, true, null, null);

pNewFeatureLayer.Name = \查询结果\; mMapControl.AddLayer(pNewFeatureLayer asILayer); //获取最小外包矩形并放大到当前视图范围

activeview.Extent =pFeature.Shape.Envelope; activeview.Refresh(); } else

{

//没有得到pFeature的提示

MessageBox.Show(\没有找到\ + txtValue.Text, \提示\); return;

}

//把查询到的要素的属性显示到DataGridView中

DisplayToDataGridDAL.Dataview(pFeatureCursor, dataGrid,pFeatureLayer); this.mMapControl.DeleteLayer(0); this.mMapControl.Refresh();

}

privatevoid AttributeQueryForm_Load(object sender, EventArgs e) {

//MapControl中没有图层时返回

if (this.mMapControl.LayerCount <= 0)

[地理信息系统课程设计报告]19 / 38

[地理信息系统课程设计报告]

return;

//获取MapControl中的全部图层名称,并加入ComboBox //图层

ILayer pLayer; //图层名称

string strLayerName;

for (int i = 0; i

pLayer = this.mMapControl.get_Layer(i); strLayerName = pLayer.Name; //图层名称加入cboLayer

this.cboLayer.Items.Add(strLayerName); }

//默认显示第一个选项

this.cboLayer.SelectedIndex = 0;

}

privatevoid cboLayer_SelectedIndexChanged(object sender, EventArgs e) {

this.cboField.Items.Clear(); //获取cboLayer中选中的图层

mFeatureLayer = mMapControl.get_Layer(cboLayer.SelectedIndex) asIFeatureLayer; //要素集合

IFeatureClass pFeatureClass = mFeatureLayer.FeatureClass; //字段名称

string strFldName;

for (int i = 0; i < pFeatureClass.Fields.FieldCount; i++) {

strFldName = pFeatureClass.Fields.get_Field(i).Name; //图层名称加入cboField

this.cboField.Items.Add(strFldName); }

//默认显示第一个选项

this.cboField.SelectedIndex = 0; }

privatevoid btnCancel_Click(object sender, EventArgs e) { this.Close(); } } }

[地理信息系统课程设计报告]20 / 38