原文地址:http://blog.csdn.net/arcgis_cs/article/details/7750893

ArcGIS 10.1如何连接数据库

最近在使用ArcGIS 10.1的数据库,在使用的过程中发现了跟以往不太一样的地方,在这里将自己的心得和想法跟大家分享一下(使用Postgresql),根据使用过程,我将内容分为两个部分(这两个部分,是我在使用完分出来的,并重新整理,其中穿插我自己的想法,欢迎大家跟我们一起交流。)

如何使用直连方式连接数据库

1,    ArcGIS 10.1 统一了数据库连接,也就是不区分是空间数据库连接还是通过OLEDB方式的关系型数据库连接

左图为10.1下的截图,右图为10.0下的截图

2, 在Catalog中只能采用直连方式;

3, ArcGIS 10.1版本中,Esri提供的安装介质不在包含Postgresql(以前的是包含的);

4, 安装Postgresql,官方给的软件要求是64位数,而且所有的企业级数据库都是64位(这应该和Server有关系吧,因为Server 10.1是纯64位,在桌面软件的DatabaseSupport目录中给出的几个dll都是64位,这几个dll 后面会用到,官方给的软件需求如下:

Database

Supported Operating Systems

Minimum OS Version

Maximum OS Version

PostgreSQL 9.0.5 (64-bit)

Red Hat Enterprise Linux Server 5 (64-bit)

Update 7

Red Hat Enterprise Linux Server 6 (64-bit)

SUSE Linux Enterprise Server 11 (64-bit)

SP1

Windows Server 2003 Standard, Enterprise, and Datacenter (64-bit [EM64T])

SP2

SP2

Windows Server 2008 R2 Standard, Enterprise, and Datacenter (64-bit [EM64T])

SP1

5,    配置PostgreSQL的客户端。因为直连方式要求ArcSDE的客户端必须安装数据库的客户端类库,所以首先需要获取PostgreSQL的客户端。ArcGIS Desktop是32位软件,需要的是32位的PostgreSQL类库。找到PostgreSQL的客户端,或者在别的机器上将32位的 libeay32.dll, libiconv-2.dll, libintl-8.dll, libpq.dll, and ssleay32.dll文件拷贝到Desktop 安装目录的bin目录下;

6,  拷贝 st_geometry.dll,将Desktop 安装目录下的DatabaseSupport/PostgreSQL/Windows64(看到64了吧)目录下,拷贝st_geometry.dll文件到PostgreSQL的lib目录。在PostgreSQL中创建Geodatabase时必须用到此类库;

7, 配置pg_hba.conf,修改PostgreSQ 的pg_hba.conf文件,添加“host     all          all      0.0.0.0/0       md5”(关于该文件的配置,可以参阅相关资料);

8, 在安装完SDE后,发现没有以往的post界面,在10.1中,对于创建企业级Geodatabase都采用工具箱中提供的工具,换句话说,以前的post被Toolbox中的一堆工具替代;

9, 创建地理数据库

10.1在创建地理数据库的时候,提供了三个,Oracle,SQL Server和Postgresql,我们用这个工具创建地理数据库,这个过程相当于早起的POST过程,创建数据库并写入一堆系统表等,创建界面如下图:

创建成功后就可以在pgAdmin中看到sde这个数据库,并且看到很多系统表,如下图:

10, 连接地理数据(直连);

在上面说了ArcGIS 10.1对数据库连接做了统一,那如何判断是关系型数据库还是空间数据库呢?其实这点并不难,因为在创建空间数据库的时候,我们同时创建了用户名和密码,那么用这个用户名连接,并选择创建的这个数据库,那么这个数据库就是空间数据库,连接界面如下图:

连接成功后,我在数据库里创建了要素数据集添加了几个数据,做了一个拓扑分析(做这个的目的不是为了做拓扑,而是为了验证能否做拓扑分析,所以拓扑分析的结果我们不做讨论),结果如下:

同理,做了一个几何网络,效果如下:

现在我们想一个问题,上面我们使用的是直连的方式访问数据库,大家觉得是否缺少什么呢?我们会想以前如何使用数据库的,首先装了关系型数据库(Postgresql),这一步我们有了,然后就是安装ArcGIS SDE for postgresql,这一步我们没有,然后就是创建数据库,连接数据库。从整个过程来看,我们没有安装SDE,那为什么也可以创建空间数据库呢?

这也是我自己发现的一个,在开始的时候,我的确是安装了SDE,但是我发现这个安装不想ArcGIS 10 或者之前的弹出一个post的界面,装了之后什么反应都没有,我去安装目录下看了看,发现这个安装其实就是解压了一些东西,而我的空间数据库还没有建立呢?再后来发现连接数据库的时候,没有服务这个选项,当初我就觉得这个安装跟我连接数据库没有关系,于是卸载了,根据:http://resources.arcgis.com/en/help/main/10.1/index.html#/Setting_up_a_geodatabase_in_PostgreSQL/002p00000001000000/仔细看了一遍,发现这个过程的确不安装SDE是可以的,跟售后的同事确认了下,得出的结论:如果是使用直连方式,ArcGIS 10.1 是不用安装SDE的任何组件。新的问题来了,我们知道在以前的版本中SDE还有一种方式就是服务连接,那如何使用服务连接呢?

如果细心的话,我们可以发现在安装SDE的时候,有两个组件让我们安装:

根据组件右边的描述,我们知道这个安装就是针对服务连接的,也就是说如果要使用服务方式连接,就需要安装SDE,如何创建服务,如何使用服务连接(我们明显看到连接中根本就没有服务这个选项)就是我们下来要讨论的问题。

如何使用服务的方式连接数据库

服务连接的额外步骤

  1. 安装ArcSDE for PostgreSQL 10.1;
  2. 修改ArcSDE安装目录中services.sde文件和Windows中的hosts文件,分别增加“esri_sde 5151/tcp”记录;
  3. 创建ArcSDE服务。分别键入以下两个命令以完成在注册表中创建服务的工作:
    sdeservice -o create -d POSTGRESQL,postgresql-x64-9.0
    sdeservice -o register -d POSTGRESQL,postgresql-x64-9.0 -r ADMIN_DATABASE -v sde
  4. 启动服务。可以用“sdemon –o start”命令或从Windows服务面板中启动ArcSDE服务;

  1. 创建连接。在catalog中只能创建直连服,因此需要使用新的Create ArcSDE Connection File GP工具来创建ArcSDE服务连接文件。创建成功后,在catalog中找到这个连接双击就可以打开。

通过这个工具,如果我们的数据库是ArcGIS 10 或者之前的,并且采用服务的方式,那么在使用10.1的时候,应该用这个工具吧(没有测试,根据向下兼容,我自己猜想)

ArcGIS 10.1 如何连接数据库(转)的更多相关文章

  1. ArcGIS 10.1 如何连接数据库(转载)

    ArcGIS 10.1如何连接数据库 最近在使用ArcGIS 10.1的数据库,在使用的过程中发现了跟以往不太一样的地方,在这里将自己的心得和想法跟大家分享一下(使用Postgresql),根据使用过 ...

  2. 单台主机上DB2 10.5和arcgis 10.4 空间数据库配置

    该篇文章重点参考arcgis官网说明:http://enterprise.arcgis.com/zh-cn/server/10.4/publish-services/linux/register-db ...

  3. ArcGIS 10.1 BUG记录

    声明:笔者使用ARCGIS 10.1 XXX版,YYY版可能没有此处描写的问题 1. 关于注册数据库 发布启用FA的服务,需要为数据库进行ArcGIS Server注册,若通过ArcMap执行注册,会 ...

  4. ArcGIS 10与ArcEngine 10安装及破解

    1 2 3 4 5 分步阅读 一键约师傅 百度师傅高质屏和好师傅,拯救你的碎屏机 百度经验:jingyan.baidu.com 现在常见的破解方法在下面的地址中已经详细附图说明了,但是这种破解方法,想 ...

  5. 【转】10.4新特性-ArcGIS 10.4矢量切片介绍

    原文地址:http://zhihu.esrichina.com.cn/article/567 1.矢量切片简介GIS的底图一直使用金字塔技术进行切图,使用户能够快速访问指定级别的地图或者影像.但是切图 ...

  6. 在ArcGIS 10.3标注中竖排文字

    ArcGIS 10.3中文字默认“从左至右”排列,而实际的标注比如“XX路.XX街”有些文字是竖直排列的. 接着就涉及到“标注样式”的问题. 如果是整体竖排,点击图层的Properties...(属性 ...

  7. ArcGIS 10.3 安装及破解

    系统环境:win7 64位操作系统. 一.ArcGIS 10.3包简介 ArcGIS 10.3 下载包含 1.  ArcGIS for Desktop ArcGIS for Desktop简介: Ar ...

  8. ArcGIS 10.1 for Desktop新特性之地理标记照片

    转自:http://blog.csdn.net/esrichinacd/article/details/7730825 地理标记照片是指带有地理位置信息的照片,通常通过内置GPS的数码相机或智能手机拍 ...

  9. (原创)CityEngine 2014和ArcGIS 10.3冲突问题的解决

      先卸载ArcGIS License Manager 10.3 安装ArcGIS License Manager 10.2.2 用keygen算出ArcGIS 10.3的许可,似乎本许可在ArcGI ...

随机推荐

  1. alpha-beta搜索算法

    alpha-beta搜索(min-max搜索): 简称mfs,用来解决双方最优决策博弈问题. 核心思想:在搜索树中,下一层越小,对当前层越有利,由于取max,一旦下一层出现了比其他孩子结果更大的值,那 ...

  2. 数组和arguments

    Arguments(Array-Like Objects) arguments对象是所有(非箭头)函数中都可用的局部变量 拥有四个属性(按照规范来说只有三个了----caller) arguments ...

  3. sql count中加条件

    一般的,我们会在where, 或者 having中加条件,count中只是某个字段 今天看到另外一种写法,不知道性能怎么样 select count( case when xxx>10 and ...

  4. 实现接口必须要加注解@Override吗

    不一定的,但是我们的编译器在查询我们重写的方法,方法名,参数,返回类型的时候,是能够根据注解来帮助我们判断方法重写的正确与否 所以我们有必要在编写过程中加上@Override,虽然我们的eclipse ...

  5. 使用BeanUtils封装数据时数据类型的转换

    //获得表单数据 Map<String, String[]> properties = request.getParameterMap(); User user = new User(); ...

  6. 【ExtJS】 FormPanel与ComboBox的集成以及值的获取

    var formPanel = Ext.create("Ext.form.Panel",{ title : 'formPanel', width : 400, url : 'asd ...

  7. ES6基本语法之let和const

    1.var可以重复声明 var a = 12; var a = 5; alert(a) //5 2.var无法限制修改 如:PI = 3.1415: 3.var没有块级作用域 { } 像: if(){ ...

  8. 【c++】输出文件的每个单词、行

    假设文件内容为 1. hello1 hello2 hello3 hello4 2. dsfjdosi 3. skfskj ksdfls 输出每个单词 代码 #include <iostream& ...

  9. 跨域拦截Access-Control-Allow-Origin设置多个origin

    在Extjs和java项目碰到了需要同时处理跨域,外部要访问后台接口的问题 原来的代码是这样,只能设置一个extjs前台需要过滤的跨域请求 package com.xgt.config; import ...

  10. mysql-elastic search canal

    背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求.不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝 ...