ArcGIS Engine中实现图层属性数据的显示
2015-01-15 15:24
330 查看
转载于:http://blog.igevin.info/2010/08/02/wordpress/ArcGIS-Engine-display-layer-property/
本文使用下面三个方法实现图层属性数据的显示:
public static DataTable ShowPropertyTable(ILayer pLayer){……}
public static DataTable ShowIFeatureLayer(IFeatureLayer pLayer){……}
public static DataTable ShowIRasterLayer(IRasterLayer pLayer){……}
方法1功能是将属性数据存入DataTable中,该方法将调用方法2和方法3
方法2功能是将矢量数据的属性信息存入DataTable中
方法3功能是将栅格数据的属性信息存入DataTable中
下面将分别介绍这三个方法。
= TempDataTable;
本文使用下面三个方法实现图层属性数据的显示:
public static DataTable ShowPropertyTable(ILayer pLayer){……}
public static DataTable ShowIFeatureLayer(IFeatureLayer pLayer){……}
public static DataTable ShowIRasterLayer(IRasterLayer pLayer){……}
方法1功能是将属性数据存入DataTable中,该方法将调用方法2和方法3
方法2功能是将矢量数据的属性信息存入DataTable中
方法3功能是将栅格数据的属性信息存入DataTable中
下面将分别介绍这三个方法。
1、将属性数据存入DataTable中
/// ‹summary> /// 显示属性表 /// ‹/summary> /// ‹param name="pLayer">选中的图层‹/param> /// ‹returns>‹/returns> public static DataTable ShowPropertyTable(ILayer pLayer) { DataTable propertyTable = null; if (pLayer is IFeatureLayer) propertyTable = ShowIFeatureLayer((IFeatureLayer)pLayer); else { if (pLayer is IRasterLayer) propertyTable = ShowIRasterLayer((IRasterLayer)pLayer); } return propertyTable; }
2、将矢量数据的属性信息存入DataTable中
/// ‹summary> /// 显示FeatureLayer属性表 /// ‹/summary> /// ‹param name="pLayer">选中的图层‹/param> /// ‹returns>‹/returns> public static DataTable ShowIFeatureLayer(IFeatureLayer pLayer) { DataTable propertyTable = new DataTable("Feature Layer Property"); IFeatureClass pFeatureClass = pLayer.FeatureClass; string shape = string.Empty; switch (pFeatureClass.ShapeType) { case esriGeometryType.esriGeometryPoint: shape = "Point"; break; case esriGeometryType.esriGeometryPolyline: shape = "Polyline"; break; case esriGeometryType.esriGeometryPolygon: shape = "Polygon"; break; } for (int i = 0; i < pFeatureClass.Fields.FieldCount; i++) { DataColumn tempColumn = new DataColumn(pFeatureClass.Fields.get_Field(i).Name); propertyTable.Columns.Add(tempColumn); } IFeatureCursor pCursor = pFeatureClass.Search(null, false); IFeature pFeature = pCursor.NextFeature(); int shapeIndex = pFeature.Fields.FindField("shape"); while (pFeature != null) { DataRow tempRow = propertyTable.NewRow(); for (int i = 0; i < pFeature.Fields.FieldCount; i++) { if (i == shapeIndex) tempRow[i] = shape; else { tempRow[i] = pFeature.get_Value(i); } } propertyTable.Rows.Add(tempRow); pFeature = pCursor.NextFeature(); } return propertyTable; }
3、将栅格数据的属性信息存入DataTable中
/// ‹summary> /// 显示栅格图层属性表 /// ‹/summary> /// ‹param name="pLayer">选中的图层‹/param> /// ‹returns>‹/returns> public static DataTable ShowIRasterLayer(IRasterLayer pLayer) { IRaster pRaster = pLayer.Raster; IRasterProps pRasterProps = pRaster as IRasterProps; pRasterProps.PixelType = rstPixelType.PT_LONG; if (pRasterProps.PixelType == rstPixelType.PT_LONG) { IRasterBandCollection pRBCollection = pRaster as IRasterBandCollection; IRasterBand pRasterBand = pRBCollection.Item(0); ITable pRTable = pRasterBand.AttributeTable; DataTable propertyTable = new DataTable("Raster Layer Property"); for (int i = 0; i < pRTable.Fields.FieldCount; i++) { DataColumn tempColumn = new DataColumn(pRTable.Fields.get_Field(i).Name); propertyTable.Columns.Add(tempColumn); } ICursor pCursor = pRTable.Search(null, false); IRow pRow = pCursor.NextRow(); while (pRow != null) { DataRow tempRow = propertyTable.NewRow(); for (int i = 0; i < pRow.Fields.FieldCount; i++) tempRow[i] = pRow.get_Value(i).ToString(); propertyTable.Rows.Add(tempRow); pRow = pCursor.NextRow(); } return propertyTable; } return null; }
4、显示属性数据
通过上面的方法,我们把属性数据存入DataTable中,假设这个DataTable为TempDataTable,要显示数据,需要加一个控件DataGridView,定义变量名为TempDataGridView,然后写这句话:empDataGridView.DataSource= TempDataTable;
相关文章推荐
- ArcGIS Engine利用动态图层实现数据的实时显示
- 【转】利用动态图层实现数据的实时显示
- 解决WinForm中ComboBox控件的“设置"DataSourse”属性后无法修改项集合”以及两个不相关联的ComboxBox控件实现数据列表显示不可实现的问题
- 属性动画图片从上移动到屏幕中间,放大图片的二倍再缩小到原来,自定义圆实现倒计时,解析数据显示,点击条目实现js交互
- 利用动态图层实现数据的实时显示(arcEngine IDynamiclayer)
- 利用动态图层实现数据的实时显示
- 利用动态图层实现数据的实时显示
- AE实现右键点击TOC控件任意图层显示属性表
- AE实现右键点击TOC控件任意图层显示属性表
- skyline 6.6.1 javascript实现遍历树,然后获取图层树中的属性数据
- 属性动画图片从上移动到屏幕中间,放大图片的二倍再缩小到原来,自定义圆实现倒计时,解析数据显示,点击条目实现js交互
- XML+XSLT实现表格颜色交替,某列背景根据数据显示不同颜色
- 实现千万级数据的分页显示
- Delphi中多线程用消息实现VCL数据同步显示
- vc嵌入Word后怎莫实现数据的同步刷新及在视图里显示所有文字
- 在winform开发中,将集合类型(ArrayList)邦定到控件上,实现集合与控件中显示的数据同步
- 实现千万级数据的分页显示!
- 利用ASP实现Oracle数据记录的分页显示
- 实现千万级数据的分页显示
- VB如何实现摄像头数据的捕获与显示