- WLib是一组对C#.NET和ArcGIS Engine开发常用代码进行封装的基础库和控件库;
-
通用.NET功能
- 数据库连接查询:DbHelper
- 部分常用Windows API调用
- 计算机硬件信息获取
- 压缩与解压缩
- 部分反射操作(类型与程序集扩展)
- DataTable对象扩展、数据转换
- 插件接口
- 进度操作(数据处理模板)
- 软件注册
- 软件更新
-
基于ArcGIS Engine的GIS数据读写、空间分析
-
环境检测
-
文件IO操作
- Excel读写 2. Word读写 3. pdf操作
- WinForm控件库
- GIS控件
- 地图展示组合控件(MapViewer)
- 属性表控件
- 按属性查询控件
- 地图导航工具栏
- 工作空间选择控件
- 样式选择控件
- 数据选择控件(AddData)
- 非GIS控件
- 环境检测控件
- 简化版的Windows资源管理器
- 目录树控件、文件/目录选择等对话框扩展
- 文件查看器(程序嵌入器)
- ListBox控件扩展
- 消息框
- 路径选择框
- 插件管理控件
- 窗体查询
- WinForm的全局异常处理
- 实体数据编辑控件
- 注册机
- GIS控件
解决方案包含若干个项目(代码库),核心库为WLib和WLib.ArcGis
代码库 | 说明 | 内容 |
---|---|---|
WLib | 通用基础库 | DbHelper、Windows API、硬件信息获取、压缩与解压缩、反射、DataTable转对象(简单ORM)、插件功能等 |
WLib.ArcGis | ArcGIS基础库 | 封装的ArcObject代码集,内容包含GP调用、拓扑、空间查询、地图查询、标注、注记、元素增删改查、制图出图、样式、专题渲染、坐标系判读转换、点线面几何创建、控件组合联动、许可初始化、shp/gdb/mdb/sde/sql/oledb连接和表格/矢量/栅格数据增删改查、数据统计、数据转换、类型转换等 |
WLib.Envir | 环境检测库 | 检测.NET版本、ArcGIS版本、Windows操作系统版本的代码 |
WLib.Files | excel、Word、pdf读写库 | 包含NPOI、AppLibrary.dll 、Microsoft.Office.Interop.Excel操作xls或xlsx;使用Microsoft.Office.Interop.Word读写doc和docx;使用itextsharp操作pdf文档 |
WLib.Gdal | GDAL帮助库 | 开源GIS库GDAL(Geospatial Data Abstraction Library)的Helper代码 |
WLib.WinCtrls | WinForm控件库 | 一些自定义的WinForm控件库 |
WLib.WinCtrls.ArcGisCtrl | WinForm+ArcGIS控件库 | 一些自定义的基于ArcEngine的WinForm控件库 |
WLib.WinCtrls.Dev | DevExpress WinForm控件库 | 一些自定义的DevExpressWinForm |
WLib.WinCtrls.Dev.ArcGisCtrl | DevExpress WinForm +ArcGIS控件库 | 一些自定义的基于ArcEngine的DevExpress WinForm控件 |
下载源码,或通过nuget引用:
Install-Package WLib
Install-Package WLib.ArcGis
Install-Package WLib.Envir
-
Visual Studio 2019
-
.NET Framework 4.0(以WLib.WinCtrls开头的4各项目库为.NET Framework 4.6)
-
ArcGIS Engine 10.2(包含"ArcGis"关键字的项目,下载源码修改项目引用可切换为其他ArcGIS 版本)
部分项目引用了若干第三方开源代码库,包括但不限于:
- AppLibrary.dll 轻量级开源的Excel读写库
- GDAL 开源GIS开发库
- SharpZipLib 文件压缩和解压缩库
- NPOI
- System.Data.SQLite
- Json.NET
- itextsharp
- Dapper
以下为简单使用示例,更多说明请参阅[WIKI](WLib/Doc/ ../../wikis)
//使用以下对象需引用:
//using WLib.ArcGis.Data;
//using WLib.ArcGis.GeoDatabase.FeatClass;
//using WLib.ArcGis.GeoDatabase.WorkSpace;
//using WLib.Database;
//using WLib.Database.DbBase;
//---------示例1:获得区域内的河流的总长度----------
//1、直接根据图层的路径获得 IFeatureClass 对象
IFeatureClass featureClass = FeatureClassEx.FromPath(@"c:\World.mdb\River");//获取河流图层
//2、通过QueryFeatures扩展方法,查询图层中的数据
double sumRiverLength = 0.0;//计算河流的总长度
featureClass.QueryFeatures(@"XZQDM = '440000'", feature => sumRiverLength += feature.ToDouble("RiverLength"));
//---------示例2:复制图层----------
IWorkspace workspace = WorkspaceEx.GetWorkSpace(@"c:\World.mdb");
workspace.GetFeatureClassByName("River").CopyStruct(workspace, "NewRiver", "河流");
//---------示例3:数据查询----------
//数据库连接和SQL查询的方式获取shp、mdb、gdb、dbf数据
DbHelper dbHelper1 = DbHelper.GetShpMdbGdbHelper(@"c:\River.dbf");
System.Data.DataTable dataTable = dbHelper1.GetDataTable(@"select * from River where RiverName = 'Pearl River'");