当前位置:首页 > ArcGIS Engine地图查询
//创建要素
IFeature pNFeature = pFC.CreateFeature();
pNFeature.Shape = pPolygon;
pNFeature.set_Value(pFC.FindField(\
pNFeature.Store();
pMapCtrl.Refresh(esriViewDrawPhase.esriViewGeography, pFlyr, pFlyr.AreaOfInterest);
}
catch (Exception Err)
{
MessageBox.Show(Err.Message, \提示\
}
}
CODE:
///
/// 获取查询要素
///
///
///
///
private List
{
try
{
List
//创建SpatialFilter空间过滤器对象
ISpatialFilter pSpatialFilter = new SpatialFilterClass();
IQueryFilter pQueryFilter = pSpatialFilter as ISpatialFilter;
//设置过滤器的Geometry
pSpatialFilter.Geometry = pGeometry;
//设置空间关系类型
pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelContains;
//获取FeatureCursor游标
IFeatureCursor pFeatureCursor = pFeatureLayer.Search(pQueryFilter, false);
//遍历FeatureCursor
IFeature pFeature = pFeatureCursor.NextFeature();
while (pFeature != null)
{
//获取要素对象
pList.Add(pFeature);
pFeature = pFeatureCursor.NextFeature();
}
System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeatureCursor);
return pList;
}
catch (Exception Err)
{
MessageBox.Show(Err.Message, \提示\
return null;
}
}
CODE:
bool bSearch = false; //定义bool变量用于启动多边形查询功能
private void button1_Click(object sender, EventArgs e)
{
try
{
//向地图控件添加内存图层
IFeatureLayer pFeatureLayer =
this.AddFeatureLayerByMemoryWS(this.axMapControl1,this.axMapControl1.SpatialReference);
this.axMapControl1.AddLayer(pFeatureLayer);
//设置鼠标样式为十字丝
this.axMapControl1.MousePointer = esriControlsMousePointer.esriPointerCrosshair;
//启动范围查询功能
bSearch = true;
}
添加一个新的Form在Form上添加一个DataGridView控件用于显示查询结果信息。如图4所示:
CODE:
private void axMapControl1_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e)
{
if (bSearch)
{
//设置鼠标样式为十字丝
this.axMapControl1.MousePointer = esriControlsMousePointer.esriPointerCrosshair;
//获取画定范围的Geometry
IGeometry pGeometry = this.axMapControl1.TrackPolygon();
//添加半透名临时图形
this.AddTransTempEle(this.axMapControl1, pGeometry, false);
IFeatureLayer pFeatureLayer=this.axMapControl1.get_Layer(1) as IFeatureLayer;
//执行查询获取符号条件的要素
List
attribute pAttribute = new attribute();
//设置信息显示窗体中DataGridView的属性
//设置行数pFList.Count+1包括字段名哪一行即表头
pAttribute.dataGridView1.RowCount = pFList.Count+1;
//设置边界风格
pAttribute.dataGridView1.ColumnHeadersBorderStyle. = DataGridViewHeaderBorderStyle.Sunken;
//设置列数
pAttribute.dataGridView1.ColumnCount = pFList[0].Fields.FieldCount;
//遍历第一个要素的字段用于给列头赋值(字段的名称)
for(int m=0;m {
共分享92篇相关文档