@
此前從未接觸過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!
ps:本人是一個Gis純小白,文中有錯漏之處,歡迎指出。希望能夠相互學習,共同進步!
參考:
【1】:Oracle 11g 服務端、客戶端的安裝配置
【2】:arcgis鏈接oracle發布地圖服務
【3】:Oracle 教程
【4】:在 Oracle 中創建地理數據庫
【5】:ArcSDE直連總結
【6】:Error: Client software failed to load. Be sure the database client software is installed and configured correctly
【7】:ArcGIS server 10.2安裝教程詳細版
【8】:Arcgis License的安裝及破解
【9】:ArcGIS Desktop 10.2 安裝與破解圖文教程
【10】:連接 arcMap、arcGIS Server 和 postgreSQL
【11】:arcgis10.2與postgresql9.2.2從安裝到發布服務教程