ArcGIS10.2导入数据到PostgreSQL
由于最近项目需要,需要把地理数据库由Oracle更换为PostgreSQL数据库,特此把遇到的一些坑记录下来。
因为ArcGIS版本采用的10.2版本,PostgreSQL版本只能采用三个版本PostgreSQL 9.0.5 (64-bit),PostgreSQL 9.1.3 (64-bit),PostgreSQL 9.2.2 (64-bit),PostGIS版本采用 1.5.1 或者2.0版本。如果是PostgreSQL更高版本会连不上ArcGIS。
PostgreSQL 9.1.3 (64-bit)下载地址 链接:https://pan.baidu.com/s/1As18TCFwgpLytEGWpjpt2A 提取码:1ea7 。(安装步骤不在此赘述)
安装好PostgreSQL数据库后打开pdAdmin,创建数据库,在模板中选择templat_postgis-20模板,这是因为在安装PostGIS的时候回把改模板自动创建,引用改模板,可以把PostGIS插件直接添加到我们创建的数据库之中。
创建好数据库之后,完成连接数据库最重要的一步。
将ArcGIS安装目录下(desktop10.2/databasesupport/postgresql/9.1/windows64)的st_geometry.dll拷贝至postgresql的安装目录(如:D:\Program Files\PostgreSQL\9.1\lib)下。(这一步是为了postgis支持st_geometry类型)
将PostgreSQL\9.1\bin下的libeay32.dll、libiconv-2.dll、libintl-8.dll、libpq.dll、ssleay32.dll这几个dll拷贝至arcgis安装目录D:\Program Files (x86)\ArcGIS\Desktop10.2\bin下,但是这里有个坑,因为desktop是32位的,所以这里只能拷贝32位的dll,否则desktop一直无法连接postgresql,所以这里需要下载32位的这几个dll(或者下载32位的postgresql安装包,安装后,将dll拷贝出来,注意安装包版本要对应);
将PostgreSQL\9.1\bin下的libeay32.dll、libiconv-2.dll、libintl-8.dll、libpq.dll、ssleay32.dll这几个dll拷贝至arcgis server安装目录D:\Program Files (x86)\ArcGIS\Server\bin下,注意这里了,因为server是64位,所以这里又需要拷贝64位的dll,否则数据库无法发布服务,无法注册数据库。
打开ArcMap数据库连接,选择PostgreSQL数据库,登陆,这个时候数据库应该需要采用企业地理数据库。右键启用企业地理数据库或者在工具栏中选择地理数据库管理---创建企业地理数据库。 (如果端口号不是默认5432,输入localhost,端口号),要不然创建失败。
启用企业版地理数据库之后可以创建要素数据集。
完成后在postgresql中给sde用户赋予空间数据处理和使用的权限
授予创建 PostGIS 几何列的权限
如果数据库对 PostGIS 可用,则将在公共方案中创建两个表,即 geometry_columns 和 spatial_ref_sys。必须为 sde 用户和将在地理数据库中创建数据的所有用户至少授予对 geometry_columns 表的 SELECT、INSERT、UPDATE 和 DELETE 权限和对 spatial_ref_sys 表的 SELECT 权限。
GRANT select, insert, update, delete ON TABLE public.geometry_columns TO <user_name>;
GRANT select ON TABLE public.spatial_ref_sys TO <user_name>;
导入数据 至此大功完成。