AE二次开发-获取图层的属性表
Arcgis Engine二次开发C#常用库封装:Github源码
获取矢量或栅格图层的属性表,且可以指定获取的行数。
可以根据字段属性设置数据表的列属性。
/// <summary>/// 获取图层的属性表/// </summary>/// <param name="layer">图层</param>/// <param name="rowCount">指定获取的行数</param>/// <returns>属性表</returns>public static DataTable GetAttributeTable(ILayer layer, long rowCount = -1){ITable iTable = null;if (layer is IFeatureLayer){iTable = (ITable)layer;}else{IRasterLayer rasLayer = layer as IRasterLayer;//判断是否存在属性表if (rasLayer != null && IsRasterLayerHaveTable(rasLayer.Raster)){iTable = (ITable)layer;}}if (iTable == null) return null;DataTable dataTable = new DataTable();IFields fields = iTable.Fields;for (int i = 0; i < fields.FieldCount; i++){dataTable = AddTableColumnsByField(fields.Field[i], dataTable);}string shapeType = FeatureFunction.GetShapeType(layer);ICursor pCursor = iTable.Search(null, false);IRow pRow = pCursor.NextRow();while (pRow != null){//新建DataTable的行对象DataRow pDataRow = dataTable.NewRow();for (int i = 0; i < pRow.Fields.FieldCount; i++){//如果字段类型为esriFieldTypeGeometry,则根据图层类型设置字段值switch (pRow.Fields.Field[i].Type){case esriFieldType.esriFieldTypeGeometry:pDataRow[i] = shapeType;break;case esriFieldType.esriFieldTypeBlob:pDataRow[i] = "Element";break;default:pDataRow[i] = pRow.Value[i];break;}}//添加DataRow到DataTabledataTable.Rows.Add(pDataRow);pRow = pCursor.NextRow();//设置指定的行数if (rowCount != -1 && dataTable.Rows.Count == rowCount){break;}}return dataTable;}/// <summary>/// 判断栅格图层是否拥有属性表/// </summary>/// <param name="pRaster">栅格</param>/// <returns>是否拥有属性表</returns>public static bool IsRasterLayerHaveTable(IRaster pRaster){IRasterProps pProp = pRaster as IRasterProps;if (pProp == null){return false;}if (pProp.PixelType == rstPixelType.PT_FLOAT || pProp.PixelType == rstPixelType.PT_DOUBLE) //判断栅格像元值是否是整型{return false;}IRasterBandCollection pRasterbandCollection = (IRasterBandCollection)pRaster;IRasterBand rasterBand = pRasterbandCollection.Item(0);ITable rTable = rasterBand.AttributeTable;return rTable != null;}/// <summary>/// 根据字段属性设置数据表的列属性/// </summary>/// <param name="field">字段</param>/// <param name="table">数据表</param>/// <returns>数据表</returns>public static DataTable AddTableColumnsByField(IField field, DataTable table){//新建一个DataColumn并设置其属性DataColumn pDataColumn = new DataColumn(field.Name);//字段值是否允许为空pDataColumn.AllowDBNull = field.IsNullable;//字段别名pDataColumn.Caption = field.AliasName;//字段数据类型pDataColumn.DataType = Type.GetType(ConvertFieldType(field.Type));//字段默认值pDataColumn.DefaultValue = field.DefaultValue;//当字段为String类型是设置字段长度if (field.VarType == 8){pDataColumn.MaxLength = field.Length;}//字段添加到表中table.Columns.Add(pDataColumn);return table;}
AE二次开发-获取图层的属性表相关推荐
- 基于C#的AE二次开发之图层右键菜单打开属性表及图层相关操作
基于C#的AE二次开发之图层右键菜单打开属性表及图层相关操作 我的开发环境为ArcGIS Engine 10.2与Visual studio2010.主地图名称为axMapControl1,Toc目录 ...
- C# 基于AE的GIS二次开发 要素查询操作,属性表查询操作及其属性表修改操作
直接上代码: 要素查询 并高亮显示 模糊查询我的根据自己的表设计的,自己用基本语句是 属性表字段 LIKE '*内容*' *号为 SQL like语句里的% like '%%',在ArcGIS里是*开 ...
- AE二次开发之图层移动
找了一圈发现都是用代码写图层移动的,但其实AE控件自带的图层属性就可以实现这个功能,所以给大家分享一下: 1.右击图层控件,选择属性 2.勾选"允许图层移动选项"就可以了 既然自带 ...
- 基于C#的AE二次开发-地图渲染之分级设色符号化
基于C#的AE二次开发-地图渲染之分级设色渲染符号化 我的开发环境为ArcGIS Engine 10.2与Visual studio2010.主地图名称为axMapControl1,Toc目录名为ax ...
- 基于C#的AE二次开发导出地图为JPG、TIF、PDF图片
基于C#的AE二次开发导出地图为JPG.TIF.PDF图片 我的开发环境为ArcGIS Engine 10.2与Visual studio2010.创建一个菜单或按钮,创建一个点击事件,粘贴代码即可实 ...
- 基于C#的AE二次开发之地图标注
基于C#的AE二次开发之地图标注 我的开发环境为ArcGIS Engine 10.2与Visual studio2010.主地图名称为axMapControl1,创建一个菜单或按钮,创建一个点击事件, ...
- C#进行MapX二次开发之图层操作
特别说明,本文整理自一篇网络的文章<MapX从数据库读取数据形成新图层(C#)> 在C#中实现MapX从数据库读取数据形成新图层分为两个问题: 1. MapX从数据库读取数据形成新图层: ...
- UG\NX二次开发 获取曲线上某个位置的点坐标、切线矢量、主法线矢量、副法线矢量 UF_MODL_ask_curve_props
文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: UG\NX二次开发 获取曲线上某个位置的点坐标.切线矢量.主法线矢量.副法线矢量 U ...
- UG\NX二次开发 获取相切面的三种方法
文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: UG\NX二次开发 获取相切面的三种方法 方法1: 使用NX Open C++ 的面 ...
最新文章
- 深度学习如炼丹,你有哪些迷信做法?网友:Random seed=42结果好
- vue中使用第三方UI库的移动端rem适配方案
- C语言结构-演员请就位
- mysql从oracle取数_Oracle通过过程定期取数
- python-I/O-文件操作
- java filechannel 空_Java NIO FileChanel
- python 网格_Python | 网格到情节
- javaWeb项目带红色感叹号问题原因
- 《利用python进行数据分析》读书笔记--第四章 numpy基础:数组和矢量计算
- hadoop 3.0.0 alpha3 安装、配置
- SVN回滚至某个版本
- JS弹窗确认Ajax封装方法
- asp毕业设计—— 基于asp+access的图书管理系统设计与实现(毕业论文+程序源码)——图书管理系统
- 渤海银行天津分行计算机笔试,关于渤海银行笔试经验分享
- e680 reboot的研究
- [算法导论] 邮递员问题代码c++实现,Floyd算法+dp,求遍历所有边回到起点的最短路径
- 根据点度分布情况,拟合线性公式
- 东北财经有计算机系吗,东北财经大学计算机科学与技术专业要学哪些课程,好学吗?...
- python除数为0报错_python——异常
- php bouncy castle,ORG.BOUNCYCASTLE