当前位置: 首页 > 产品大全 > Linux系统下ArcGIS Server注册数据库及服务发布全流程详解

Linux系统下ArcGIS Server注册数据库及服务发布全流程详解

Linux系统下ArcGIS Server注册数据库及服务发布全流程详解

ArcGIS Server作为一款功能强大的企业级GIS服务器,其核心功能之一便是发布地理空间数据服务。在Linux环境下,将数据库中的数据注册到ArcGIS Server并进行服务发布,是一个常见的运维与开发任务。本文将详细阐述从数据库连接配置到服务成功发布的完整流程。

一、前期准备与环境检查

  1. 数据库端准备
  • 确保您的数据库(如PostgreSQL/PostGIS, Oracle, SQL Server等)已安装并正常运行。
  • 在数据库中创建好包含空间数据(Feature Class)的数据库用户、方案(Schema)和表。
  • 对于PostgreSQL,需确保已安装PostGIS空间扩展。
  • 记录数据库的连接信息:主机名/IP、端口、数据库名称、用户名及密码。
  1. ArcGIS Server端准备
  • Linux系统上的ArcGIS Server已成功安装并启动。
  • 拥有ArcGIS Server管理员权限账户。
  • 确保服务器上已安装对应数据库的客户端驱动(如Oracle Instant Client, PostgreSQL的psql或libpq库)。
  • 对于企业级地理数据库,可能需要先在ArcGIS Desktop或使用Python脚本创建地理数据库并启用企业级功能。

二、注册数据库到ArcGIS Server

注册数据库的目的是让ArcGIS Server能够安全地访问数据库中的数据。此操作主要通过ArcGIS Server管理员目录(Admin API)或ArcGIS Pro/Desktop来完成。以下以使用REST API(curl命令)和Python脚本为例,说明在Linux命令行下的注册方法。

核心步骤与要点:

1. 生成连接文件(可选但推荐)
虽然可以直接通过API注册,但先创建一个数据库连接文件(.sde文件)能简化流程。这通常需要在安装了ArcGIS Pro或Desktop的Windows机器上创建,然后上传至Linux服务器。文件包含了加密的连接信息。

2. 通过ArcGIS Server REST API注册
使用curl命令向ArcGIS Server的管理员目录发送POST请求。

示例:注册一个PostgreSQL数据库
`bash
curl -u admin:password -X POST \

-H "Content-Type: application/x-www-form-urlencoded" \

-d "itemType=egdb\&connectionString=DATABASE=mygdb;SERVER=192.168.1.100;INSTANCE=5432;USER=gisadmin;VERSION=sde.DEFAULT\&clientPath=/opt/arcgis/server/tools\&isManaged=false\&connectionType=shared" \
"https://your.server.com:6443/arcgis/admin/data/registerItem"
`

  • -u: ArcGIS Server管理员用户名和密码。
  • connectionString: 数据库连接字符串,格式因数据库类型而异。
  • clientPath: ArcGIS Server工具目录,通常位于<ArcGIS Server安装目录>/tools
  • isManaged: 是否为托管数据库(true表示ArcGIS Server管理版本化等,false表示仅连接)。
  • connectionType: 连接类型,shared(共享)最为常用。

3. 使用ArcGIS API for Python脚本注册
在Linux服务器上安装arcgis包后,可以使用更友好的Python脚本。
`python
from arcgis.gis import GIS
from arcgis.features import FeatureLayerCollection

连接到ArcGIS Server管理员站点

gis_admin = GIS("https://your.server.com:6443/arcgis", "admin", "password")

定义数据库注册参数

db_params = {
"itemType": "egdb",
"connectionString": "DATABASE=mygdb;SERVER=192.168.1.100;INSTANCE=5432;USER=gisadmin;VERSION=sde.DEFAULT",
"clientPath": "/opt/arcgis/server/tools",
"isManaged": False,
"connectionType": "shared"
}

执行注册

registerresult = gisadmin.admin.data.registeritem(**dbparams)
print(f"注册结果: {register_result}")
`

4. 验证注册
注册成功后,登录ArcGIS Server管理器(https://<server>:6443/arcgis/manager),在站点 > 数据存储中应能看到已注册的数据库连接。

三、发布数据库为GIS服务

数据库注册成功后,其中的空间表即可作为服务的数据源进行发布。发布服务通常需要通过ArcGIS Pro制作地图文档(.aprx)或地图服务定义(.msd/.sd)文件,然后将其上传并发布。在纯Linux环境下,通常使用“发布服务定义”的方式。

主要流程:

  1. 在ArcGIS Pro中准备服务定义文件
  • 在Windows端的ArcGIS Pro中,使用“添加数据库连接”功能,连接到已注册的数据库(或直接使用其连接信息)。
  • 将数据库中的空间表拖入地图,进行符号化、标注等制图配置。
  • 共享选项卡中,选择发布为Web图层(对应Feature Service)或发布为Web地图(对应Map Service)。
  • 在配置发布参数时,关键一步是设置“数据”选项:选择“引用注册数据”而不是“复制所有数据”。这是确保服务动态读取数据库数据的关键。
  • 将结果保存为服务定义文件.sd文件)。

2. 将服务定义文件上传至Linux服务器
可以通过SCP、SFTP等方式将生成的.sd文件传输到ArcGIS Server的某个目录下,例如/opt/arcgis/services

3. 在Linux服务器上发布服务
使用ArcGIS Server内置的publish工具进行发布。
`bash
cd /opt/arcgis/server/tools
./publish -s https://your.server.com:6443/arcgis \

-u admin -p password \

-f /opt/arcgis/services/MyFeatureService.sd \

-r
`

  • -s: ArcGIS Server的URL。
  • -u, -p: 管理员凭据。
  • -f: 服务定义文件路径。
  • -r: 替换现有服务(如果存在)。
  1. 验证服务发布
  • 命令执行成功后,返回的服务URL即表示发布完成。
  • 登录ArcGIS Server管理器,在服务列表中查看新发布的服务状态是否为“已启动”。
  • 通过REST服务端点(例如 https://your.server.com:6443/arcgis/rest/services/<服务名>/FeatureServer)访问服务,测试查询等功能是否正常。

四、常见问题与注意事项

  • 驱动与权限:确保ArcGIS Server账户对数据库客户端驱动有读取权限,并且数据库用户对目标数据有足够的SELECT(及INSERT/UPDATE/DELETE,若编辑)权限。
  • 防火墙:确保Linux服务器与数据库服务器之间的网络端口(如Oracle的1521, PostgreSQL的5432)是连通的。
  • 连接类型shared连接允许多个服务实例共享同一个数据库连接池,效率高,推荐生产环境使用。
  • 服务定义文件:制作服务定义文件时,“引用注册数据”的选项至关重要,它保证了服务与数据库的动态链接。
  • 版本化管理:如果使用企业级地理数据库的版本化功能,发布服务时需要仔细配置版本相关参数。

遵循以上流程,您可以在Linux系统的ArcGIS Server上,稳定地将数据库中的地理空间数据发布为可供Web端、移动端调用的GIS服务,构建起完整的企业级GIS应用体系。

如若转载,请注明出处:http://www.1dingyouchebeta.com/product/82.html

更新时间:2026-04-12 15:47:29

产品大全

Top