文章目录
此前从未接触过ArcGIS,对Oracle和postGre SQL也比较陌生。本文介绍了从零开始,到搭建环境,再到发布第一个ArcGIS地图服务的完整过程。
一、软件环境搭建
由于在地图制作时我们需要在 arcMap 中读取数据库中的地理数据,并且在发布地图服务时。arcGIS Server 也需要从数据库中读取数据并发布。所以我们需要建立起 arcMap----> 数据库 和 arcGIS Server----->数据库的连接。并且,由于我们可以在 arcMap 对 arcGIS Server 进行管理,所以也需要建立起这两者的连接。具体关系如下(以 postgreSQL为例:)
本文中ArcGis相关软件版本为10.2,Oracle版本为11g,PostgreSQL版本为9.1。
本文用到的软件下载地址:
度盘:https://pan.baidu.com/s/1fdAiJW1YSBlQcj7Siu4kpg 提取码:a41c
在软件的安装过程中,有一些账号密码的配置,建议使用记事本等工具记录,以免忘记。
1、数据库安装
ArcGIS支持若干数据库,我们这里用了两种,Oracle和开源的postGre SQL,选用其中一种即可。相比较而言,使用Oracle作为地理数据库的搭建要简单一些,条件允许的话,推荐使用Oracle数据库。
1.1、Oracle(可选)
1.1.1、安装Oracle服务端
这里选择的是Oracle11g 64位。
- 运行安装
- 出现下图警告,不用理会
- 电子邮件可以不填
- 安装选项选择创建和配置数据库
- 根据机器的配置情况自行选择,这里选择的是桌面类
- 自定义Oracle的基目录,管理口令自行设置
- 完成
- 安装产品,时间会比较长,喝杯茶慢慢等待吧
- 产品安装完成后记得要做口令管理
- 这里主要配置3个账户,sys账户,相当于MySQL的root账户;system账户,普通管理员,客户端配置的时候会用到;scott账户,普通账户。
- 测试Oracle是否安装完成:在Dos窗口里输入命令sqlplus,用户名和口令输入system账户的用户名和口令,如下,Oracle服务端安装完成。
- Oracle配置,由于这里Oracle和Arcgis是安装在一台机器上,所以配置基本不用变更
- 查看Oracle的配置:服务名、网络地址。
- 如果要配置Oracle非本地的访问,可以查看参考【1】
1.1.2、安装Oracle客户端
Oracle客户端需要安装32位客户端,因为ArcGIS DeskTop是32位。
- 开始安装
- 警告不管
- 选择管理员
- 选择简体中文
- 自定义安装路径
- 完成
- 安装中,时间会比较长
- 客户端安装完成
客户端安装完成后,需要进行配置
- 进入配置界面
- 选择本地网络服务名配置
- 选择添加
- 填写服务名
- 选择TCP
- 填入主机名,选择端口号
- 选择
- 测试未成功,选择更改登录
- 填入system的用户名、密码
- 连接测试成功
接下来选择下一步直到结束,至此,Oracle客户端安装配置完成。
1.2、PostgreSQL(可选)
需要注意的是,PostgreSQL作为地理数据库的时候需要安装它的扩展postgis.
1.2.1、安装PostgreSQL
- 点击安装包
- 选择安装路径,数据存放路径
- 设置超级用户postgres的密码
- 选择端口
- postgresql语言环境(默认)
- 取消勾选使用Stack Builder
- 完成安装后window菜单会有pgAdminⅢ的数据库管理程序,打开后使用刚才的密码成功连接数据库
1.2.2、postgis安装
PostgreSQL安装完成后,安装postgis。
- 运行可安装文件
- 勾选Create spatial database(完成安装后自动创建空间数据库检验安装)
- 安装目标路径需要选择刚才postgresql的安装目录
- 输入刚才设置的密码
- 设置空间数据库模板名称(默认即可)
- 安装即将完成时弹出三个确认框:都选择是
- 打开pgAdmin发现多了一个模板
postgis安装完成。
2、ArcGIS相关软件安装
ArcGIS相关软件按照如下顺序安装。
2.1、ArcGIS Server安装
- 点击
- 下一步……
- 选择安装路径
- 选择Python27安装路径
- 配置ArcGis Server Account的账号、密码
- 不导出配置文件
- 安装
- 安装中,时间会比较长,再喝一杯茶
- 安装完成
- 选择许可文件
- 配置完许可后,会打开ArcGis管理页面,选择创建新站点
- 填入用户名和密码
- 选择根服务目录
- 登录ArcgisServer站点
- 在站点上已经有一个世界地图的服务
- 用当前机器的ip也可以访问服务站点
2.2、ArcGIS License Manager安装
许可证管理器。
- 点击
- 下一步……
- 自定义安装路径
- 安装中,时间也得一会儿
为了后面的破解ArcGis Desktop:
- 进入许可证服务管理界面
- 停止
- 打开破解工具的文件夹,点击注册器
- 手动输入Version,点击All
- 生成的文本全部复制
- 新建一个文本,命名为service.txt,将上面复制的文本粘贴进去
- 将将破解文件 ARCGIS.exe、service.txt复制到License Manager 安装路径bin目录下替换掉已有的这两个文件。
- 启动,重新读取许可
2.3、ArcGIS Desktop安装
- 点击可执行文件
- 下一步……
- 选择Complete
- 选择安装路径
- 选择Python27路径
- 不选
- 安装中,再喝一杯茶
- 安装完成后,进入如下页面,选择如下
- 在 License Manager看到如下,破解成功
- 点击下图所示图标,可以启动ArcMap
二、发布地图服务
1、创建空白地图
- 打开ArcMap后,创建空白地图。
- 保存地图
可以直接把shp格式的文件给拉进去,会创建新的图层。
- 到了这里,其实就已经可以发布地图服务了。
当然了,为了对数据进行管理,还是要进行接下来的操作。
2、创建文件夹连接
- 在CateLog里选择文件夹连接
- 创建和我们的测试数据文件夹的连接
3、创建与ArcGIS Server的连接
为了发布地图服务,得创建和Arcgis Server的连接
- 添加ArcGIS Server连接
- 选择管理ArcGIS Server
- 填入ArcGis Server站点的相关信息
- 连接上Arcgis Server,可以把Arcgis Server的地图直接拖进去
3、创建企业级地理数据库
可以从ArcGIS Desktop(Desktop Standard 或 Desktop Advanced)运行创建企业级地理数据库工具,或从 ArcGIS Desktop、ArcGIS Server 或 ArcGIS Engine 客户端运行 Python 脚本,来创建 sde 用户、方案、表空间和地理数据库。
这里通过创建企业级地理数据库工具来创建企业级空间数据库,该工具位于“数据管理”工具箱的“地理数据库管理”工具集中:
3.1、Oracle
- 打开创建企业级地理数据库工具,从数据库平台下拉列表中选择 Oracle。
需要填写连接到 Oracle 实例的相关信息:
♦ 如果已经将 Oracle 客户端配置为使用 TNS 网络别名,则在实例文本框中输入 Net 服务别名。
♦ 如果尚未配置 Oracle 客户端的网络别名,并且 Oracle 数据库和客户端均配置为使用 Easy Connect 字符串,则在实例文本框中提供 Oracle Easy Connect 字符串。
♦ 必须以数据库管理员身份连接到数据库才能创建地理数据库管理员和表空间。因此,数据库管理员文本框中应填入sys 用户名。
♦在数据库管理员密码文本框中输入 sys 用户的密码。
♦在地理数据库管理员文本框中输入 sde——如果数据库中不存在 sde 用户,则该工具会创建此用户并授予其创建地理数据库所需的权限。如果用户已存在,则会向其授予所需的权限。
♦在地理数据库管理员密码文本框中输入 sde 用户的密码——如果数据库中已存在 sde 用户,需要确保为现有用户输入正确的密码;此工具不会更改密码。如果创建的是 sde 用户,则输入的密码会在创建 sde 用户时使用。
♦为 sde 用户指定表空间(可选)——如果拥有可用于地理数据库资料档案库的预配置表空间,则可在表空间名称文本框中输入其名称。
♦如果想要此工具创建表空间,可在表空间名称文本框中输入有效的名称,该工具会在 Oracle 默认位置创建一个 400 MB 的表空间。如果不输入表空间名称,则会创建 SDE_TBS 表空间,并将其设置为 sde 用户的默认表空间。
♦ 要指定授权文件,使用授权 ArcGIS Server Enterprise 的授权文件。
- 创建中,得一会儿
- 创建完成
3.2、PostgreSQL
3.2.1、st_geometry.dll复制
- 在Desktop安装目录 --> DatabaseSupport文件夹 --> postgreSQL文件夹 --> 9.2文件夹 --> Window64文件夹中找到st_geometry.dll文件。
- 将st_geometry.dll文件复制到postgresql安装目录 --> lib文件夹中。
3.2.2、5个用于连接的dll文件复制
由于desktop是32位,postgresql是64位,我们需要将:
- libeay32.dll
- libiconv-2.dll
- libintl.dll
- ibpd.dll
- ssleay.dll
5个文件复制到Desktop安装目录 --> bin文件夹中,复制时选择全部替换。
3.2.3、创建postgresql数据库
- 在pgAdmin中新建数据库名称为sample,所有者为postgres,模板为postgis_20
- 创建模式(从ArcGIS Catalog连接postgresql数据库导入数据时,数据库中必须有postgres模式)。执行如下语句并显示成功:
create schema postgres;
OK,PostgreSQL的相关配置完成了,可以创建创建企业级地理数据库。
3.2.4、创建企业级地理数据库(postgresql)
- 数据库平台选择PostgreSQL。
- 实例填入localhost(本机)。
- 数据库选择刚才创建的sample数据库。
- 数据库管理员为超级用户postgres。
- 数据库管理员密码为自己设置的密码
- 地理数据库管理员密码自己设定
- 授权文件选择arcgis server的授权文件。
- 创建成功:
4、创建数据库连接
企业级地理数据库创建完成之后,就可以连接了。
4.1、Oracle
- 数据库连接中新建连接
- 输入上一步中的数据库相关配置
- 连接成功之后,可以看到数据库连接
4.2、PostgreSQL
数据库平台选择PostgreSQL
实例为localhost
数据库身份验证:用户名为超级用户。密码为自己设置的密码
数据库选择刚才创建的sample数据库
6、地理数据库导入数据
地理数据库连接之后,可以为地理数据库导入数据了。这里有两种导入的方式。
6.1、直接导入
- 数据库连接,右键,import,可以选择导入单个或多个
- 导入单个
- 数据成功导入地理数据库,可以将导进去的数据直接拖出来
6.2、通过文件空间数据库导入
上面的方式比较快捷,但是导入失败的概率相对要大一些,所以推荐用下面的方式。
- 在文件夹连接,右键,创建文件空间数据库
- 新建的文件空间数据库导入数据
- 导入成功
- 可以直接拖拽进地理空间数据库
- 直接拖入可能会因为空间坐标系不一致的原因失败,还可以在空间数据库上直接import
7、发布地图服务
数据已经成功导入企业级地理数据库,接下里可以发布地图服务了。
- 将数据拖进去
- 可以对图层进行编辑,分类等操作
- 发布地图服务
- 选择之前创建的和Arcgis Server的连接
- 选择服务目录,这里新建了一个目录
- 发布之前可以先分析一下
- 发布
8、查看发布的地图服务
成功发布的服务可以在Arc Map里预览,这里从Arcgis Server站点查看
- 登录站点,可以找到我们发布的地图服务
- 在功能里可以看到地图服务提供给第三方调用的接口
- 点击进去,在这里可以选择通过ArcGis JavaScript的方式预览
三、遇到的问题
1、ArcGIS直连Oracle失败
Executing: CreateEnterpriseGeodatabase Oracle localhost/orcl # DATABASE_AUTH sys ***** SDE_SCHEMA sde ***** # D:\SoftwareFile\易智瑞版\arcgisserver10.2.ecp Start Time: Thu Apr 02 18:07:32 2020 Cannot connect to database because the database client software failed to load. Be sure the database client software is installed and configured correctly. Failed to execute (CreateEnterpriseGeodatabase). Failed at Thu Apr 02 18:07:32 2020 (Elapsed Time: 0.01 seconds)
这个问题通常是这些原因导致的:
- 在ArcGIS for Desktop计算机上未安装Oracle客户端
- 尝试从ArcMap或ArcCatalog(这是32位应用程序)连接到Oracle时,仅安装64位客户端
- 尝试从ArcGIS for Server或ArcGIS Pro(64位应用程序)连接到Oracle时,仅安装32位客户端。
解决办法:
- 要解决此问题,请确保已安装Oracle客户端,并且客户端的位级别与连接的应用程序的位级别匹配。
- 如果32位客户端和64位客户端都安装在同一台计算机上,则必须在Windows操作系统的PATH环境变量中首先列出64位客户端。
我的错误原因是只安装了64位的客户端,再装一个32位的客户端,把Path中64位的变量列在前面。
然后,重启电脑,问题解决。
2、PostgreSQL作为数据库没有数据表
PostgreSQL作为企业级地理数据库,刚连接的时候没有数据
正常应该是这种:
另外,PostgreSQL导入数据时,偶尔会失败,原因还未排查出来。
End!