ArcGIS以数据库作为数据源作为source发布服务步骤详解(以Postgresql为例)及各种发布问题
- 创建企业级数据库
Data Management Tools-->Geodatabase Administration-->Create Enterprise Geodatabase
- 按如图所示格式填写:
Database Flatform、Instance、Database 这三项为连接指定的数据库
其中Authorization File需要导入授权文件Lic10.4.1.ecp文件
完成并关闭:
- 使用ArcCatalog添加数据库连接
Database Connections-->Add Database Connection 选择刚刚创建的database:qi_dai
- 右键数据库连接,导入gdb中的数据
导入成功:
- 切换数据源
- 查看注册数据源方式:ArcCatalog-->ArcGIS Server网站上点击右键,Server Properties,注意添加的时候必须在发布的时候创建,否则将会出现重复。
- 发布服务 publish a service
- 发布遇到的问题:
(1) ERROR 001272:Analyzer errors were encountered (codes = 7)
这是ArcGIS自身发布服务时的系统BUG,即使用数据库作为数据源时,为了给各个图层各自的特征值,会使用Properties-->Definition Query,使用SQL语句来筛选需要的数据,而此BUG就是由于ArcGIS无法发布带有Definition Query图层的数据所导致的。
在 Updated 09/14/12 - ArcGIS 10.1 Service Pack 1中已修复该问题,但从实际情况来看,并适用于所有人,官方修复代码:
http://downloads.esri.com/support/downloads/other_/189810.1_SP1_Announcement.pdf
NIM083369 - Analyzer error 00007: Layer's definition query is invalid appears when publishing enterprise data with a definition expression based on the geometry fields such as ORASPATIAL.States.AREA fields.
解决方法:
(1) 在这之前,检查所有图层数据源均指向数据库,同时检查你的数据库文件,建议不要带中文或过长字符,这是导致报错的原因之一
(2) 在(1)的基础上,在”File-->Share As Service”中,选择”Save a service definition file-->No available connection”选项。然后选择要保存定义文件的位置。使用ArcCatalog浏览到刚刚创建的定义文件(.sd),然后右键单击并选择”Publish as a Service”
(3) 详细步骤图:
选择:No available connection,命名服务名字
Definition定义文件存放的位置:
需要使用Feature Access,即发布服务后,在Mapserver中既能看到MapServer也能看到FeatureServer
Analyse之后没什么问题的话,就Stage创建Definition文件
打开ArcCatalog,找到刚刚创建的.sd文件
发布服务:Publish as a Service
去Mapserver上检查,有FeatureServer和MapServer表示发布成功,符合要求
(2) 版本一致情况下, Error: Proxy server got bad address from remote server (verify the server is running)
问题描述:
在曾经成功发布过服务的机器上重连服务,无法在catalog或者ArcMap中管理、查看、发布服务,错误原因:Error: Proxy server got bad address from remote server (verify the server is running)
方法:
打开IE浏览器-->Internet选项