logo资料库

如何在ArcEngine与ArcServer开开发过程中使用postgresql.docx

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
如何在ArcEngine与ArcServer开开发过程中使用轻型数据库postgresql
号称是
如何在 ArcEngine 与 ArcServer 开开发过程中 使用轻型数据库 postgresql 作为一名 GIS 开发人员,在使用 AE 或是 Web 手段开发的过程中,难免要使用各种各样 的空间数据或是表数据,而在数据库的选择上,众所周知,SQL Server 与 Oracle 未免太过庞 大,access 在安全性上堪忧,在此介绍一款轻型的数据库:postgresql。 号称是世界上功能最强大的开源数据库在体积上并不大,约莫四五十兆,相对于 Orcale 或是 SQL Server 这两个庞然大物来说已是很小,比起 access 也依然是小一点,可是以笔者作 为一个初学者的水平来看,它的功能已然足够,而据我所知,我的一些朋友在毕业工作所在 的单位中也依然是使用此款数据库,其优点就不一一列举了,在此介绍一下它的部署以及使 用方法: 一.Postgresql 的安装与在 ArcMap 中的使用 1.下载并运行安装包(在此以 postgresql 9.2 以及它所支持的 ArcGIS 10.2 版本为例), 打开安装路径下的 data\\pg_hba.conf 文件,添加“host all all 0.0.0.0/0 md5”记录, 让任意客户端均可连接你的数据库集群(修改后需重启 postgresql-x64-9.0 服务以生效) 2.创建新用户,并赋予其“超级用户”的权限。 ArcMap 3.配 置 插 件 : 将 安 装 目 录 下 的 DatabaseSupport\\PostgreSQL\\9.2\\Windows\\st_geometry.dll 文件拷贝至 PostgreSQL 安装目录下的 9.2\\lib 目录。在 PostgreSQL 中创建 Geodatabase 时必须用到此类库。然后 将 PostgreSQL 安装目录下的 bin 目录中的 libeay32.dll, libiconv-2.dll, libintl-8.dll, libpq.dll, and ssleay32.dll 文件拷贝到 ArcMap 安装目录下的 bin 目录下。 4.在 ArcMap 中 打 开 工 具 箱 , 打 开 “ Data Management tools->GeodababsaseAdministration->CreateEnterprise Geodatabase”工具,填写必要 参数,如刚才新建的用户,需要创建的数据库名称以及密码等:
点击确定创建完毕。 5.在 ArcCatalog 中点击“Add Database Connection”,添加刚才的数据库, (把没有的那部分删了!!!!!)其中 Database Platform 参数应该为 PostgreSQL, 而实例应该为连接的数据库所在的 IP 地址,用户名密码视实际情况而定:
点击 OK,链接建立完毕,接下来是在开发过程中连接上它。 二.使用 AE 连接数据库: 不多说,上代码,需要的参数分别是,实例名(如 localhost),端口号(默认是 5432), 用户及密码,数据库名。 private void TryQuery() { try { // PostgeSQL-style connection string string connstring = String.Format("Server={0};Port={1};User Id={2};Password={3};Database={4};", "localhost", "5432", "postgres", "sa", "postgis20"); // Making connection with Npgsql provider NpgsqlConnection conn = new NpgsqlConnection(connstring); conn.Open(); // quite complex sql statement // data adapter making request from our connection //string sql = "SELECT * from cellcover_region"; string "SELECT a.* sql = FROM public.cellcover_region as a, site_font_point as b where b.gid=1 and ST_Within(b.geom,a.geom)"; NpgsqlDataAdapter da = new NpgsqlDataAdapter(sql, conn); // i always reset DataSet before i do // something with it.... i don't know why :-) ds.Reset();
// filling DataSet with result from NpgsqlDataAdapter da.Fill(ds); // since it C# DataSet can handle multiple tables, we will select first dt = ds.Tables[0]; // connect grid to DataTable dataGridView1.DataSource = dt; // since we only showing the result we don't need connection anymore conn.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } } 三.在 ArcGIS Server 中使用 postgresql 在使用 ArcGIS Server 连接该数据库时,用户需知的一点是 ArcGIS Server 是 64 位程序, 而 ArcMap 是 32 位程序,因此 postgresql 需要的插件与 ArcMap 不同,如果你有 ArcSDE 数据 库,可从它的安装目录下的 bin 目录下找到 libeay32.dll, libintl.dll, libpq.dll, and ssleay32.dll 上 述同名的 5 个 64 位的库到 ArcGISServer 的 bin 目录下。 若是你发布的 MapService 中的数据来自于 postgresql,而你又想在数据库中更改它们之 后再在 MapService 中显示,此时你需要将数据库连接注册到 ArcServer Manager 中: 在如图所示位置中点击“注册数据库” 编写名称,选择数据库连接文件(可在 ArcCatalog 的数据库连接中点击右键查看属性, 然后找到它的位置),点击创建完成:
如此,你便可以在 ArcGIS Server 中使用该数据库了。 希望使用 AE 开发的 GISR 能在本文中获取一些帮助,如果你想使用数据库,可是又不想 太麻烦,这个方法值得考虑。
分享到:
收藏