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二次开发-获取图层的属性表相关推荐

  1. 基于C#的AE二次开发之图层右键菜单打开属性表及图层相关操作

    基于C#的AE二次开发之图层右键菜单打开属性表及图层相关操作 我的开发环境为ArcGIS Engine 10.2与Visual studio2010.主地图名称为axMapControl1,Toc目录 ...

  2. C# 基于AE的GIS二次开发 要素查询操作,属性表查询操作及其属性表修改操作

    直接上代码: 要素查询 并高亮显示 模糊查询我的根据自己的表设计的,自己用基本语句是 属性表字段 LIKE '*内容*' *号为 SQL like语句里的% like '%%',在ArcGIS里是*开 ...

  3. AE二次开发之图层移动

    找了一圈发现都是用代码写图层移动的,但其实AE控件自带的图层属性就可以实现这个功能,所以给大家分享一下: 1.右击图层控件,选择属性 2.勾选"允许图层移动选项"就可以了 既然自带 ...

  4. 基于C#的AE二次开发-地图渲染之分级设色符号化

    基于C#的AE二次开发-地图渲染之分级设色渲染符号化 我的开发环境为ArcGIS Engine 10.2与Visual studio2010.主地图名称为axMapControl1,Toc目录名为ax ...

  5. 基于C#的AE二次开发导出地图为JPG、TIF、PDF图片

    基于C#的AE二次开发导出地图为JPG.TIF.PDF图片 我的开发环境为ArcGIS Engine 10.2与Visual studio2010.创建一个菜单或按钮,创建一个点击事件,粘贴代码即可实 ...

  6. 基于C#的AE二次开发之地图标注

    基于C#的AE二次开发之地图标注 我的开发环境为ArcGIS Engine 10.2与Visual studio2010.主地图名称为axMapControl1,创建一个菜单或按钮,创建一个点击事件, ...

  7. C#进行MapX二次开发之图层操作

    特别说明,本文整理自一篇网络的文章<MapX从数据库读取数据形成新图层(C#)> 在C#中实现MapX从数据库读取数据形成新图层分为两个问题: 1. MapX从数据库读取数据形成新图层: ...

  8. UG\NX二次开发 获取曲线上某个位置的点坐标、切线矢量、主法线矢量、副法线矢量 UF_MODL_ask_curve_props

    文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: UG\NX二次开发 获取曲线上某个位置的点坐标.切线矢量.主法线矢量.副法线矢量 U ...

  9. UG\NX二次开发 获取相切面的三种方法

    文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: UG\NX二次开发 获取相切面的三种方法 方法1: 使用NX Open C++ 的面 ...

最新文章

  1. 深度学习如炼丹,你有哪些迷信做法?网友:Random seed=42结果好
  2. vue中使用第三方UI库的移动端rem适配方案
  3. C语言结构-演员请就位
  4. mysql从oracle取数_Oracle通过过程定期取数
  5. python-I/O-文件操作
  6. java filechannel 空_Java NIO FileChanel
  7. python 网格_Python | 网格到情节
  8. javaWeb项目带红色感叹号问题原因
  9. 《利用python进行数据分析》读书笔记--第四章 numpy基础:数组和矢量计算
  10. hadoop 3.0.0 alpha3 安装、配置
  11. SVN回滚至某个版本
  12. JS弹窗确认Ajax封装方法
  13. asp毕业设计—— 基于asp+access的图书管理系统设计与实现(毕业论文+程序源码)——图书管理系统
  14. 渤海银行天津分行计算机笔试,关于渤海银行笔试经验分享
  15. e680 reboot的研究
  16. [算法导论] 邮递员问题代码c++实现,Floyd算法+dp,求遍历所有边回到起点的最短路径
  17. 根据点度分布情况,拟合线性公式
  18. 东北财经有计算机系吗,东北财经大学计算机科学与技术专业要学哪些课程,好学吗?...
  19. python除数为0报错_python——异常
  20. php bouncy castle,ORG.BOUNCYCASTLE

热门文章

  1. 飞机大战之-添加背景
  2. 比心app源码,携带对象参数跳转页面
  3. php ean13,php生成EAN_13标准条形码实例_php实例
  4. 【前端三剑客三】 JavaScript
  5. Unity 编辑器开发实战【Custom Editor】- 为UI视图制作动画编辑器
  6. 金蝶物料辅助属性改造
  7. 【华为机试】HJ2 计算某字符出现次数
  8. 美国顶尖大学特别的感恩节传统……
  9. 虚拟主机换云服务器,云虚拟主机想换云服务器
  10. 【读书笔记】第1章“自律100天”的华丽开启