测试背景:
需要在纯国产环境中利用企业级地理数据库sde发布服务,但目前arcgis桌面不支持国产Linux环境,于是有了以下测试
本次测试基于GeoScene Server2.1 、ArcMap10.8.1、PostgreSQL11.7版本
以下是数据库测试包
前提条件:
1、成功安装GeoScene Server产品
2、选择好跟GeoScene 产品对应版本的数据库:例如PostgreSQL(或者国产数据库人大金仓)进行安装
https://blog.csdn.net/weixin_43230682/article/details/108403642(此为PostgreSQL的安装帮助文档)
3、若Server与数据库不在在同一台机器,需要确保两台机器能正常访问链接
4、外部的SDE内的数据需要跟国产环境中SDE的数据保持一致。
5、数据库版本、用户名密码都需要保持一致
PS:
因为是在国产环境中发布服务,又Linux环境中暂时没有支持的桌面,所以需要一下操作来进行发布服务:
1、需要在外部机器安装一个跟国产环境中一模一样的数据库、如果数据库与geoscene不在同一机器上,需要保证ip、用户名、密码都一致、
在同一机器上的话用localhost连接则保证用户名密码一致即可。
2、将外部设置好的sde导入Server那台机器中,既可进行注册数据库操作。
3、在发布服务的时候,要保证数据的名称和位置一样,这样在外部保存的sd文件导入到国产环境中依旧能正常发布服务。
4、外部的SDE内的数据需要跟国产环境中SDE的数据保持一致。
创建sde步骤
1、连接虚拟机,进入装有geoscene产品的机器。
2、进入安装用户
su – geoscene
3、从geoscene的安装目录中定位到geoscene server的工具箱
cd /home/geoscene/geoscene/server/tools
4、运行Python工具。
./python
5、需要先导入ArcPy。
import arcpy
6、运行创建企业级地理数据库的代码。
arcpy.CreateEnterpriseGeodatabase_management("POSTGRESQL", "10.10.10.113", "sde", "DATABASE_AUTH", "postgres", "xy942698", "", "sde", "xy942698", "", "/home/geoscene/geoscene/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License10.8/sysgen/keycodes")
创建成功,会返回Result ‘true’
详细参数解释见官方帮助文档。
在server manager中注册数据库
(这步需要提前在ArcMap中连接数据库,生成一个sde的文件,将这个文件导入到国产环境中。)
进入到mangager页面,进入站点-GIS服务器-数据存储
点击注册数据库
导入连接的sde,即注册成功(保证连接参数一样)
发布服务
将sde中的数据打开,导入到地图中,到文件-共享为-服务
保存服务定义
选择服务器连接
确定文件分布位置
选择服务sd 文件的存放位置
相关参数填写
分析
过渡、进行保存sd文件
过度成功,得到sd文件。
将sd文件复制到国产环境中,打开server,选择发布服务、选择上一步保存的sd文件
设置参数、发布服务
发布成功、得到地图服务
查看服务工作空间,是引用数据库sde中的数据。
过程中出现的错误:
创建企业级地理数据库失败。出现向地理数据库表插入值失败,
查看日志文件sde_setup.log,
需要对libxml进行重构。
于是对安装数据库的时候需要利用./configure进行重构,具体步骤如下
./configure --with-libxml make make install
以及PostgreSQL下的两个文件都需要拷贝