在项目上,经常需要针对不同的分析、需求建立不同的数据库,本文就基于ArcEngine实现这一功能。这一功能在ArcGIS中相当于“Data Management Tools–>Geodatabase Administration–>Create Enterprise Geodatabase”工具。当然,我是因为接手了任务才知道建立企业数据库,对企业数据库的原理和优缺点也并不是特别了解,如果比较了解的朋友可以在评论区评论,相互学习。
参考ArcGIS中创建企业地理数据库的工具,在vs2017开发环境下,基于DevExpress插件对功能的界面进行了设计,数据库类型有三种可选,分别是SQL Server、PostgreSQL、Oracle,因为进行的项目是基于PostgreSQL数据库,因此先预留其他两种数据库的接口,但是原理应该都差不多,许可文件为ecp文件,网上可以下到,在上传的github项目中Resource文件夹里也有,可以自行下载:
后端代码实现主要是CreateEnterpriseDB方法,方法的参数有数据库类型、IP地址、待建立的数据库名、数据库用户名及密码、地理数据库用户名及密码、许可路径八个参数。注意数据库的命名规范,命名不规范会报错,我的代码中只列举了两条,不知道还有没有其他规范,也欢迎各位高手进行补充。
#region 数据库的建立
/// <summary>
/// 创建企业地理数据库
/// </summary>
/// <param name="DB_platform">数据库类型</param>
/// <param name="instance">IP地址</param>
/// <param name="DB_Name">数据库名</param>
/// <param name="DB_admin">数据库用户名</param>
/// <param name="DB_pwd">数据库密码</param>
/// <param name="GDB_admin">地理数据库用户名</param>
/// <param name="GDB_pwd">地理数据库密码</param>
/// <param name="auth_path">许可路径</param>
///
public void CreateEnterpriseDB(string DB_platform,string instance,string DB_name,
string DB_admin,string DB_pwd, string GDB_admin, string GDB_pwd,string auth_path)
{
Geoprocessor gp = new Geoprocessor();
gp.OverwriteOutput = true;
CreateEnterpriseGeodatabase ceGDB = new CreateEnterpriseGeodatabase();
ceGDB.database_platform = DB_platform;
ceGDB.instance_name =instance;
ceGDB.database_name = DB_name;
ceGDB.database_admin =DB_admin;
ceGDB.database_admin_password = DB_pwd;
ceGDB.gdb_admin_name = GDB_admin;
ceGDB.gdb_admin_password = GDB_pwd;
ceGDB.authorization_file = auth_path;
gp.Execute(ceGDB, null);
}
#endregion
本功能的源代码已上传至github,欢迎各路大侠进行修改补充:https://github.com/ranhongwu/190701CreateEnterpriseDB ,同时,在文章中的问题也希望知道的高手们在评论区进行补充。